Partager via


Streaming et adaptateur SAP

L’adaptateur Microsoft BizTalk pour mySAP Business Suite prend en charge le streaming de messages entre lui-même et une application cliente. Avec l’adaptateur SAP, les opérations sont appelées et les réponses sont retournées par l’échange de messages SOAP. Un corps de message SOAP est composé de nœuds XML.

Il existe deux types de diffusion de messages pris en charge par l’adaptateur :

  • Streaming de nœuds. Dans la diffusion en continu de nœuds, un message peut être diffusé en continu d’un nœud à la fois entre le client et l’adaptateur. Cela signifie que la valeur entière d’un nœud est lue dans une mémoire tampon, puis envoyée au récepteur.

  • Streaming de valeur de nœud. Dans la diffusion en continu de valeur de nœud, la valeur réelle du nœud peut être diffusée en blocs entre le client et l’adaptateur. La diffusion en continu de valeur de nœud est utile pour l’envoi ou la réception de grandes IDOC à l’aide des opérations SendIdoc ou ReceiveIdoc. Cela est dû au fait que l’ensemble de l’IDOC est contenu dans un seul nœud. (Par opposition à une opération d’envoi ou de réception fortement typée dans laquelle les données IDOC sont divisées en plusieurs nœuds).

Important

La diffusion en continu de valeur de nœud n’est prise en charge qu’entre l’adaptateur et une application cliente. L’adaptateur SAP ne prend pas en charge la diffusion en continu de valeur de nœud de bout en bout avec le système SAP. En effet, cette fonctionnalité n’est pas prise en charge par la bibliothèque cliente SAP.

Ces deux modes de diffusion en continu s’appuient sur la prise en charge de la diffusion en continu de nœuds et de la diffusion en continu de valeur de nœud sur les messages dans WCF. Pour cette raison, la diffusion en continu est étroitement liée à la façon dont les messages sont créés et consommés à la fois par l’adaptateur et par une application cliente. L’un des résultats est que la prise en charge de la diffusion en continu de messages n’est pas la même dans tous les modèles de programmation.

Les sections de cette rubrique fournissent les informations suivantes :

  • Informations générales fondamentales sur la façon dont la diffusion en continu de messages est prise en charge dans WCF et comment elle est implémentée par l’adaptateur.

  • Informations sur la façon dont la diffusion en continu des messages est prise en charge lorsque vous utilisez l’adaptateur dans chaque modèle de programmation.

Notions de base du streaming

La prise en charge de la diffusion en continu implémentée par l’adaptateur SAP est une combinaison des éléments suivants :

  • Prise en charge de la diffusion en continu de messages dans WCF.

  • Prise en charge de la diffusion en continu dans la bibliothèque cliente SAP.

  • La façon dont les messages sont créés et consommés en interne par l’adaptateur.

Prise en charge de la diffusion en continu de messages dans WCF

La façon dont WCF prend en charge la diffusion en continu sur un message dépend à la fois de la façon dont le message est créé et de la façon dont le message est consommé.

  • Un message WCF est créé à l’aide de la méthode create statique de System.ServiceModel.Channels.Message. Cette méthode comporte plusieurs surcharges qui prennent en charge différentes façons de transmettre le corps du message. Un message WCF peut être créé en passant le corps du message à l’aide de :

    • UnSystem.Xml. XmlReader, ou

    • System.ServiceModel.Channels.BodyWriter.

  • Un message WCF peut être consommé à l’aide de

    • XmlReader en appelant Message.GetReaderAtBodyContents() ou

    • XmlDictionaryWriter en appelant Message.WriteBodyContents(XmlDictionaryWriter).

    Le tableau suivant montre comment WCF se comporte pour différentes combinaisons de création et de consommation de messages.

Message créé avec Message consommé avec Comportement WCF
XmlBodyWriter Xmldictionarywriter La diffusion en continu de valeur de nœud est prise en charge. WCF canalise les deux enregistreurs ensemble pour activer la diffusion en continu. XmlBodyWriter et XmlDictionaryWriter doivent prendre en charge la diffusion en continu de valeur de nœud pour qu’elle se produise.
XmlBodyWriter XmlReader La diffusion en continu de nœuds est prise en charge. WCF met en mémoire tampon le XmlReader en interne.
XmlReader Xmldictionarywriter La diffusion en continu de nœuds est prise en charge. WCF met en mémoire tampon le XmlReader en interne et rappelle le XmlDictionaryWriter.
XmlReader XmlReader La diffusion en continu de nœuds est prise en charge. WCF met en mémoire tampon le XmlReader en interne.

Prise en charge de la diffusion en continu dans la bibliothèque cliente SAP

La bibliothèque cliente SAP ne prend pas en charge la diffusion en continu. Par conséquent, la diffusion en continu de la valeur de nœud de bout en bout n’est pas prise en charge par l’adaptateur SAP.

Gestion interne des messages par l’adaptateur

L’adaptateur prend en charge la diffusion en continu de la manière suivante :

  • L’adaptateur utilise le message de requête SendIdDoc reçu du client à l’aide d’une implémentation personnalisée de XmlDictionaryWriter. Il consomme tous les autres messages reçus du client à l’aide d’un XmlReader.

  • L’adaptateur crée le message de requête ReceiveIdoc qu’il envoie au client à l’aide d’une implémentation personnalisée de XmlBodyWriter. Il crée tous les autres messages qu’il envoie au client à l’aide d’un XmlReader.

Prise en charge de la diffusion en continu dans le modèle de canal WCF

Le tableau suivant fournit des informations détaillées sur la façon dont la diffusion en continu est prise en charge dans le modèle de canal WCF.

Opération Node Streaming streaming Node-Value Description
Opérations RFC et BAPI sortantes (du client à l’adaptateur) Non prise en charge Non prise en charge
Opérations tRFC sortantes (du client vers l’adaptateur) Non prise en charge Non prise en charge
Opération d’envoi IDOC (fortement typée) Non prise en charge Non prise en charge
Opération de réception IDOC (fortement typée) Pris en charge Non prise en charge
Opération SendIdoc (chaîne) Prise en charge Prise en charge L’adaptateur utilise un XmlDictionaryWriter pour consommer le message de demande. Si le client crée le message avec un BodyWriter, la diffusion en continu de valeur de nœud du client vers l’adaptateur se produit.
Opération ReceiveIdoc (chaîne) Prise en charge Pris en charge L’adaptateur utilise un BodyWriter pour créer le message de demande. Si le client consomme le message à l’aide d’un XmlDictionaryWriter, la diffusion en continu de valeur de nœud de l’adaptateur vers le client se produit.
Opérations RFC entrantes Non prise en charge Non prise en charge
Opérations tRFC entrantes Non prise en charge Non prise en charge

Pour plus d’informations sur la façon d’implémenter la diffusion en continu de valeur de nœud dans votre code pour envoyer et recevoir des fichiers plats (chaîne) AIDOC à l’aide des opérations SendIdoc et ReceiveIdoc, consultez Stream Flat-File IDOCs dans SAP à l’aide du modèle de canal WCF.

Prise en charge de la diffusion en continu dans le modèle de service WCF

La sérialisation et la désérialisation entre la représentation XML d’un message et la représentation par objet code managé de ce message nécessite l’écriture et la lecture de l’intégralité du message en mémoire. Pour cette raison, ni la diffusion en continu de nœuds ni la diffusion en continu de valeur de nœud ne sont prises en charge à partir du modèle de service WCF.

Prise en charge de la diffusion en continu dans BizTalk Server

Le tableau suivant fournit des informations détaillées sur la façon dont la diffusion en continu est prise en charge dans BizTalk Server.

Opération Node Streaming streaming Node-Value Description
Opérations RFC et BAPI (du client à l’adaptateur) Non prise en charge Non prise en charge
Opérations tRFC (du client à l’adaptateur) Non prise en charge Non prise en charge
Opération d’envoi IDOC (fortement typée) Non prise en charge Non prise en charge
Opération de réception IDOC (fortement typée) Pris en charge Non prise en charge
Opération SendIdoc (chaîne) Prise en charge Pris en charge L’adaptateur WCF-Custom utilise un BodyWriter pour créer le message de demande, de sorte que la diffusion en continu de valeur de nœud est prise en charge.
Opération ReceiveIdoc (chaîne) Pris en charge Pris en charge L’adaptateur WCF-Custom utilise un XmlDictionaryWriter pour consommer le message de demande, de sorte que la diffusion en continu de valeur de nœud est prise en charge.
Opérations RFC entrantes Non prise en charge Non prise en charge
Opérations tRFC entrantes Non prise en charge Non prise en charge

Voir aussi

Développer vos applications SAP