Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Я бы выбрал WS.

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

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

Ответ 3

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

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

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

Ответ 4

мои варианты:

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

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

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

Ответ 5

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

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