Подтвердить что ты не робот

EMS, ESB и MOM, JMS

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

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

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

MOM: Я верю, что его можно считать похожим на EMS.

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

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

Ответ 3

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