サービスのアーキテクチャ

このセクションでは、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 のサービスを示しています。

Service Broker オブジェクトの関係

図に示すように、ProcessExpenses コントラクトは、SubmitExpenseAcceptDenyExpense、および ReimbursementIssued の 3 つのメッセージ型を指定します。このコントラクトは、費用を返済するタスクを実行するメッセージ交換に必要なメッセージ型を一覧表示します。すべての ProcessExpense サービスとその他の任意のサービスとの間で行われるメッセージ交換は、ProcessExpenses コントラクトによって制御されます。ProcessExpense サービスは、着信メッセージおよび送信メッセージを ExpenseQueue キューに保存します。ExpenseProcessing ストアド プロシージャは、このキューから受信したメッセージを処理し、返信が必要な場合は適切なブローカ宛てにルーティングするようメッセージをキューに戻します。

内容

  • メッセージ型
    メッセージ交換の参加者には、各メッセージの名前と内容に関する取り決めが必要です。メッセージ型では名前と内容を定義します。

  • コントラクト
    コントラクトは、アプリケーションが特定のタスクを実行するために使用するメッセージの型を定義します。

  • キュー
    キューには Service Broker メッセージが格納されます。

  • サービス
    Service Broker のサービスとは、特定のビジネス タスクまたはビジネス タスク セットの名前です。