2013-02-18 3 views
0

Если сервер и клиент - только Java, будет ли RMI более эффективным (пропускная способность и латентность) по сравнению с SOAP, реализованным Axis2? Я знаю, что RMI потеряла популярность в последние годы, но это не значит, что ее нельзя использовать.Является ли Java RMI хорошей альтернативой Axis2 SOAP?

А как насчет XML-RPC?

+1

RMI основан на Java Serialization, поэтому он должен быть достаточно эффективным. –

+0

Как насчет REST? [Веб-службы мертвы - долго жить REST] (http://www.infoworld.com/d/application-development/web-services-are-dead-long-live-rest-211395) –

+1

RMI будет быстрее, но в нем отсутствуют определенные функции, такие как безопасность на уровне сервера, однако это можно упускать из виду, если используются две внутренние корпоративные системы. Другой проблемой может быть функция балансировки займов. У Webservices есть свои накладные расходы, такие как Marshalling/Unmarshalling, но учитывая, что теперь сервер дней более мощный, это не должно быть проблемой. В предвидении веб-сервисы делают ваши предприятия более ориентированными на SOA. Таким образом, это поможет улучшить дизайн, если вам нужно расширить свой сервис для других сторон. – user1428716

ответ

3

RMI имеет некоторые интересные особенности, и достаточно быстро, но также имеет некоторые проблемы:

  1. Вы должны убедиться, что все вы сериализацию орудия Сериализуемый.
  2. Вы должны убедиться, что сервер и клиент имеют точно такую ​​же версию всех классов Serializable и развернуты точно в одно и то же время, и каждый класс, который вы сериализуете (включая поля, хранящиеся в сериализуемых объектах), использует serialVersionUID соответственно. В противном случае вы окажетесь в мире боли (читай: «несоответствие серийной версии»).
  3. Вы должны убедиться, что классы, которые вы сериализуете, не связаны с ссылками на объекты, которые в конечном итоге содержат ссылки на большие объекты, иначе вы будете очень удивлены размерам пакетов, проходящих по проводу.
  4. Если вы когда-либо решаете обратиться к сервису только с Java, вам придется написать еще один уровень удаленного доступа.
  5. Нет №5.

На практике я почти всегда рекомендую услугу REST в эти дни. Так легко создавать небольшие объекты Java и использовать Gson или Jackson или что-то, чтобы маршалировать данные взад и вперед, что преимущества RMI в сравнении с ними выглядят незначительно.

+0

(2) неверен. См. Главу [Versioning of Serialized Objects] (http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html) в спецификации сериализации объектов. Если (2) было правильным, главы не существовало бы. – EJP

+0

Очень хороший ответ, tnx! Если (2) действительно неверно, и, конечно, я могу хранить все внутри Java, тогда (3) не является проблемой вообще. Для создания WebService мы должны управлять передачей данных в конце концов, и одна и та же проблема может возникнуть с любым другим решением, которое автоматически принимает объекты и бросает их, не требуя явного кода преобразования. – Hikari

+0

Я прочитаю приведенный выше код и подумаю о REST и JSON, возможно, это может быть промежуточное решение между RMI и SOAP. – Hikari

Смежные вопросы