WCF LOB アダプター SDK のアーキテクチャの概要
WCF LOB アダプター SDK は、WCF チャネル モデルの上に構築され、アダプター開発者が大規模で動的なメタデータを持つ基幹業務システムへのアダプターを作成するためのデザイン時および実行時の拡張機能を提供します。 WCF LOB アダプター SDK を使用して作成されたアダプターは、カスタム WCF バインディングとしてコンシューマーに表示されます。 次の図は、WCF LOB アダプター SDK の内部アーキテクチャとメインコンポーネントを示しています。
ハンドラー
ハンドラー は、アダプターでサポートされるメッセージ交換パターンを定義します。
次の表は、使用可能なハンドラーの型、その関数、およびそれらがマップする WCF チャネルをまとめたものです。
ハンドラーの種類 | Function | WCF チャネルへのマップ |
---|---|---|
Microsoft.ServiceModel.Channels.Common.IOutboundHandler |
一方向の送信または要求/応答パターンをサポートします。 | IOutputChannel、 IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IAsyncOutboundHandler |
非同期の一方向送信または要求/応答パターンをサポートします。 | IOutputChannel、 IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IInboundHandler |
一方向の受信パターンまたは応答パターンをサポートします。 | IInputChannel、 IReplyChannel |
Microsoft.ServiceModel.Channels.Common.IAsyncInboundHandler |
一方向の受信パターンまたは応答パターンの非同期バリアントをサポートします。 | IInputChannel IReplyChannel |
Microsoft.ServiceModel.Channels.Common.IMetadataBrowseHandler |
ターゲット システムでのメタデータの参照をサポートします。 | IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IMetadataSearchHandler |
ターゲット システムでのメタデータの検索をサポートします。 | IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IMetadataResolverHandler |
ターゲット システムからのメタデータの取得をサポートします。 | IRequestChannel |
チャネルの実装
WCF LOB アダプター SDK を使用して構築されたアダプターは、基本的にはトランスポート チャネル (System.ServiceModel.Channels.IServiceListner) です。 WCF LOB アダプター SDK を使用して構築されたアダプターは、WCF バインディングとしてコンシューマーに表示されます。ここで、チャネル スタックを作成するためにバインディングが使用されます。 このバインディングは、BasicHttpBinding、WsHttpBinding、NetTcpBinding などの他の定義済み WCF バインドとのピアと見なされ、サービスを呼び出すときに、app.config またはクライアント アプリケーションによってコード内で設定できます。 このバインドには、T:System.ServiceModel.Channels.TransportBindingElement クラスから派生したキー バインド要素であるアダプターを含む、順序付けられたバインド要素のセットが含まれています。 送信シナリオでは、WCF LOB アダプター SDK ランタイムはチャネル ファクトリを使用してアダプター (つまりトランスポート チャネル) を作成します。 受信シナリオでは、WCF LOB アダプター SDK ランタイムは、サービス アプリケーションの受信チャネルにチャネル リスナーを使用します。 実行時メッセージとデザイン時メッセージの両方がこのコンポーネントを通過します。
接続ファクトリ、接続、接続 URI ビルダー
ConnectionFactory は、URI とユーザー資格情報に基づいて接続を作成するためのファクトリ パターンを提供します。 詳細については、「Microsoft.ServiceModel.Channels.Common.IConnectionFactory
」を参照してください。
Connection は、ターゲット システムとの低レベルの通信コントラクトを定義し、ネイティブ通信 API と接続ハンドルをカプセル化します。 詳細については、「Microsoft.ServiceModel.Channels.Common.IConnection
」を参照してください。
接続 URI ビルダーを使用すると、アダプター コンシューマーは、構文に関する特定の知識がなくても、プログラムによって接続 URI を構築できます。 詳細については、「Microsoft.ServiceModel.Channels.Common.ConnectionUri
」を参照してください。
接続管理
接続管理 は、アダプターの接続の有効期間管理を担当します。 内部的には、接続のプールを使用できる状態に保ちます。 この接続プールは資格情報と URI ベースです。 資格情報には、接続が実行されるセキュリティ コンテキストを定義するユーザー名とパスワードが含まれています。
同じ資格情報と URI を使用すると、同じ接続ファクトリで開かれているチャネルは、既に使用可能なチャネルがある場合、プールから接続を取得します。
接続プール マネージャーは、資格情報に関係なく、チャネル ファクトリの境界を越えて、その URI に対して開いている接続の数のレコードを保持します。 たとえば、1 つのシステムでは、異なる資格情報を持つ 2 人のユーザーを持つことができます。つまり、システムに接続するチャネル ファクトリが 2 つあります。
Note
アダプターは、サポートできる接続の数に関して制限される場合があり、一般にシステム リソースによって制限されます。
アダプター開発者が接続プールの設定を構成できるように、WCF LOB アダプター SDK には、 と の 2 つのクラス Microsoft.ServiceModel.Channels.Common.ConnectionPoolSettings
が用意されています Microsoft.ServiceModel.Channels.Common.ConnectionManagerSettings
。
メタデータ管理
メタデータ管理 は、ターゲット システムのメタデータのキャッシュのオブジェクト指向表現を担当します。 メタデータは、すべての資格情報でアクセスできる共通キャッシュに保持することも、資格情報ごとにキャッシュすることもできます。
メタデータのライフ サイクルは、デザイン時の定義から始まり、実行時に使用を継続します。 設計時に、アダプター開発者は一連の操作を識別し、必要な WSDL およびクライアント側プロキシを生成する必要があります。 実行時に、アダプター フレームワーク ベースのアダプターは、定義済みのメタデータを使用して、ターゲット システム呼び出しから返されたメッセージを解釈します。
アダプター ライターがメタデータ設定を構成できるように、アダプター フレームワークには、 Microsoft.ServiceModel.Channels.Common.CacheSettings
Microsoft.ServiceModel.Channels.Common.MetadataSettings
と の 3 つのクラスが用意されていますMicrosoft.ServiceModel.Channels.Common.CommonCacheSettings
。
WSDL ビルダー
WSDL Builder は、WCF LOB アダプター SDK の内部メタデータ オブジェクト モデルからの WSDL の自動生成を提供します (カスタム WSDL 生成を必要とするシナリオではオーバーライドできます)。
詳細については、「 Microsoft.ServiceModel.Channels.Common.IWsdlRetrieval
」を参照してください。
メタデータの参照/検索
メタデータの参照/検索 を使用すると、すべての LOB メタデータを参照および検索できます。
詳細については、「Microsoft.ServiceModel.Channels.IMetadataRetrievalContract
」を参照してください。
メタデータの生成
メタデータ生成 を使用すると、アダプター コンシューマーによって選択された操作に基づいて、クライアント (送信シナリオの場合) とサービス (受信シナリオの場合) のコードを生成できます。 アダプター コンシューマーは、アダプター サービス参照プラグインの追加 (BizTalk アプリケーションの場合はアダプター サービス アドインの使用) ツールを使用することをお勧めしますが、WCF LOB アダプター SDK には、選択した操作と種類に関する情報を含む Web サービス記述言語 (WSDL) を表す System.Web.Services.Description.ServiceDescription を取得するためのパブリック インターフェイス Microsoft.ServiceModel.Channels.MetadataRetrievalClient.GetMetadata%2A
が用意されています。 アダプター ライターは、 から Microsoft.ServiceModel.Channels.Common.OperationMetadata
派生したクラスを含む WCF LOB アダプター SDK のメタデータ オブジェクト モデルを使用して、 Microsoft.ServiceModel.Channels.Common.TypeMetadata
各操作と型の詳細を記述します。