カスタム アダプター プロバイダーを作成する
前のセクションで説明したように、リゾルバーが実行された後、動的解決サービスは、結果が (変換ではなく) エンドポイントであるかどうかを確認します。 エンドポイントの場合、サービスはアダプター マネージャー ( AdapterMgr クラスのインスタンス) をインスタンス化します。
アダプター マネージャーは、トランスポートの種類と送信トランスポートの場所を検証して修正します。 トランスポートの種類がまだ解決されず、URL が "http" または "https" で始まる場合、アダプター マネージャーはトランスポートの種類を "WCF-WSHttp" に設定します。
次に、アダプター マネージャーは、トランスポートの種類が有効な Microsoft BizTalk Server アダプターと等しいかどうかを確認し、そのプロパティ名前空間を返します。 このプロセスは、すべてのアダプターに対して 1 回だけ実行され、結果をキャッシュに格納して、同じアダプターを使用する他の受信メッセージに対して繰り返しクエリを実行しないようにします。
アダプター マネージャーは、トランスポートの種類 ("://" サフィックスなし) を使用して、適切なアダプター プロバイダーを決定します。 アダプター プロバイダーは、 IAdapterProvider インターフェイスを実装する必要があるカスタム アセンブリです。 アダプター プロバイダーは、リゾルバーによって生成された Dictionary インスタンスの Resolution 構造体のプロパティを使用して、Microsoft BizTalk Server ランタイム エンジンが動的解決を実行できるようにするメッセージのすべてのプロトコル固有のプロパティを設定します。
リゾルバー (前のセクションで説明) と同様に、動的解決メカニズムでは、Esb.config 構成ファイル内のエントリを使用してアダプター プロバイダーを検索します。 次の XML は、構成ファイルのセクションを示しています。
<adapterProviders cacheManager= "Adapter Providers Cache Manager" absoluteExpiration="3600">
<adapterProvider name="WCF-WSHttp" type="Microsoft.Practices.ESB.Adapter.WcfWSHttp.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfWSHttp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="Http,Https" />
<adapterProvider name="WCF-BasicHttp" type="Microsoft.Practices.ESB.Adapter.WcfBasicHttp.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfBasicHttp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="Http,Https" />
<adapterProvider name="WCF-Custom" type="Microsoft.Practices.ESB.Adapter.WcfCustom.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfCustom, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="mssql" />
<adapterProvider name="SMTP" type="Microsoft.Practices.ESB.Adapter.SMTP.AdapterProvider, Microsoft.Practices.ESB.Adapter.SMTP, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="smtp" />
<adapterProvider name="FTP" type="Microsoft.Practices.ESB.Adapter.FTP.AdapterProvider, Microsoft.Practices.ESB.Adapter.FTP, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22">
<adapterConfig>
<add name="DefaultUsername" value="anonymous" />
<add name="DefaultPassword" value="" />
</adapterConfig>
</adapterProvider>
<adapterProvider name="MQSeries" type="Microsoft.Practices.ESB.Adapter.MQSeries.AdapterProvider, Microsoft.Practices.ESB.Adapter.MQSeries, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="MQS" adapterAssembly="MQSeries, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<adapterProvider name="FILE" type="Microsoft.Practices.ESB.Adapter.FILE.AdapterProvider, Microsoft.Practices.ESB.Adapter.FILE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="File" />
</adapterProviders>
カスタム アダプター プロバイダーを作成する
アダプター マネージャー ( AdapterMgr クラスのインスタンス) は、構成ファイルでアダプター プロバイダーを検索し、適切なアセンブリを読み込みます。 動的解決メカニズムでは、 IAdapterProvider インターフェイスのすべての読み込まれた具象実装がキャッシュされ、複数の受信メッセージで同じアダプター プロバイダーが使用されている場合に構成情報とアセンブリの読み込みが繰り返し読み込まれないようにします。
最後に、アダプター マネージャーは、IAdapterProvider インターフェイスの具象実装の SetEndPoint メソッドを実行し、パイプライン コンポーネントは BizTalk Message Box データベースにメッセージを返します。
カスタム アダプター プロバイダーを作成するには
BaseAdapterProvider 基本クラスから派生し、メッセージのエンドポイント コンテキスト プロパティを設定する SetEndPoint メソッドを含むアセンブリを作成します。
アダプター プロバイダーを登録するには、アダプターの名前を name 属性として adapterProvider> 要素、type 属性としてクラスの完全修飾名、モニカー属性としてモニカー (複数の値をコンマで区切る必要があります)、必要に応じて実際のアダプターのアセンブリを adapterAssembly 属性として使用<して、アダプター プロバイダーを Esb.config 構成ファイルに追加します。
新しいアセンブリをグローバル アセンブリ キャッシュに登録します。