WCF LOB アダプター SDK は、WCF チャネル モデルの上に構築され、アダプター開発者が大規模で動的なメタデータを持つ基幹業務システムへのアダプターを作成するためのデザイン時および実行時の拡張機能を提供します。 WCF LOB アダプター SDK を使用して作成されたアダプターは、カスタム WCF バインドとしてコンシューマーに表示されます。 次の図は、WCF LOB アダプター SDK の内部アーキテクチャと主要コンポーネントを示しています。
取り扱い者
ハンドラー は、アダプターでサポートされるメッセージ交換パターンを定義します。
次の表は、使用可能なハンドラーの種類、その関数、およびマップ先の WCF チャネルをまとめたものです。
ハンドラーの種類 | 関数 | 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 (Iリクエストチャンネル) |
チャネルの実装
WCF LOB アダプター SDK を使用して構築されたアダプターは、基本的にトランスポート チャネル (System.ServiceModel.Channels.IServiceListner) です。 WCF LOB アダプター SDK を使用して構築されたアダプターは、WCF バインディングとしてコンシューマーに表示されます。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 つあります。
注
アダプターは、サポートできる接続の数に関して制限される場合があり、通常はシステム リソースによって制限されます。
アダプター開発者が接続プールの設定を構成しやすくするために、WCF LOB アダプター SDK には、 Microsoft.ServiceModel.Channels.Common.ConnectionPoolSettings
と Microsoft.ServiceModel.Channels.Common.ConnectionManagerSettings
の 2 つのクラスが用意されています。
メタデータ管理
メタデータ管理 は、ターゲット システムのメタデータのキャッシュのオブジェクト指向表現を担当します。 メタデータは、すべての資格情報でアクセスできる共通キャッシュに保持することも、資格情報ごとにキャッシュすることもできます。
メタデータのライフ サイクルは、デザイン時の定義から始まり、実行時に使用を継続します。 設計時には、アダプター開発者は一連の操作を識別し、必要な WSDL およびクライアント側プロキシを生成する必要があります。 実行時に、アダプター フレームワーク ベースのアダプターは、定義済みのメタデータを使用して、ターゲット システム呼び出しから返されたメッセージを解釈します。
アダプター ライターがメタデータ設定を構成しやすくするために、アダプター フレームワークには、 Microsoft.ServiceModel.Channels.Common.CacheSettings
、 Microsoft.ServiceModel.Channels.Common.MetadataSettings
、 Microsoft.ServiceModel.Channels.Common.CommonCacheSettings
の 3 つのクラスが用意されています。
WSDL ビルダー
WSDL Builder は、WCF LOB アダプター SDK の内部メタデータ オブジェクト モデルから WSDL の自動生成を提供します (カスタム WSDL 生成を必要とするシナリオではオーバーライドできます)。
詳細については、Microsoft.ServiceModel.Channels.Common.IWsdlRetrieval
を参照してください。
メタデータの参照/検索
メタデータの参照/検索 では、すべての LOB メタデータを参照および検索できます。
詳細については、Microsoft.ServiceModel.Channels.IMetadataRetrievalContract
を参照してください。
メタデータの生成
メタデータ生成 を使用すると、アダプター コンシューマーによって選択された操作に基づいて、クライアント (送信シナリオの場合) とサービス (受信シナリオの場合) のコードを生成できます。 アダプター コンシューマーは、アダプター サービス参照プラグインの追加 (BizTalk アプリケーションの場合はアダプター サービス アドインの使用) を使用することをお勧めしますが、WCF LOB アダプター SDK には、System.Web.Services.Description.ServiceDescription を取得するためのパブリック インターフェイス Microsoft.ServiceModel.Channels.MetadataRetrievalClient.GetMetadata%2A
が用意されています。これは、選択した操作と種類に関する情報を含む Web サービス記述言語 (WSDL) を表します。 アダプター ライターは、Microsoft.ServiceModel.Channels.Common.OperationMetadata
やMicrosoft.ServiceModel.Channels.Common.TypeMetadata
から派生したクラスを含む WCF LOB アダプター SDK のメタデータ オブジェクト モデルを利用して、各操作や型の詳細を記述します。