Каковы плюсы и минусы веб-служб и RMI в среде только Java?

StackOverflow https://stackoverflow.com/questions/120791

Вопрос

При разработке распределенных приложений, написанных на Java одной и той же компанией, вы бы выбрали Web Services или RMI?Каковы плюсы и минусы с точки зрения производительности, слабой связи, простоты использования...?Кто-нибудь выберет WS?Можете ли вы построить сервис-ориентированную архитектуру с помощью RMI?

Это было полезно?

Решение

Я бы попробовал подумать об этом так:

Собираетесь ли вы использовать независимые службы, работающие друг под другом, и когда-нибудь в будущем к этим службам смогут получить доступ не-Java-приложения?Тогда перейдите к веб-сервисам.

Вы просто хотите распределить части приложения (заметьте в единственном числе) по нескольким серверам?Тогда выберите RMI, и вам не придется покидать вселенную Java, чтобы все работало вместе и тесно связано.

Другие советы

Я бы выбрал ВС.

  • Маловероятно, что WS/RMI станет вашим узким местом.
  • Зачем закрывать дверь для других возможных технологий в будущем?
  • У RMI могут возникнуть проблемы, если версии классов на клиенте/сервере не синхронизируются.

И...Я бы, скорее всего, выбрал сервисы REST.

Если вам это не понадобится (взаимодействие с не-Java), а вам это, вероятно, не понадобится, RMI будет лучше;меньше кода, меньше конфигурации, меньше накладных расходов на полосу пропускания.

Если вы боитесь, что вам это понадобится, можно использовать EJB3;он использует RMI, его очень легко настроить и развернуть, но он также позволяет легко превращать ваши вызовы в веб-службы, если они вам нужны.

Что бы ты ни делал, делай нет создать свою собственную вещь;придерживайтесь стандарта.

мой выбор:

стандартная сериализация Java – плюсы:imho предлагает максимальную производительность, прост в реализации (я использую Spring, чтобы сделать локальный интерфейс удаленным);минусы:сериализация не работает между разными версиями JVM

двоичная сериализация (например, гессиан от пристани) – плюсы:та же производительность, что и при сериализации Java, и работает между разными версиями JVM.

ВС:только в том случае, если есть необходимость во взаимодействии между различными платформами java + .net, иначе это слишком тяжеловесно.

RMI — отличный транспорт для быстрой разработки, но я бы советовал не использовать его в производственной среде.Проблема совместимости сериализации может затруднить ситуацию, поэтому вам придется очень тщательно координировать свои развертывания.

Да, веб-сервисы неэффективны, но только из-за аппаратного обеспечения.В качестве альтернативы используйте простой и легкий XML-over-HTTP вместо полноценного SOAP/WSDL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top