В чем разница между JMS / JAXM / JAX RPC / веб-службой / JAX-WS? - PullRequest
5 голосов
/ 05 декабря 2010

Я пытаюсь изучить различные веб-сервисы, чтобы понять, для чего они используются.Но я запутался, так как эти термины часто совпадают.Буду признателен, если кто-нибудь скажет мне кратко, в чем различия между этими терминологиями.Я сталкивался с некоторыми источниками, такими как http://java.sun.com/developer/Books/j2ee/jws/ch07.pdf,, однако я не в состоянии их четко различить.

1 Ответ

6 голосов
/ 05 декабря 2010

Веб-служба: соответствующая стандартам вызываемая служба, может быть написана на Java, может быть написана с использованием другой технологии, например .NET. Ключевым моментом является то, что существует стандартный язык WSDL, который описывает сервис. WSDL содержит информацию о транспорте, протоколе, где работает служба, доступных операциях и полезных нагрузках, текущих и обратно.

Большинство веб-служб, с которыми вы столкнетесь, используют сообщения SOAP (определенный формат XML) по протоколу HTTP, и поэтому WSDL будет содержать URL-адрес, где вызывать службу. В более общем случае возможны другие форматы сообщений и протоколы - мы вернемся к этому моменту.

Предположим, у вас есть WSDL для службы, которую вы хотите вызывать из Java-программы, тогда в принципе вы можете написать Java для форматирования подходящей полезной нагрузки XML и отправки сообщения по HTTP-соединению. Совершенно выполнимый, но очень утомительный, почти весь код является стандартным кодом, который может быть сгенерирован из WSDL.

Точно так же, если вы хотите создать веб-сервис на Java, вы можете начать с написания WSDL, но опять-таки есть много стандартного стандартного кода для чтения HTTP, анализа XML и т. Д. Так что в обоих случаях вы получаете выгоду от стандартной Java API для выполнения всей этой работы. Было несколько таких API, JAX / RPC и JAX / WS - два таких, и JAX / WS является более новым и более простым в использовании.

Альтернативной технологией интеграции является использование обмена сообщениями, есть много поставщиков, которые предоставляют продукты очереди сообщений, поэтому вполне возможно отправлять сообщения из (скажем) Java в (скажем) C ++, вам просто нужно согласовать формат сообщения ( нет стандартного WSDL, чтобы рассказать вам).

JMS - это API-интерфейс программирования Java, который обеспечивает абстракцию о продуктах обмена сообщениями конкретных поставщиков. Работая в Java, JMS обеспечивает переносимость между продуктами обмена сообщениями. Стандарт Java EE требует, чтобы поставщики Java EE App Server обеспечили инфраструктуру обмена сообщениями - я считаю, что по мере роста бизнес-систем им почти всегда требуются некоторые средства асинхронного обмена сообщениями.

Существуют различные возможности для применения WSDL-подобных подходов к обмену сообщениями. Например, можно написать веб-сервис, используя SOAP / JMS, а не SOAP / HTTP. JAXM - это новый API в этой области. Честно говоря, мне неясно, как они связаны с SOAP / JMS и такими стандартами, как WS-ReliableMessaging.

...