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 |