Crear instancias de adaptadores aislados
Como se ha comentado con anterioridad, BizTalk Server no crea instancias de los adaptadores aislados. En cambio, se crean instancias de ellos y se alojan en otro proceso. Es responsabilidad del adaptador crear su proxy de transporte, QueryInterface, para IBTTransportProxy y, a continuación, llamar a IBTTransportProxy. RegisterIsolatedReceiver para registrarse en el motor de mensajería.
El registro requiere que el adaptador pase una de sus ubicaciones de recepción configurada y habilitada al motor de mensajería. Las credenciales del proceso del host del adaptador deben ser miembro del grupo Usuarios de hosts aislados de BizTalk. El uso solo de la suplantación aquí no es suficiente a menos que el usuario sea miembro de ese grupo. Además, se consulta el adaptador para asegurarse de que tiene el ClassID correcto y se ejecuta en el equipo configurado para esa instancia de host. Después de que el adaptador se haya registrado correctamente con su proxy de transporte, su configuración se envía a ella mediante una llamada al método Load de la interfaz IPersistPropertyBag .
La ilustración siguiente muestra esta secuencia de llamadas a la API. Las interfaces que se muestran en azul son las que implementa el adaptador.
El siguiente fragmento de código muestra las llamadas a la API de registro:
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 );
}
}
Sugerencia de implementación: Se recomienda que el adaptador mantenga un recuento del trabajo en curso. El adaptador debe bloquear Terminate hasta que el recuento de mensajes haya alcanzado cero. En el caso de la recepción, este trabajo incluye cualquier solicitud pendiente que no se haya publicado en BizTalk Server. Los mensajes de respuesta no se entregan a un adaptador de recepción después de llamar a Terminate .
En el caso de los adaptadores de envío, los mensajes que están en curso deben controlarse de forma adecuada. Esto significa que cualquier mensaje entregado correctamente debe eliminarse de la cola privada de mensajes de la aplicación del adaptador para evitar que se envíen más de una vez.
Después de llamar a Terminate , el motor de mensajería no acepta solicitudes para publicar nuevos mensajes, a excepción de los mensajes de respuesta para los pares de solicitud-respuesta.