チュートリアル 1: エコー アダプターを開発する
このチュートリアルでは、WCF LOB アダプター SDK を使用して機能アダプターを開発します。 アダプターは、架空の基幹業務システムの操作をシミュレートして、次のような WCF LOB アダプター SDK の主な機能の多くを示します。
同期受信
同期送信
メタデータの参照
メタデータ検索
メタデータ解決
このセクションには、エコー アダプターでサポートされているさまざまな機能が含まれています。 メッセージ交換、操作メタデータ、接続プロパティ、アダプター のプロパティです。
メッセージ交換パターン
エコー アダプターでは、次の 2 つのメッセージ交換パターンがサポートされています。
同期送信、つまり、使用しているクライアントは、アダプターを介してターゲット システムに WCF 要求メッセージを送信し、アダプターを介してターゲット システムから WCF 応答メッセージを受信するまで待機します。 これは、アダプターの最も一般的なメッセージ交換パターンです。 同期送信をサポートするには、 インターフェイスを
Microsoft.ServiceModel.Channels.Common.IOutboundHandler
実装します。同期受信、つまり、使用しているクライアントは、アダプターを介してターゲット システムからのデータまたはイベントをリッスンします。 同期受信をサポートするには、 インターフェイスを実装します
Microsoft.ServiceModel.Channels.Common.IInboundHandler
。メッセージ交換パターンの詳細については、「 アーキテクチャの概要」を参照してください。
Note
アダプター開発ウィザードは、UI のデータ フローとしてメッセージ交換パターンを表示します。
メタデータのサポート
エコー アダプターでは、メタデータの参照、検索、および解決の機能がサポートされています。 通常、閲覧と検索は LOB システムから操作を取得します。 エコー アダプターの場合、LOB システムは、次に示すように、定義済みの一連の操作です。
EchoMainCategory
Echo/EchoStrings
Echo/EchoGreetings
Echo/EchoCustomGreetingFromFile
Echo/OnReceiveEcho
各操作の定義を次に示します。
名前 | 操作の定義 | 説明 | 方向 |
---|---|---|---|
EchoMainCategory | カテゴリ | 操作を分類します。 | 該当なし |
Echo/EchoStrings | string[] EchoStrings(string data) | 指定した回数だけ着信文字列を呼び出し元のクライアントにエコーします。 | 送信 |
Echo/EchoGreetings | Greeting[] EchoGreetings(Greeting greeting) | 着信する Greeting オブジェクトを、呼び出し元のクライアントに指定された回数エコーします。 | 送信 |
Echo/EchoCustomGreetingFromFile | CustomGreeting EchoCustomGreetingFromFile(Uri greetingInstancePath) | Greeting オブジェクトのインスタンスをファイルから読み取ってエコーします。 Greeting オブジェクトのメタデータは、定義済みの XSD ファイルから取得されます。 | 送信 |
Echo/OnReceiveEcho | void OnReceiveEcho(Uri path, long content) | 指定したフォルダーにドロップされたファイルの場所と長さをエコーします。 | 受信 |
アダプターのプロパティ
アダプターは、次のアダプター プロパティを公開します。
名前 | カテゴリ | [データ型] | 説明 |
---|---|---|---|
Count | その他 | System.Int32 | 指定した回数だけ入力を呼び出し元のクライアントにエコーするために使用されます。 既定値は 5 です。 |
EnableConnectionPooling | その他 | System.Boolean | アダプターの接続プールを有効または無効にするために使用されます。 既定値 = true。つまり、WCF LOB アダプター SDK のランタイム エンジンで接続プールが有効になっています。 |
InboundFileFilter | 受信 | System.String | 受信シナリオでのみ使用され、FileSystemWatcher によって拡張機能のファイルを監視するために使用されます。 Default=*.txt |
InboundFileSystemWatcherFolder | 受信 | System.String | FileSystemWatcher がアダプターに通知を生成するためにファイルを削除するフォルダーを設定するために使用します。 既定値は c:\inbound\watcher です。 |
接続のプロパティ
エコー アダプターは、次の接続プロパティを公開します。
名前 | [データ型] | 説明 |
---|---|---|
アプリケーション | System.String | LOB システム内のアプリケーション名。 このプロパティは説明を目的とします。 エコー アダプターには LOB システムは含まれません。 既定値 = lobapplication |
EnableAuthentication | System.Boolean | true の場合、アダプターはクライアント資格情報内の username フィールドの値を受け取ります。 既定値 = false |
hostname | System.String | LOB システムが存在するサーバー名。 このプロパティは説明を目的とします。 エコー アダプターには LOB システムは含まれません。 既定値 = lobhostname |
インターフェイスの実装
WCF LOB アダプター SDK は、アダプターの特定の機能をサポートするために実装する必要があるクラスとインターフェイスのコレクションを定義します。 次の表では、これらのクラスとインターフェイス、その説明、および実装するタイミングについて説明します。
クラス/インターフェイス | 実装するタイミング | 説明 |
---|---|---|
Microsoft.ServiceModel.Channels.Common.IConnection | ターゲット システムへの接続を定義する必要がある場合。 | ターゲット システムへの接続を定義します。 |
Microsoft.ServiceModel.Channels.Common.IConnectionFactory | ターゲット システムへの接続を作成する必要がある場合。 | ターゲット システムへの接続を作成します。 |
Microsoft.ServiceModel.Channels.Common.ConnectionUri | 接続 URI を管理する必要がある場合。 アダプター サービス参照プラグインの追加ツール内で接続プロパティを分類する必要がある場合。 |
ターゲット システムの接続 URI を管理します。 |
Microsoft.ServiceModel.Channels.Common.IMetadataResolverHandler | アダプターはメタデータ解決機能をサポートしている必要があります。 | 操作と型のメタデータを解決します。 |
Microsoft.ServiceModel.Channels.Common.IMetadataSearchHandler | アダプターがメタデータ検索機能をサポートしている場合。 | ターゲット システム内の操作を検索します。 |
Microsoft.ServiceModel.Channels.Common.IMetadataBrowseHandler | アダプターで参照機能をサポートする必要がある | ターゲット システム内の操作を参照します。 |
Microsoft.ServiceModel.Channels.Common.IOutboundHandler | アダプターが通常、送信機能をサポートする必要がある場合。 | 受信 WCF 要求メッセージをターゲット システム メッセージに変換し、ターゲット システム固有の関数を呼び出して、応答を送信 WCF 応答メッセージに変換します。 |
Microsoft.ServiceModel.Channels.Common.IInboundHandler | アダプターが受信機能をサポートしている場合。 | ターゲット システムからデータやイベントをリッスンします。 |
アダプター開発を簡略化するには、アダプター開発ウィザードを使用してアダプター プロジェクトを生成します。これにより、アダプター機能に合わせて一連の派生クラスが作成されます。
アダプター サービス参照プラグインの追加およびアダプター サービス アドインの使用ツールを使用してアダプターと接続のプロパティをカスタマイズするには、アダプター開発ウィザードによって生成された次のファイルを変更します。
{Projectname}BindingElement.cs
{Projectname}BindingElementExtensionElement.cs
{Projectname}ConnectionUri.cs
その方法の詳細については、「 手順 2: アダプターと接続のプロパティを分類する」を参照してください。