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