ИЗМЕНЕНО после исправления от Эриксона:
JMS требует, чтобы у вас был поставщик JMS, класс Java, который реализует интерфейс MessageListener для обработки сообщений, и клиент, который знает, как подключиться к очереди JMS. JMS означает асинхронную обработку - клиент отправляет сообщение и не обязательно ожидает ответа. JMS можно использовать в виде двухточечной очереди или публиковать / подписывать.
«Сервис» - это гибкий термин. Я думаю о сервисе как о компоненте, который работает в сети и объявляет о контракте: «Если вы отправите мне X, я выполню эту задачу за вас и верну Y».
Распределенные компоненты существуют уже давно. Каждый из них общался с использованием разных протоколов (например, COM, Corba, RMI и т. Д.) И по-разному раскрывал свой контракт.
Веб-сервисы являются последним трендом в распределенных сервисах. Они используют HTTP в качестве протокола и могут взаимодействовать с любым клиентом, который может подключиться через TCP / IP и сделать запрос HTTP.
Вы можете использовать стили SOAP, RPC-XML, REST или "сначала контракт", но основная идея распределенного компонента, использующего HTTP в качестве протокола, остается.
Если вы принимаете все это, веб-службы обычно представляют собой синхронные вызовы. Их не нужно раздувать, но вы можете писать плохие компоненты на любом стиле или языке.
Вы можете начать проектирование любого распределенного компонента, сначала разработав запрос и ответы. Учитывая это, вы выбираете JMS или веб-службы в зависимости от того, какого типа клиентов вы хотите иметь, и является ли связь синхронной или асинхронной.