次の方法で共有


分離アダプターのインスタンス化

分離アダプターは BizTalk Server によってインスタンス化されません。 代わりに、別のプロセスでインスタンス化され、ホストされます。 アダプターは、IBTTransportProxy のトランスポート プロキシ QueryInterface を作成し、IBTTransportProxy を呼び出す必要があります。メッセージング エンジンに登録する RegisterIsolatedReceiver

登録には、構成済みで有効になっている受信場所の 1 つをアダプターからメッセージ エンジンに渡す必要があります。 アダプターのホスト プロセスの資格情報は、BizTalk 分離ホスト ユーザー グループのメンバーである必要があります。 ここで単に権限借用を使用しても、ユーザーがそのグループのメンバーでなければ不十分です。 さらに、アダプターが正しい ClassID を持ち、そのホスト インスタンス用に構成されたコンピューターで実行されていることを確認するために、アダプターに対してクエリが実行されます。 アダプターがトランスポート プロキシに正常に登録されると、 IPersistPropertyBag インターフェイスの Load メソッドを呼び出すことによって、その構成がを使用して送信されます。

この API 呼び出しの順序は、次の図のようになります。 アダプターは、青色で示されるインターフェイスを実装しています。

分離アダプターをインスタンス化するプロセスを示す図。

次のコードは、登録 API の呼び出し方法を示しています。

using Microsoft.BizTalk.TransportProxy.Interop;  
using Microsoft.BizTalk.Component.Interop;  
using Microsoft.BizTalk.Message.Interop;  
  
public class MyAdapter : IBTTransport,   
 IBTTransportConfig,   
 IBTTransportControl,   
 IBaseComponent  
{  
...  
private IBTTransportProxy transportProxy;  
  
 public void Register(string uri)  
 {  
 // Create the Transport Proxy...  
 this.transportProxy =   
 (IBTTransportProxy)new BTTransportProxy();  
  
// Register on of the adapters uri’s with the TP  
 this.transportProxy.RegisterIsolatedReceiver(  
 uri,   
 (IBTTransportConfig)this );  
 }  
}  

実装のヒント: アダプターでは、進行中の作業の数を保持することをお勧めします。 メッセージ数が 0 に達するまで、アダプターは Terminate をブロックする必要があります。 受信側では、BizTalk Server に対して公開されていない未処理の要求がこの作業に含まれます。 Terminate が呼び出された後、応答メッセージは受信アダプターに配信されません。

送信アダプターでは、処理中のメッセージが適切に処理される必要があります。 つまり、正常に配信されたメッセージをアダプターのプライベート アプリケーション メッセージ キューから削除して、メッセージが 2 回以上送信されるのを防ぐ必要があります。

Terminate が呼び出されると、メッセージング エンジンは、送信請求と応答のペアの応答メッセージを除き、新しいメッセージを発行する要求を受け入れません。