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