サービスのアーキテクチャ
このセクションでは、Service Broker を使用するアプリケーションの基本的なデザインを指定するデータベース オブジェクトについて説明します。
Service Broker アプリケーションでは、デザイン時に次のオブジェクトを指定します。
メッセージ タイプ — アプリケーション間で交換するメッセージの名前を定義します。必要に応じてメッセージの検証を指定します。
コントラクト— 指定したメッセージ交換におけるメッセージの方向と型を指定します。
キュー— メッセージを保存します。この保存メカニズムにより、サービス間での非同期通信が可能になります。Service Broker キューでは、同じメッセージ交換グループ内のメッセージの自動ロックなど、その他の利点も提供されます。
サービス— メッセージ交換のアクセス可能なエンドポイントです。Service Broker メッセージは、あるサービスから別のサービスに送信されます。サービスは、メッセージを保持するキュー、およびこのサービスが対象となるコントラクトを指定します。コントラクトは適切に定義されたメッセージ型のセットをサービスに提供します。
Service Broker アプリケーションは、前の一覧にある SQL Server オブジェクトを使用してメッセージ交換を実行します。Service Broker は、SQL Server の Transact-SQL ステートメントを実行できるすべてのプログラムで使用できます。アプリケーションは、Transact-SQL または CLR 準拠の言語で記述したストアド プロシージャ、または SQL Server のインスタンスに接続する外部プログラムとなります。
次の図は、Service Broker のサービスを示しています。
図に示すように、ProcessExpenses コントラクトは、SubmitExpense、AcceptDenyExpense、および ReimbursementIssued の 3 つのメッセージ型を指定します。このコントラクトは、費用を返済するタスクを実行するメッセージ交換に必要なメッセージ型を一覧表示します。すべての ProcessExpense サービスとその他の任意のサービスとの間で行われるメッセージ交換は、ProcessExpenses コントラクトによって制御されます。ProcessExpense サービスは、着信メッセージおよび送信メッセージを ExpenseQueue キューに保存します。ExpenseProcessing ストアド プロシージャは、このキューから受信したメッセージを処理し、返信が必要な場合は適切なブローカ宛てにルーティングするようメッセージをキューに戻します。
内容