非同期サービスでは、オブジェクト間の通信にコールバック相互作用のパターンを使用します。非同期サービスは、例えば、メッセージ指向のミドルウェア・ベンダーによって提供されるパブリッシュ/サブスクライブ・システム、またはシステムおよびデバイス管理ドメインで使用することができます。
WS-Notification サービス
非同期サービスは、以下のように WS-Notification 仕様で標準化されています。
- WS-BaseNotification は、NotificationProducers および NotificationConsumers 用の Web サービス・インターフェースを定義します。
この仕様には、これらの役割を果たすサービス・プロバイダーによって実装される標準メッセージ交換が含まれ、関連する操作上の要件も含まれます。
- WS-BrokeredNotification は、NotificationBroker 用の Web サービス・インターフェースを定義します。 NotificationBroker は、それ自体はサービス・プロバイダーではないエンティティーがメッセージを公開できるようにする機能などを持つ、仲介者です。 この仕様には、NotificationBroker サービス・プロバイダーによって実装される標準メッセージ交換が含まれ、ブローカーを介する通知に参加するサービス・プロバイダーおよびリクエスターに関連した操作上の要件も含まれます。
- WS-Topics は、トピック という、サブスクリプション用の関連項目を整理分類するメカニズムを定義します。 トピックは、WS-BaseNotification および WS-BrokeredNotification で定義される通知メカニズムと連結して使用されます。
WS-Notification 仕様を実装する Web サービスおよび XML サービスは、テスト内に非同期要求を作成することによってテストできます。 非同期要求には、対応する WS-Notification 仕様のインターフェースがコールバック構造と共に含まれています。
独自の非同期サービス
WS-Notification 仕様を実装しない独自の非同期サービスをテストすることができます。 それらのサービスをテストするには、サービスのインターフェースを含むサービス要求を手動で作成し、その要求に非同期コールバック構造を追加します。
非同期要求の XML データには、コールバックの受信側の URL を指定するエンドポイントが含まれている必要があります。 テスト中には、このエンドポイントの使用により、コールバックが実際の受信側ではなくテスターにリダイレクトされます。
コールバック構造
非同期サービスをテストするには、次の図に示すように、テストに非同期要求構造を作成する必要があります。
Web サービス要求、またはプレーンな XML 要求は、サブスクリプションのアクションを提供し、コールバック・エレメントを含んでいます。コールバック・エレメントは、テストの動作を以下の 3 つの状態によって記述します。
- 並列 には、サブスクリプション要求の後、通知応答の待機中に実行されるテスト・エレメントが含まれます。
- 受信 には、サービスから通知応答を受信すると実行されるテスト・エレメントが含まれます。
- タイムアウト には、コールバック・エレメントで指定された遅延時間を経過しても通知応答が受信されない場合に実行されるテスト・エレメントが含まれます。
並列、受信、およびタイムアウトの各エレメントのすべての内容が実行された後は、テスト内の非同期要求の次のエレメントが続けて実行されます。
テスト内の非同期コールバック構造の生成方法は、以下に示すように、その非同期サービスが WS-Notification 仕様を使用するかどうかによって異なります。
- WS-Notification サービス: 非同期要求をテスト内に作成します。
- 独自のサービス: Web サービス要求または XML 要求をテスト内に手動で作成し、その要求に非同期コールバック構造を追加します。