EMS, ESB и MOM, JMS - PullRequest
       50

EMS, ESB и MOM, JMS

18 голосов
/ 04 июля 2011

Какова связь и различия между следующими терминами?

  • Корпоративная система обмена сообщениями (EMS)
  • Enterprise Service Bus (ESB)
  • Промежуточное ПО, ориентированное на сообщения (MOM)
  • Служба сообщений Java (JMS)

Ответы [ 3 ]

18 голосов
/ 16 января 2015

Хороший вопрос - принципиальное различие между служебной шиной и системой обмена сообщениями заключается в соглашении о данных в вашей системе обмена сообщениями. Система обмена сообщениями обычно позволяет вам отправлять все: двоичные двоичные объекты, XML, списки через запятую и т. Д. Таким образом, приложение A может отправлять разделенную запятыми строку в приложение B, а B отправляет некоторый XML-файл в приложение C, а C отправляет другой XML-файл в приложение. D. Это обмен сообщениями, но не служебная шина. Можно сказать, что система обмена сообщениями «нетипизирована» (динамическая структура), а ESB «типизирована» (статическая структура).

В «служебной шине» у вас есть общее определение данных для всех приложений и адаптеров на этой шине (может быть XML с общим XSD). Общие объекты данных (CDO). Все, что соединяется, ДОЛЖНО отправлять информацию, соответствующую этому определению данных. ESB должен поддерживать загрузку, совместное использование и управление версиями этого общего определения данных. Большим преимуществом является то, что вы можете подключить компонент (например, Message Broker), и он делает это без необходимости знать, в какое приложение отправлены эти данные и куда эти данные собираются.

Компромисс между сообщениями и ESB похож на другие нетипизированные / типизированные варианты: REST против SOAP, непроверенный XML против XML с XSD, Groovy против Java, ... Некоторые люди получат удовольствие от дополнительной структуры (хорошо выглядит на бумаге - менеджерам это нравится) - некоторые возненавидят ее (вещи ломаются, когда меняются версии, для небольшого добавления нужно обновить все - хакерам это не очень нравится ;-)

Возвращаясь к вашим вопросам (переупорядочено)

  • Message Oriented Middleware (MOM): библиотеки программного обеспечения для различных языков с брокером (или нет) для обмена «сообщениями» между приложениями. На шаг впереди от связи TCP / IP. «Сообщения» - это структурированные объекты или текстовые строки или двоичные данные. Обычно у вас есть дополнительная надежность по TCP / IP или UDP. Некоторые примеры: TIBCO RV и EMS, IBM MQ, Apache ActiveMQ, ZeroMQ, ...

  • Java Messaging Service (JMS): определение общего API для MOM - люди жаловались, что когда ваше приложение переключается с MOM 'X' на MOM 'Y', вам нужно переписать код сообщения. Если вы кодируете против JMS, вы можете просто переключать библиотеки, и то же приложение, которое использовалось для работы с TIBCO EMS, неожиданно работает с ActiveMQ (или наоборот)

  • Корпоративная система обмена сообщениями (EMS): внедрение JMS компанией TIBCO (название продукта: TIBCO EMS)

  • Enterprise Service Bus (ESB): ESB использует промежуточное ПО, ориентированное на сообщения, для интеграции приложений, баз данных, брокеров и т. Д. ESB - это MOM с дополнительной структурой данных и управлением определением структуры. При подключении нового компонента к ESB вы можете ожидать большей «совместимости» из коробки, чем при подключении его к MOM. В ESB существуют более высокие стандарты в отношении того, что компонент должен делать для подключения. Я думаю, что ESB TIBCO называется ActiveMatrix.

5 голосов
/ 30 июля 2011

Хотя в ответе @ ag112 «EMS» расшифровывается как «система обмена корпоративными сообщениями», аббревиатура несколько двусмысленна и, вероятно, наиболее распространенное расширение «EMS» будет относиться к TIBCO Enterprise Messaging. Сервис , который является частной платформой TIBCO, поддерживающей Java Messaging Service (JMS) Спецификация , а также добавляет некоторые проприетарные расширения. Enterprise Service Bus (ESB) - это уровень абстракции программного промежуточного программного обеспечения, который объединяет программные компоненты в больших системах через управляемый событиями и обычно открытый на основе стандартов корпоративный «механизм обмена сообщениями». Эти конструкции промежуточного программного обеспечения, ориентированного на сообщения (MOM) , часто используются при интеграции программного обеспечения и, вероятно, будут встречаться в реализациях Сервис-ориентированной архитектуры (SOA) .

5 голосов
/ 05 июля 2011

EMS: любое решение, которое позволяет нескольким приложениям использовать протокол, ориентированный на сообщения, а не протокол RPC. Таким образом, в основном взаимодействующие приложения больше связаны с данными сообщений, чем с транспортом.

МОМ: Я снова считаю, что это может бытьрассматривается как EMS.

ESB: Это один из способов разработки системы обмена сообщениями предприятия.Другой способ - это модель со спицами.В основном типичная система обмена сообщениями включает в себя преобразование, посредничество, аудит, маршрутизацию, безопасность и т. Д. ESB vs-концентратор определяет, какой компонент заботится о какой части.

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

...