Creazione di istanze di adapter isolati
Come illustrato precedentemente, le istanze degli adapter isolati non vengono create da BizTalk Server, ma vengono create e ospitate in un altro processo. È responsabilità dell'adapter creare il proxy di trasporto, QueryInterface, per IBTTransportProxy e quindi chiamare IBTTransportProxy.RegisterIsolatedReceiver per la registrazione con il motore di messaggistica.
Per la registrazione è necessario che l'adapter passi uno dei relativi indirizzi di ricezione configurati e attivati al motore di messaggistica. Le credenziali del processo host dell'adapter devono essere un membro del gruppo utenti host di tipo Isolato BizTalk. In questo caso, l'utilizzo della rappresentazione non è sufficiente a meno che l'utente non sia membro di tale gruppo. Inoltre, l'adapter viene sottoposto a query per assicurarsi che abbia l'ID class corretto ed è in esecuzione nel computer configurato per tale istanza host. Dopo che l'adattatore è stato registrato correttamente con il proxy di trasporto, la relativa configurazione viene inviata usando chiamando il metodo Load dell'interfaccia IPersistPropertyBag .
Questa sequenza di chiamate API viene illustrata nella figura seguente. Le interfacce implementate dall'adapter sono visualizzate in blu.
Nel seguente frammento di codice vengono illustrate le chiamate API di registrazione:
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 );
}
}
Suggerimento per l'implementazione: È consigliabile mantenere il conteggio del lavoro in corso. L'adattatore deve bloccare Termina fino a quando il conteggio dei messaggi non ha raggiunto zero. Sul lato ricezione, questo lavoro include tutte le richieste in sospeso che non sono state pubblicate in BizTalk Server. I messaggi di risposta non vengono recapitati a una scheda di ricezione dopo che è stato chiamato Termina .
Nel caso degli adapter di trasmissione, i messaggi in corso devono essere gestiti in modo appropriato. Pertanto, tutti i messaggi recapitati correttamente devono essere eliminati dalla coda messaggi dell'applicazione privata dell'adapter per impedire che vengano inviati più volte.
Dopo aver chiamato Termina , il motore di messaggistica non accetta richieste per pubblicare nuovi messaggi, ad eccezione dei messaggi di risposta per coppie di richieste di risposta.