Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para invocar operaciones en el adaptador de Microsoft BizTalk para SQL Server, el código actúa como un cliente WCF y envía operaciones salientes al adaptador. En el modelo de canal WCF, el código invoca operaciones en el adaptador mediante el envío de un mensaje de solicitud a través de un canal.
Para recibir mensajes sobre cambios en datos basados en sondeo mediante el adaptador, su código actúa como un servicio WCF y recibe del adaptador la operación entrante de sondeo, TypedPolling o Notificación. En otras palabras, el código recibe un mensaje de solicitud para estas operaciones desde el adaptador a través de un canal.
Los temas de esta sección proporcionan información general sobre el uso del adaptador de SQL con el modelo de canal WCF.
Introducción al modelo de canal WCF
Los clientes y servicios se comunican intercambiando mensajes SOAP. El modelo de canal WCF es una abstracción de bajo nivel de este intercambio de mensajes. Proporciona interfaces y tipos que permiten enviar y recibir mensajes mediante una pila de protocolos superpuesta denominada pila de canales. Cada capa de la pila se compone de un canal y cada canal se crea a partir de un enlace WCF. En la capa más baja se encuentra el canal de transporte. El canal de transporte implementa el mecanismo de transporte subyacente entre un servicio y un cliente y presenta cada mensaje a las capas superiores (y, en última instancia, la aplicación de consumo) como System.ServiceModel.Message. La clase Message de WCF es una abstracción de un mensaje SOAP. WCF proporciona varias interfaces de canal, denominadas formas de canal, que modelan los patrones básicos de intercambio de mensajes SOAP, como solicitud-respuesta o unidireccional. Un enlace de transporte WCF proporciona una implementación de una o varias formas de canal que las capas superiores pueden usar para enviar y recibir mensajes. Para obtener más información sobre el modelo de canal WCF, vea Información general sobre el modelo de canal.
El adaptador de SQL es un enlace de transporte personalizado de WCF que expone una base de datos de SQL Server como servicio WCF.
Formas de canal admitidas para el adaptador de SQL Server
El adaptador implementa las siguientes formas de canal WCF:
IRequestChannel (System.ServiceModel.Channels.IRequestChannel). La interfaz IRequestChannel implementa el lado cliente de un intercambio de mensajes de solicitud-respuesta. Puede usar un IRequestChannel para realizar operaciones para las que desea consumir una respuesta, por ejemplo, para realizar una consulta SELECT en una tabla.
IOutputChannel (System.ServiceModel.Channels.IOutputChannel). Esta forma implementa el lado cliente de un intercambio de mensajes unidireccional. Puede usar un IOutputChannel para invocar una operación para la que no necesite consumir una respuesta, por ejemplo, para llamar a un procedimiento que no tenga parámetros devueltos.
Importante
Todas las llamadas subyacentes del adaptador al cliente de SQL Server son sincrónicas. Esto incluye llamadas al cliente de SQL Server que son el resultado de las operaciones invocadas a través de IOutputChannel. Cuando se usa un IOutputChannel, el adaptador descarta la respuesta recibida del cliente de SQL Server.
IInputChannel (System.ServiceModel.Channels.IInputChannel). Esta forma implementa el lado de servicio de un intercambio de mensajes unidireccional. Usa un IInputChannel para recibir mensajes para las operaciones entrantes, como sondeo o notificación, desde el adaptador.
Al igual que cualquier enlace WCF, el adaptador de SQL usa un patrón de fábrica para proporcionar canales al código de la aplicación. Use un objeto Microsoft.Adapters.SQLBinding para crear instancias de:
System.ServiceModel.ChannelFactory<IRequestChannel para proporcionar canales IRequestChannel> que puede usar para invocar operaciones de solicitud-respuesta en el adaptador.
System.ServiceModel.ChannelFactory<IOutputChannel> para proporcionar canales IOutputChannel que puede usar para invocar operaciones unidireccionales en el adaptador.
System.ServiceModel.IChannelListener<IInputChannel> para proporcionar canales IInputChannel que puede usar para recibir mensajes para las operaciones entrantes, como sondeo o notificación, del adaptador.
Crear mensajes para el adaptador de base de datos de SQL Server en el modelo de canal WCF
En WCF, la clase System.ServiceModel.Channels.Message proporciona una representación en memoria de un mensaje SOAP. Para crear una instancia de Message , invoque el método static Message.Create .
Hay dos partes importantes para el mensaje SOAP que debe especificar al crear una instancia de mensaje para enviar al adaptador de SQL.
La acción del mensaje es una cadena que forma parte del encabezado del mensaje SOAP. La acción de mensaje identifica la operación que se debe invocar en la base de datos. A continuación se muestra la acción de mensaje especificada para invocar la operación Select en la tabla Employee:
TableOp/Select/dbo/Employee
.El cuerpo del mensaje contiene los datos de parámetro de la operación. El cuerpo del mensaje se compone de XML con formato correcto que corresponde al esquema de mensajes esperado por el adaptador de SQL para la operación solicitada. El cuerpo del mensaje siguiente especifica una operación Select en la tabla Employee (SELECT * FROM Employee WHERE Employee_ID=10001).
<Select xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <Columns>*</Columns> <Query>where Employee_ID=10001</Query> </Select>
Para obtener información sobre los esquemas de mensajes del adaptador de SQL y las acciones de mensajes para las operaciones, vea Mensajes y esquemas de mensajes para el adaptador de BizTalk para SQL Server.
Este método Create está sobrecargado y ofrece muchas opciones diferentes para proporcionar el cuerpo del mensaje. En el código siguiente se muestra cómo crear una instancia de Message mediante xmlReader para proporcionar el cuerpo del mensaje. En este código, el cuerpo del mensaje se lee desde un archivo.
XmlReader readerIn = XmlReader.Create("SelectInput.xml");
Message messageIn = Message.CreateMessage(MessageVersion.Default,
"TableOp/Select/dbo/Employee",
readerIn);
Importante
Debe proporcionar una acción de mensaje en la instancia Message. Normalmente, esto se hace cuando se crea la instancia de Message .