Streaming und der SAP-Adapter
Der Microsoft BizTalk-Adapter für mySAP Business Suite unterstützt das Nachrichtenstreaming zwischen sich selbst und einer Clientanwendung. Mit dem SAP-Adapter werden Vorgänge aufgerufen, und Antworten werden zurückgegeben, indem SOAP-Nachrichten ausgetauscht werden. Ein SOAP-Nachrichtentext besteht aus XML-Knoten.
Es gibt zwei Arten von Nachrichtenstreaming, die vom Adapter unterstützt werden:
Knotenstreaming. Beim Knotenstreaming kann eine Nachricht gleichzeitig zwischen dem Client und dem Adapter gestreamt werden. Dies bedeutet, dass der gesamte Wert eines Knotens in einen Puffer eingelesen und dann an den Empfänger gesendet wird.
Knotenwertstreaming. Beim Knotenwertstreaming kann der tatsächliche Wert des Knotens in Blöcken zwischen dem Client und dem Adapter gestreamt werden. Das Streaming von Knotenwerten ist nützlich für das Senden oder Empfangen großer IDOCs mithilfe der SendIdoc- oder ReceiveIdoc-Vorgänge. Dies liegt daran, dass das gesamte IDOC in einem einzelnen Knoten enthalten ist. (Im Gegensatz zu einem stark typisierten Sende- oder Empfangsvorgang, bei dem die IDOC-Daten in viele Knoten unterteilt werden.
Wichtig
Das Streaming von Knotenwerten wird nur zwischen dem Adapter und einer Clientanwendung unterstützt. Der SAP-Adapter unterstützt kein End-to-End-Node-Wert-Streaming mit dem SAP-System. Dies liegt daran, dass diese Funktionalität von der SAP-Clientbibliothek nicht unterstützt wird.
Beide Streamingmodi basieren auf der Unterstützung für das Knotenstreaming und das Knotenwertstreaming für Nachrichten in WCF. Aus diesem Grund ist das Streaming eng daran gebunden, wie Nachrichten sowohl vom Adapter als auch von einer Clientanwendung erstellt und genutzt werden. Ein Ergebnis davon ist, dass die Unterstützung für das Nachrichtenstreaming nicht für alle Programmiermodelle gleich ist.
Die Abschnitte in diesem Thema enthalten Folgendes:
Grundlegende Hintergrundinformationen dazu, wie das Nachrichtenstreaming in WCF unterstützt wird und wie es vom Adapter implementiert wird.
Informationen dazu, wie Nachrichtenstreaming unterstützt wird, wenn Sie den Adapter in jedem Programmiermodell verwenden.
Streaminggrundlagen
Die Unterstützung für das vom SAP-Adapter implementierte Streaming besteht aus folgenden Kombinationen:
Unterstützung des Nachrichtenstreamings in WCF.
Streamingunterstützung in der SAP-Clientbibliothek.
Die Art und Weise, wie Nachrichten intern vom Adapter erstellt und genutzt werden.
Unterstützung für Nachrichtenstreaming in WCF
Wie WCF das Streaming für eine Nachricht unterstützt, hängt sowohl davon ab, wie die Nachricht erstellt wird als auch davon, wie die Nachricht genutzt wird.
Eine WCF-Nachricht wird mithilfe der statischen Create-Methode von System.ServiceModel.Channels.Message erstellt. Diese Methode verfügt über mehrere Überladungen, die verschiedene Möglichkeiten unterstützen, den Nachrichtentext zu übergeben. Eine WCF-Nachricht kann erstellt werden, indem Sie den Nachrichtentext mit übergeben:
Ein System.Xml. XmlReader oder
Ein System.ServiceModel.Channels.BodyWriter.
Eine WCF-Nachricht kann mit verwendet werden
Ein XmlReader durch Aufrufen von Message.GetReaderAtBodyContents() oder
Ein XmlDictionaryWriter durch Aufrufen von Message.WriteBodyContents(XmlDictionaryWriter).
In der folgenden Tabelle wird das Verhalten von WCF für verschiedene Kombinationen des Erstellens und Verwendens von Nachrichten veranschaulicht.
Nachricht erstellt mit | Mit verarbeitete Nachricht | WCF-Verhalten |
---|---|---|
XmlBodyWriter | XmlDictionaryWriter | Das Knotenwertstreaming wird unterstützt. WCF leitet die beiden Writer zusammen, um das Streaming zu ermöglichen. Sowohl der XmlBodyWriter als auch der XmlDictionaryWriter müssen knotenwertbasiertes Streaming unterstützen, damit dies erfolgt. |
XmlBodyWriter | XmlReader | Knotenstreaming wird unterstützt. WCF puffert den XmlReader intern. |
XmlReader | XmlDictionaryWriter | Knotenstreaming wird unterstützt. WCF puffert den XmlReader intern und ruft den XmlDictionaryWriter zurück. |
XmlReader | XmlReader | Knotenstreaming wird unterstützt. WCF puffert den XmlReader intern. |
Streamingunterstützung in der SAP-Clientbibliothek
Streaming wird von der SAP-Clientbibliothek nicht unterstützt. Daher wird das Streaming von End-to-End-Knotenwerten vom SAP-Adapter nicht unterstützt.
Interne Nachrichtenverarbeitung durch den Adapter
Der Adapter unterstützt das Streaming auf folgende Weise:
Der Adapter nutzt die Vom Client empfangene SendIdDoc-Anforderungsnachricht mithilfe einer benutzerdefinierten Implementierung von XmlDictionaryWriter. Es nutzt alle anderen Nachrichten, die vom Client mit einem XmlReader empfangen werden.
Der Adapter erstellt die ReceiveIdoc-Anforderungsnachricht, die er mithilfe einer benutzerdefinierten Implementierung von XmlBodyWriter an den Client sendet. Es erstellt alle anderen Nachrichten, die mit einem XmlReader an den Client gesendet werden.
Streamingunterstützung im WCF-Kanalmodell
Die folgende Tabelle enthält ausführliche Informationen zur Unterstützung des Streamings im WCF-Kanalmodell.
Vorgang | Knotenstreaming | Node-Value Streaming | BESCHREIBUNG |
---|---|---|---|
Ausgehende RFC- und BAPI-Vorgänge (vom Client zum Adapter) | Nicht unterstützt | Nicht unterstützt | |
Ausgehende tRFC-Vorgänge (vom Client zum Adapter) | Nicht unterstützt | Nicht unterstützt | |
IDOC-Sendevorgang (stark typisiert) | Nicht unterstützt | Nicht unterstützt | |
IDOC-Empfangsvorgang (stark typisiert) | Unterstützt | Nicht unterstützt | |
SendIdoc-Vorgang (Zeichenfolge) | Unterstützt | Unterstützt | Der Adapter verwendet einen XmlDictionaryWriter , um die Anforderungsnachricht zu nutzen. Wenn der Client die Nachricht mit einem BodyWriter erstellt, erfolgt das Streaming des Knotenwerts vom Client zum Adapter. |
ReceiveIdoc-Vorgang (Zeichenfolge) | Unterstützt | Unterstützt | Der Adapter verwendet einen BodyWriter , um die Anforderungsnachricht zu erstellen. Wenn der Client die Nachricht mit einem XmlDictionaryWriter nutzt, erfolgt das Streaming des Knotenwerts vom Adapter zum Client. |
Eingehende RFC-Vorgänge | Nicht unterstützt | Nicht unterstützt | |
Eingehende tRFC-Vorgänge | Nicht unterstützt | Nicht unterstützt |
Informationen zum Implementieren von Knoten-Wert-Streaming in Ihrem Code zum Senden und Empfangen von Flatfile-IDOCs (Zeichenfolgen) mithilfe der SendIdoc- und ReceiveIdoc-Vorgänge finden Sie unter Stream Flat-File IDOCs in SAP mithilfe des WCF-Kanalmodells.
Streamingunterstützung im WCF-Dienstmodell
Zum Serialisieren und Deserialisieren zwischen der XML-Darstellung einer Nachricht und der Darstellung des verwalteten Codeobjekts dieser Nachricht muss die gesamte Nachricht geschrieben und in den Arbeitsspeicher gelesen werden. Aus diesem Grund wird weder das Knotenstreaming noch das Knotenwertstreaming aus dem WCF-Dienstmodell unterstützt.
Streamingunterstützung in BizTalk Server
Die folgende Tabelle enthält ausführliche Informationen dazu, wie Streaming in BizTalk Server unterstützt wird.
Vorgang | Knotenstreaming | Node-Value Streaming | BESCHREIBUNG |
---|---|---|---|
RFC- und BAPI-Vorgänge (vom Client zum Adapter) | Nicht unterstützt | Nicht unterstützt | |
tRFC-Vorgänge (vom Client zum Adapter) | Nicht unterstützt | Nicht unterstützt | |
IDOC-Sendevorgang (stark typisiert) | Nicht unterstützt | Nicht unterstützt | |
IDOC-Empfangsvorgang (stark typisiert) | Unterstützt | Nicht unterstützt | |
SendIdoc-Vorgang (Zeichenfolge) | Unterstützt | Unterstützt | Der WCF-Custom-Adapter verwendet einen BodyWriter zum Erstellen der Anforderungsnachricht, sodass das Knotenwertstreaming unterstützt wird. |
ReceiveIdoc-Vorgang (Zeichenfolge) | Unterstützt | Unterstützt | Der WCF-Custom-Adapter verwendet einen XmlDictionaryWriter , um die Anforderungsnachricht zu nutzen, sodass das Knotenwertstreaming unterstützt wird. |
Eingehende RFC-Vorgänge | Nicht unterstützt | Nicht unterstützt | |
Eingehende tRFC-Vorgänge | Nicht unterstützt | Nicht unterstützt |