Streaming y el adaptador de SAP
El adaptador de Microsoft BizTalk para mySAP Business Suite admite el streaming de mensajes entre sí y una aplicación cliente. Con las operaciones del adaptador de SAP se invocan y las respuestas se devuelven intercambiando mensajes SOAP. Un cuerpo del mensaje SOAP se compone de nodos XML.
El adaptador admite dos tipos de streaming de mensajes:
Streaming de nodo. En el streaming de nodos, se puede transmitir un mensaje a un nodo a la vez entre el cliente y el adaptador. Esto significa que, todo el valor de un nodo se lee en un búfer y, a continuación, se envía al receptor.
Streaming de valor de nodo. En el streaming de nodo-valor, el valor real del nodo se puede transmitir en fragmentos entre el cliente y el adaptador. El streaming de valor de nodo es útil para enviar o recibir IOC de gran tamaño mediante las operaciones SendIdoc o ReceiveIdoc. Esto se debe a que todo el IDOC está contenido en un único nodo. (En lugar de una operación de envío o recepción fuertemente tipada en la que los datos del IDOC se dividen en muchos nodos).
Importante
El streaming de valor de nodo solo se admite entre el adaptador y una aplicación cliente. El adaptador de SAP no admite el streaming de valor de nodo de un extremo a otro con el sistema SAP. Esto se debe a que esta funcionalidad no es compatible con la biblioteca cliente de SAP.
Ambos modos de streaming dependen de la compatibilidad con el streaming de nodos y el streaming de valor de nodo en los mensajes de WCF. Por este motivo, el streaming está estrechamente vinculado a cómo crean y consumen los mensajes tanto el adaptador como una aplicación cliente. Un resultado de esto es que la compatibilidad con el streaming de mensajes no es la misma en todos los modelos de programación.
Las secciones de este tema proporcionan:
Información general fundamental sobre cómo se admite el streaming de mensajes en WCF y cómo lo implementa el adaptador.
Información sobre cómo se admite el streaming de mensajes al usar el adaptador en cada modelo de programación.
Aspectos básicos de streaming
La compatibilidad con el streaming implementado por el adaptador de SAP es una combinación de:
Compatibilidad con streaming de mensajes en WCF.
Compatibilidad con streaming en la biblioteca cliente de SAP.
El adaptador crea y consume internamente los mensajes.
Compatibilidad con streaming de mensajes en WCF
La forma en que WCF admite el streaming en un mensaje depende tanto de cómo se crea el mensaje como de cómo se consume el mensaje.
Se crea un mensaje WCF mediante el método Create estático de System.ServiceModel.Channels.Message. Este método tiene varias sobrecargas que admiten diferentes formas de pasar el cuerpo del mensaje. Se puede crear un mensaje WCF pasando el cuerpo del mensaje mediante:
Un System.Xml. XmlReader, o
System.ServiceModel.Channels.BodyWriter.
Se puede consumir un mensaje WCF mediante
XmlReader llamando a Message.GetReaderAtBodyContents() o
XmlDictionaryWriter llamando a Message.WriteBodyContents(XmlDictionaryWriter).
En la tabla siguiente se muestra cómo se comporta WCF para diferentes combinaciones de creación y consumo de mensajes.
Mensaje creado con | Mensaje consumido con | Comportamiento de WCF |
---|---|---|
XmlBodyWriter | XmlDictionaryWriter | Se admite la transmisión por secuencias de valor de nodo . WCF canaliza los dos escritores juntos para habilitar el streaming. XmlBodyWriter y XmlDictionaryWriter deben admitir el streaming de valores de nodo para que se produzca. |
XmlBodyWriter | XmlReader | Se admite el streaming de nodo . WCF almacena internamente en búfer el objeto XmlReader. |
XmlReader | XmlDictionaryWriter | Se admite el streaming de nodo . WCF almacena internamente en búfer el Objeto XmlReader y vuelve a llamar a XmlDictionaryWriter. |
XmlReader | XmlReader | Se admite el streaming de nodo . WCF almacena internamente en búfer el objeto XmlReader. |
Compatibilidad con streaming en la biblioteca cliente de SAP
La biblioteca cliente de SAP no admite streaming. Por lo tanto, el adaptador de SAP no admite el streaming de valor de nodo de un extremo a otro.
Control interno de mensajes por el adaptador
El adaptador admite el streaming de la siguiente manera:
El adaptador consume el mensaje de solicitud SendIdDoc recibido del cliente mediante una implementación personalizada de XmlDictionaryWriter. Consume todos los demás mensajes recibidos del cliente mediante xmlReader.
El adaptador crea el mensaje de solicitud ReceiveIdoc que envía al cliente mediante una implementación personalizada de XmlBodyWriter. Crea todos los demás mensajes que envía al cliente mediante xmlReader.
Compatibilidad con streaming en el modelo de canal WCF
En la tabla siguiente se proporciona información detallada sobre cómo se admite el streaming en el modelo de canal WCF.
Operación | Streaming de nodos | streaming de Node-Value | Descripción |
---|---|---|---|
Operaciones RFC y BAPI salientes (desde el cliente al adaptador) | No compatible | No compatible | |
Operaciones tRFC salientes (desde el cliente al adaptador) | No compatible | No compatible | |
Operación de envío de IDOC (fuertemente tipada) | No compatible | No compatible | |
Operación de recepción de IDOC (fuertemente tipada) | Compatible | No compatible | |
Operación SendIdoc (cadena) | Compatible | Compatible | El adaptador usa xmlDictionaryWriter para consumir el mensaje de solicitud. Si el cliente crea el mensaje con bodyWriter, se produce un streaming de valor de nodo desde el cliente al adaptador. |
Operación ReceiveIdoc (cadena) | Compatible | Compatible | El adaptador usa bodyWriter para crear el mensaje de solicitud. Si el cliente consume el mensaje mediante xmlDictionaryWriter, se produce el streaming de valor de nodo desde el adaptador al cliente. |
Operaciones RFC entrantes | No compatible | No compatible | |
Operaciones de tRFC entrantes | No compatible | No compatible |
Para obtener información sobre cómo implementar el streaming de valores de nodo en el código para enviar y recibir IDOC de archivos planos (cadena) mediante las operaciones SendIdoc y ReceiveIdoc, consulte Stream Flat-File IDOC en SAP mediante el modelo de canal WCF.
Compatibilidad con streaming en el modelo de servicio WCF
La serialización y deserialización entre la representación XML de un mensaje y la representación de objeto de código administrado de ese mensaje requiere escribir y leer todo el mensaje en la memoria. Por este motivo, ni el streaming de nodo ni el streaming de valor de nodo se admiten desde el modelo de servicio WCF.
Compatibilidad con streaming en BizTalk Server
En la tabla siguiente se proporciona información detallada sobre cómo se admite el streaming en BizTalk Server.
Operación | Streaming de nodos | streaming de Node-Value | Descripción |
---|---|---|---|
Operaciones RFC y BAPI (desde el cliente al adaptador) | No compatible | No compatible | |
Operaciones tRFC (del cliente al adaptador) | No compatible | No compatible | |
Operación de envío de IDOC (fuertemente tipada) | No compatible | No compatible | |
Operación de recepción de IDOC (fuertemente tipada) | Compatible | No compatible | |
Operación SendIdoc (cadena) | Compatible | Compatible | El adaptador de WCF-Custom usa bodyWriter para crear el mensaje de solicitud, por lo que se admite el streaming de valor de nodo. |
Operación ReceiveIdoc (cadena) | Compatible | Compatible | El adaptador de WCF-Custom usa xmlDictionaryWriter para consumir el mensaje de solicitud, por lo que se admite el streaming de valor de nodo. |
Operaciones RFC entrantes | No compatible | No compatible | |
Operaciones de tRFC entrantes | No compatible | No compatible |