Freigeben über


Streaming und SAP-Adapter

Der Microsoft BizTalk-Adapter für mySAP Business Suite unterstützt nachrichtenstreaming zwischen sich selbst und einer Clientanwendung. Mit dem SAP-Adapter werden Operationen aufgerufen, und Antworten werden durch den Austausch von SOAP-Nachrichten empfangen. Ein SOAP-Nachrichtentext besteht aus XML-Knoten.

Es gibt zwei Arten von Nachrichtenstreaming, die vom Adapter unterstützt werden:

  • Node Streaming. Beim Knotenstreaming kann eine Nachricht nacheinander von einem Knoten zum anderen zwischen dem Client und dem Adapter gestreamt werden. Dies bedeutet, dass der gesamte Wert eines Knotens in einen Puffer gelesen und dann an den Empfänger gesendet wird.

  • Node-Value-Streaming. Im Knotenwert-Streaming kann der tatsächliche Wert des Knotens in Blöcken zwischen dem Client und dem Adapter gestreamt werden. Node-Value Streaming ist nützlich für das Senden oder Empfangen großer IDOCs mithilfe von SendIdoc- oder ReceiveIdoc-Vorgängen. Dies liegt daran, dass das gesamte IDOC in einem einzigen Knoten enthalten ist. (Im Gegensatz zu einem stark typierten Sende- oder Empfangsvorgang, bei dem die IDOC-Daten in viele Knoten unterteilt sind).

Von Bedeutung

Das Streaming von Knotenwerten wird nur zwischen dem Adapter und einer Clientanwendung unterstützt. Der SAP-Adapter unterstützt kein End-to-End-Node-Value-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 des Knotenstreamings und des Node-Wert-Streamings für Nachrichten in WCF. Aus diesem Grund ist Streaming eng mit der Erstellung und Nutzung von Nachrichten durch den Adapter und eine Clientanwendung verknüpft. Ein Ergebnis ist, dass die Unterstützung für Nachrichtenstreaming nicht für alle Programmiermodelle identisch ist.

Die Abschnitte in diesem Thema enthalten:

  • Grundlegende Hintergrundinformationen dazu, wie 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.

Grundlagen des Streamings

Die Vom SAP-Adapter implementierte Unterstützung für Streaming ist eine Kombination von:

  • Unterstützung für Nachrichtenstreaming 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 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 von Funktionen, die verschiedene Möglichkeiten zum Übergeben des Nachrichtentexts ermöglichen. Eine WCF-Nachricht kann durch Übergeben des Nachrichtentexts erstellt werden:

    • Ein System.Xml.XmlReader oder

    • Ein System.ServiceModel.Channels.BodyWriter.

  • Eine WCF-Nachricht kann mithilfe von bestimmten Methoden oder Konfigurationen verarbeitet werden.

    • XmlReader durch Aufrufen von Message.GetReaderAtBodyContents(), oder

    • Ein XmlDictionaryWriter durch Aufrufen von Message.WriteBodyContents(XmlDictionaryWriter).

    Die folgende Tabelle zeigt, wie WCF sich für verschiedene Kombinationen zum Erstellen und Verwenden von Nachrichten verhält.

Nachricht erstellt mit Mit der Nachricht verbrauchtes Element WCF-Verhalten
XmlBodyWriter XmlDictionaryWriter Node-Value-Streaming wird unterstützt. WCF rohrt die beiden Autoren zusammen, um Streaming zu ermöglichen. Sowohl der XmlBodyWriter als auch der XmlDictionaryWriter müssen knotenwertbasiertes Streaming unterstützen, damit es eintritt.
XmlBodyWriter XmlReader Das Knotenstreaming wird unterstützt. WCF puffert den XmlReader intern.
XmlReader XmlDictionaryWriter Das Knotenstreaming wird unterstützt. WCF puffert XmlReader intern und greift auf XmlDictionaryWriter zurück.
XmlReader XmlReader Das Knotenstreaming wird unterstützt. WCF puffert den XmlReader intern.

Streamingunterstützung in der SAP-Clientbibliothek

Die SAP-Clientbibliothek unterstützt kein Streaming. Daher wird das End-to-End-Node-Value-Streaming vom SAP-Adapter nicht unterstützt.

Interne Nachrichtenverarbeitung durch den Adapter

Der Adapter unterstützt streaming auf folgende Weise:

  • Der Adapter verarbeitet die vom Client empfangene SendIdDoc-Anforderungsnachricht mithilfe einer benutzerdefinierten Implementierung von XmlDictionaryWriter. Es verwendet alle anderen Nachrichten, die vom Client mit einem XmlReader empfangen wurden.

  • Der Adapter erstellt die ReceiveIdoc-Anforderungsnachricht, die sie mithilfe einer benutzerdefinierten Implementierung von XmlBodyWriter an den Client sendet. Er erstellt alle anderen Nachrichten, die er mithilfe eines XmlReader an den Client sendet.

Streamingunterstützung im WCF-Kanalmodell

Die folgende Tabelle enthält detaillierte Informationen dazu, wie Streaming im WCF-Kanalmodell unterstützt wird.

Vorgang Node-Streaming Node-Value Streaming BESCHREIBUNG
Ausgehende RFC- und BAPI-Vorgänge (vom Client bis 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 typiert) Nicht unterstützt Nicht unterstützt
IDOC-Empfangsvorgang (stark typiert) Unterstützt Nicht unterstützt
SendIdoc-Vorgang (Zeichenfolge) Unterstützt Unterstützt Der Adapter verwendet einen XmlDictionaryWriter, um die Anforderungsnachricht zu verarbeiten. Wenn der Client die Nachricht mit einem BodyWriter erstellt, tritt ein Knotenwertstreaming vom Client auf den Adapter auf.
ReceiveIdoc-Vorgang (Zeichenfolge) Unterstützt Unterstützt Der Adapter verwendet einen BodyWriter zum Erstellen der Anforderungsnachricht. Wenn der Client die Nachricht mit einem XmlDictionaryWriter verwendet, findet ein Streaming der Knotendaten vom Adapter zum Client statt.
Eingehende RFC-Vorgänge Nicht unterstützt Nicht unterstützt
Eingehende tRFC-Vorgänge Nicht unterstützt Nicht unterstützt

Informationen zum Implementieren von Node-Value-Streaming in Ihrem Code zum Senden und Empfangen von Flat file (string) IDOCs 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

Die Serialisierung und Deserialisierung zwischen der XML-Darstellung einer Nachricht und der Objektdarstellung des verwalteten Codes dieser Nachricht erfordert das Schreiben und Lesen der gesamten Nachricht in den Arbeitsspeicher. Aus diesem Grund werden weder Knotenstreaming noch Node-Wert-Streaming vom WCF-Dienstmodell unterstützt.

Streamingunterstützung in BizTalk Server

Die folgende Tabelle enthält detaillierte Informationen dazu, wie Streaming in BizTalk Server unterstützt wird.

Vorgang Node-Streaming 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 typiert) Nicht unterstützt Nicht unterstützt
IDOC-Empfangsvorgang (stark typiert) 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 Streaming mit Knotenwerten unterstützt wird.
ReceiveIdoc-Vorgang (Zeichenfolge) Unterstützt Unterstützt Der WCF-Custom-Adapter verwendet einen XmlDictionaryWriter, um die Anforderungsnachricht zu verarbeiten, wobei das Streaming von Knotenwerten unterstützt wird.
Eingehende RFC-Vorgänge Nicht unterstützt Nicht unterstützt
Eingehende tRFC-Vorgänge Nicht unterstützt Nicht unterstützt

Siehe auch

Entwickeln Ihrer SAP-Anwendungen