これは基本的にシステムを設計するための概念的な方法です。ソフトウェア会社はシステムに「ESB」ステッカーを貼り付けることで売り上げを伸ばそうとします。
ESBは基本的に、データモデルと構造定義管理が追加されたMOM(メッセージ指向ミドルウェア)です。そのバス上のすべてのアプリケーションとアダプターに共通のデータ定義があります(共有XSDを使用したXMLにすることもできます)。接続するものはすべて、このデータ定義に準拠した情報を送信する必要があります。ESBは、この共通データ定義のロード、共有、バージョン管理をサポートしています。ESBに新しいコンポーネントを接続する場合、MOMに接続する場合よりも、箱から出してより多くの「互換性」を期待できます。そのバス上の各コンポーネントは、概念的には「リソース」として扱われるため、送信側と受信側を分離するために導入された追加の抽象化があります。
例:標準のメッセージ指向ミドルウェアでアプリケーションAをアプリケーションBに接続したいとしましょう。JMSを取り上げましょう。アプリケーションBで作業している同僚と話し、トピック、メッセージタイプ、フィールドに同意して送信します(疑似コード):sendJms( "TRADE.MSFT"、{MapMessage trader = "pete" price = 101.4 vol = 100})
サービス指向アーキテクチャーで同じことを行う場合は、
- 追加のソフトウェアをインストールする
- 多くの新しい概念を学ぶ
- ESBの管理GUIで新しいJavaコンポーネントを定義する
- ESBによって制御されるいくつかのインターフェースを実装する
- sendJms(getDestination()、{MapMessage trader = "pete" price = 101.4 vol = 100})-宛先がESBから挿入されることに注意してください
初めてそれはおそらく少し苦痛ですが、EJBに慣れることができるのと同じように、それに慣れることができると思います;-)
MOMシステムは「型なし」(動的構造)であり、ESBは「型付き」(静的構造)と言えます。生のメッセージングとESBのトレードオフは、他の型なし/型付きの選択と似ています。
- RESTとSOAP
- 未検証のXMLとXSDで検証されたXML
- Groovy対Java
- インタプリタ言語とコンパイル済み言語
小規模なプロジェクトの場合は機能をすばやくハッシュ化するのがいいですが(Groovyコードなど)、大規模なプロジェクトの場合はデバッガ(Javaなど)を用意し、問題が発生したときに事前に警告し、コミットする前に標準を用意することをお勧めします。事業。
したがって、未検証の変更をチェックインしてシステムを壊す人が多すぎてプロジェクトが影響を受ける場合は、より多くの構造(MOMではなくESB)に移動してください。プロジェクトが時間内に十分な処理を行わないことに苦しんでいる場合は、より単純で型なしのソリューションを選択してください。それが両方の場合-コンサルタントに連絡してください(冗談です;-)