Ответ 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.