В любом случае, это никогда не заканчивается спором. Вот мое скромное мнение:
- Веб-сервисы допускают слабосвязанную архитектуру. С RMI вы должны скомпилировать все, даже если было наименьшее изменение (из-за UUID серийного класса и т. Д.).
- WS позволяет легче сосуществовать с другими корпоративными компонентами (ESB, SSO, Identity Management, балансировкой нагрузки, фильтрами безопасности, сертификатами безопасности), поскольку HTTP является базовым сетевым протоколом.
- Отражение в RMI (и в EJB) кажется более дорогим, чем сам протокол HTTP.
Если вы считаете, что EJB более подходит для среды сервера приложений и проще в сравнении с WS и CORBA, согласно вашей статье (EJB поддерживает управление транзакциями, управление компонентами; WS имеет расширения WS + (безопасность, транзакции)):
- EJB медленнее, чем WS, согласно статье: Удаленный EJB в 3 раза медленнее, чем WebService в 7.1
- при компиляции / сборке EJB-компонентов нам приходилось использовать одну и ту же версию сервера приложений, включая исправления для dev и production, чтобы избежать сомнительных ошибок во время выполнения продукции (это выглядит просто - рабочая группа (центр обработки данных) не всегда говорит, какой патч они имеют, когда мы делаем исправления для приложения, мы всегда должны повторно запрашивать точную версию сервера).
- Частичные исправления приложения не так просты: если EJB перестраивается из-за небольшого исправления, клиентские jar должны быть перестроены, поэтому приложения, использующие клиентские jar, требуют повторного развертывания.
(это были проблемы из моего опыта, может быть, другим людям повезло больше)
Я бы пришел к выводу, что веб-сервисы более гибкие, используют меньше отражений и, возможно, быстрее, если их тщательно продумать. Если в результате в контроллере MVC используется RESTful, ESB может помочь как с преобразованием предложений (меньше кода, просто преобразование), так и с внедрением защиты непосредственно в заголовки HTTP (например, ivheader, ivgroup - если используется веб-печать ibm, Tivoli Access Manager). Использование SAML XACML возможно только при использовании WS, так как утверждения работают с XML. Поэтому для распределенных и дислоцированных корпоративных приложений WS более гибок из-за вышеупомянутого.
В статье, на которую вы ссылаетесь, говорится, что у WS нет транзакций, а есть только предложения. Статья неправильная или слишком старая. См. OASIS WSAT 1.0 и WSAT 2.0 . Microsoft, JBoss, Oracle и некоторые другие поддерживают технологию "из коробки" на своих серверах приложений. Apache Metro, кажется, поддерживает, это было хорошо (пожалуйста, проверьте).