次の用語の関係と違いは何ですか?
- エンタープライズ メッセージング システム (EMS)
- エンタープライズ サービス バス (ESB)
- メッセージ指向ミドルウェア (MOM)
- Java メッセージング サービス (JMS)
良い質問です。サービス バスとメッセージング システムの決定的な違いは、メッセージング システムのデータ規則です。通常、メッセージング システムでは、バイナリ BLOB、XML、コンマ区切りリストなど、すべてを送信できます。したがって、アプリケーション A はコンマ区切り文字列をアプリケーション B に送信し、B は XML をアプリケーション C に送信し、C は他の XML をアプリに送信します。 D. これはメッセージングですが、「サービス バス」ではありません。メッセージング システムは「型指定なし」(動的構造) であるのに対し、ESB は「型指定済み」(静的構造) であると言えます。
「サービス バス」では、そのバス上のすべてのアプリケーションとアダプターに共通のデータ定義があります (共有 XSD を使用した XML の場合もあります)。共通データ オブジェクト (CDO)。接続するものはすべて、このデータ定義に準拠した情報を送信する必要があります。ESB は、この共通データ定義のロード、共有、バージョン管理をサポートする必要があります。大きな利点は、コンポーネント (メッセージ ブローカなど) を接続できることです。これは、どのアプリケーションがこのデータを送信し、このデータがどこに行くのかを知らなくても実行できます。
Messaging と ESB のトレードオフは、他の型なし/型付きの選択肢と似ています。REST と SOAP、検証されていない XML と XSD を使用した XML、Groovy と Java など、追加の構造を楽しむ人もいます (紙 - マネージャーはそれが好きです) - 嫌う人もいます (バージョンが変わると何かが壊れてしまいます。少し追加するためにすべてを更新する必要があります - ハッカーはあまり好きではありません ;-)
質問に戻る(並べ替え)
メッセージ指向ミドルウェア (MOM): アプリケーション間で「メッセージ」をやり取りするためのブローカー (またはブローカーなし) を備えたさまざまな言語のソフトウェア ライブラリ。TCP/IP通信からワンステップアップ。「メッセージ」は、構造化されたオブジェクト、テキスト文字列、またはバイナリ データです。通常、TCP/IP または UDP を介した信頼性が向上します。いくつかの例: TIBCO RV および EMS、IBM MQ、Apache ActiveMQ、ZeroMQ、...
Java Messaging Service (JMS): MOM の共通 API の定義-アプリケーションが MOM 'X' から MOM 'Y' に切り替わるとき、メッセージング コードを書き直す必要があると不満を漏らす人がいます。JMS に対してコーディングする場合は、ライブラリを切り替えるだけで、TIBCO EMS で動作していた同じアプリケーションが突然 ActiveMQ で動作します (またはその逆)。
Enterprise Messaging System (EMS): TIBCO による JMS の実装 (製品名: TIBCO EMS)
エンタープライズ サービス バス (ESB): ESBは、メッセージ指向のミドルウェアを使用して、アプリケーション、データベース、ブローカーなどを統合します。ESB は、データ構造と構造定義管理が追加された MOM です。新しいコンポーネントを ESB に接続する場合、MOM に接続する場合よりもすぐに使用できる「互換性」が期待できます。ESB では、接続のためにコンポーネントが何をしなければならないかについて、より高い基準があります。TIBCO の ESB は ActiveMatrix と呼ばれていると思います。
EMS: RPC プロトコルとは対照的に、メッセージ指向のプロトコルを介して複数のアプリケーションを許可するソリューション。したがって、基本的に相互作用するアプリケーションは、トランスポートではなくメッセージ データにバインドされます。
MOM: EMS と同じと考えてよいと思います。
ESB: エンタープライズ メッセージング システムを設計する 1 つの方法です。もう 1 つの方法は、ハブ アンド スポーク モデルです。基本的に、典型的なメッセージング システムには、変換、仲介、監査、ルーティング、およびセキュリティなどが含まれます。ESB とハブ スポークでは、どのコンポーネントがどの部分を処理するかを指定します。
JMS: Java プラットフォームによって提供される統一 API であり、開発者は JMS API を直接操作できるため、基礎となるメッセージング フレームワークが何であるかを気にする必要はありません。メッセージングの実装は、JMS API で機能するために JMS に準拠している必要があります。
@ag112 の回答では「EMS」が「エンタープライズ メッセージング システム」を意味するように拡張されていますが、頭字語はややあいまいであり、おそらく最も一般的な「EMS」の拡張は、 Javaをサポートする TIBCO の特定の専用プラットフォームであるTIBCO Enterprise Messaging Serviceを指すでしょう。 Messaging Service (JMS) 仕様であり、いくつかの独自の拡張機能も追加されています。エンタープライズ サービス バス (ESB)は、イベント駆動型で通常はオープンな標準ベースのエンタープライズ "メッセージング エンジン" を介してソフトウェア コンポーネントを大規模システムに統合するソフトウェア ミドルウェア抽象化レイヤーです。これらの「メッセージ指向ミドルウェア (MOM)」サービス指向アーキテクチャ (SOA)。