Каковы плюсы и минусы веб-сервисов и RMI в среде только для Java? - PullRequest
11 голосов
/ 23 сентября 2008

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

Ответы [ 5 ]

9 голосов
/ 23 сентября 2008

Я бы попытался думать об этом так:

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

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

6 голосов
/ 23 сентября 2008

Я бы выбрал WS.

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

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

2 голосов
/ 23 сентября 2008

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

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

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

1 голос
/ 23 сентября 2008

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

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

1 голос
/ 23 сентября 2008

мой выбор:

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

двоичная сериализация (например, hessian from jetty) - плюсы: та же производительность, что и при сериализации java, и работает между различными версиями jvm

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

...