Сравните Java RPC с веб-сервисами - PullRequest
7 голосов
/ 29 августа 2009

Как вы сравниваете Java RPC с веб-сервисами Java. У меня небольшой опыт работы с веб-сервисами. Теперь мне нужно знать, как RPC сравнивается с веб-сервисами. Как работает RPC?

Добавление: Когда мы выберем один из вариантов?

Ответы [ 4 ]

7 голосов
/ 29 августа 2009

Как говорит Дафф, сама Java RMI действительно подходит только для связи Java-to_Java. С точки зрения простоты разработки в наши дни степень кодирования с точки зрения поставщика услуг очень похожа.

Однако, помимо проблем с производительностью, когда разрыв между WebServices и RMI довольно изменчив (для некоторых размеров сообщений может быть незначительная разница), есть еще один аспект, который необходимо учитывать: устойчивость.

Как правило, RMI легко настраивается, когда один клиент обращается к одному серверу, и вы не возражаете против доступности клиента, подключенного к этому серверу. Сервер не работает, клиент не работает, такова жизнь.

В случае веб-службы вы можете довольно легко развернуть свою службу на кластере серверов и, учитывая, что вы вызываете веб-службу по HTTP, вы можете легко использовать все обычные методы сетевой маршрутизации и распыления, используемые в крупномасштабной сети места. Никакого специального кодирования не требуется на сервере или клиенте.

Теперь вы можете получить тот же уровень устойчивости с RMI, но для этого требуется немного лучшая инфраструктура предоставления услуг, и именно здесь вступает в игру модель программирования Java EE EJB (или платформы, такие как Spring). EJB использует RMI поверх IIOP, протокола, который обеспечивает отказоустойчивый вызов к экземплярам сервера, прозрачно реагируя на сбои сервера. [Он делает гораздо больше, например, безопасность и транзакции, но также и веб-службы. Интересно, но не часть этой дискуссии.]

Итог: для обеспечения качества обслуживания производства я обычно начинаю с создания объекта обслуживания. Я использую Java EE EJB 3, другие используют Spring. Вы можете представить этот сервисный объект как веб-сервис или как RMI / IIOP с некоторой очень простой конфигурацией / аннотацией. Это очень мало усилий, чтобы выбрать один или оба. Мой мир случается с майором во взаимодействии, поэтому я склонен выставлять Web-сервисы. Если у вас есть только Java для рассмотрения, это может дать некоторое повышение производительности при использовании RMI / IIOP, но это не гарантируется, вам необходимо измерить производительность, чтобы быть уверенным.

1 голос
/ 29 августа 2009

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

С другой стороны, веб-сервисы используют (в общем) общий формат, такой как XML или JSON, который может быть запрошен и прочитан любым другим удаленным приложением. Затраты больше (выполнение запроса http и сериализация / десериализация данных), но клиент, использующий веб-сервис, не заботится о том, как веб-сервис генерирует эти данные, и не полагается на определенный язык программирования, пока он находится в указанный формат.

То, какая технология вы хотите использовать, зависит от того, могут ли клиенты, отличные от Java, использовать ваш сервис.

0 голосов
/ 15 апреля 2013

RPC используется только тогда, когда на обоих концах используется одна и та же платформа EJB используется только для Java.

Q: Что, если какое-либо приложение, отличное от Java, хочет получить доступ к моей Службе?

A: То, где представлены веб-службы Веб-сервисы также могут быть не Java А также используется для синхронной и асинхронной связи

0 голосов
/ 01 сентября 2009

Если вы смотрите на веб-сервисы RPC vs Document, этот вопрос и ответы могут быть теми, что вы ищете.

http://www.coderanch.com/t/443021/Web-Services-Certification-SCDJWS/certification/Difference-between-RPC-Document-web#1971102

Я мог бы объяснить это, но когда у кого-то есть обсуждение, с примерами кода, чтобы посмотреть, мой ответ бледнеет в сравнении.

Кроме того, я не уверен, о чем вы спрашиваете, думаю, здесь может возникнуть проблема с терминологией.

...