ストリーミングと SAP アダプター
Microsoft BizTalk Adapter for mySAP Business Suite では、それ自体とクライアント アプリケーションの間のメッセージ ストリーミングがサポートされています。 SAP アダプター操作が呼び出されると、SOAP メッセージを交換することによって応答が返されます。 SOAP メッセージ本文は XML ノードで構成されます。
アダプターでサポートされているメッセージ ストリーミングには、次の 2 種類があります。
ノード ストリーミング。 ノード ストリーミングでは、クライアントとアダプターの間で一度に 1 つのノードにメッセージをストリーミングできます。 つまり、ノードの値全体がバッファーに読み取られ、受信側に送信されます。
ノード値ストリーミング。 ノード値ストリーミングでは、ノードの実際の値をクライアントとアダプターの間でチャンク単位でストリーミングできます。 ノード値ストリーミングは、SendIdoc 操作または ReceiveIdoc 操作を使用して大規模な IDOC を送受信する場合に便利です。 これは、IDOC 全体が 1 つのノードに含まれているためです。 (IDOC データが多数のノードに分割される、厳密に型指定された送受信操作とは対照的です)。
重要
ノード値ストリーミングは、アダプターとクライアント アプリケーションの間でのみサポートされます。 SAP アダプターは、SAP システムを使用したエンドツーエンドのノード値ストリーミングをサポートしていません。 これは、この機能が SAP クライアント ライブラリでサポートされていないためです。
どちらのストリーミング モードも、WCF のメッセージでのノード ストリーミングとノード値ストリーミングのサポートに依存しています。 このため、ストリーミングは、アダプターとクライアント アプリケーションの両方によってメッセージがどのように作成および使用されるかに密接に関連付けられています。 この結果の 1 つは、メッセージ ストリーミングのサポートがすべてのプログラミング モデルで同じではないということです。
このトピックのセクションでは、次の情報を提供します。
WCF でのメッセージ ストリーミングのサポート方法とアダプターによるメッセージ ストリーミングの実装方法に関する基本的な背景情報。
各プログラミング モデルでアダプターを使用する場合のメッセージ ストリーミングのサポート方法に関する情報。
ストリーミングの基礎
SAP アダプターによって実装されるストリーミングのサポートは、次の組み合わせです。
WCF でのメッセージ ストリーミングのサポート。
SAP クライアント ライブラリでのストリーミング のサポート。
アダプターによってメッセージが内部的に作成および使用される方法。
WCF でのメッセージ ストリーミングのサポート
WCF がメッセージのストリーミングをサポートする方法は、メッセージの作成方法とメッセージの使用方法の両方によって異なります。
WCF メッセージは、System.ServiceModel.Channels.Message の静的 Create メソッドを使用して作成されます。 このメソッドには、メッセージ本文を渡すさまざまな方法をサポートするいくつかのオーバーロードがあります。 WCF メッセージは、次を使用してメッセージ本文を渡すことによって作成できます。
System.Xml。XmlReader、または
System.ServiceModel.Channels.BodyWriter。
WCF メッセージは、 を使用して使用できます。
Message.GetReaderAtBodyContents()を呼び出して XmlReader を指定するか、または
Message.WriteBodyContents(XmlDictionaryWriter) を呼び出すことによる XmlDictionaryWriter。
次の表は、メッセージの作成と使用のさまざまな組み合わせに対する WCF の動作を示しています。
で作成されたメッセージ | で使用されるメッセージ | WCF の動作 |
---|---|---|
XmlBodyWriter | XmlDictionaryWriter | ノード値ストリーミング がサポートされています。 WCF では、2 つのライターをパイプしてストリーミングを有効にします。 XmlBodyWriter と XmlDictionaryWriter の両方で、ノード値ストリーミングをサポートする必要があります。 |
XmlBodyWriter | XmlReader | ノード ストリーミング がサポートされています。 WCF は XmlReader を内部的にバッファー処理します。 |
XmlReader | XmlDictionaryWriter | ノード ストリーミング がサポートされています。 WCF は XmlReader を内部的にバッファー処理し、 XmlDictionaryWriter に呼び出し戻します。 |
XmlReader | XmlReader | ノード ストリーミング がサポートされています。 WCF は XmlReader を内部的にバッファー処理します。 |
SAP クライアント ライブラリでのストリーミング サポート
SAP クライアント ライブラリはストリーミングをサポートしていません。 そのため、エンド ツー エンドのノード値ストリーミングは SAP アダプターではサポートされていません。
アダプターによる内部メッセージ処理
アダプターは、次の方法でストリーミングをサポートします。
アダプターは、 XmlDictionaryWriter のカスタム実装を使用して、クライアントから受信した SendIdDoc 要求メッセージを使用します。 XmlReader を使用して、クライアントから受信した他のすべてのメッセージを使用します。
アダプターは、 XmlBodyWriter のカスタム実装を使用して、クライアントに送信する ReceiveIdoc 要求メッセージを作成します。 XmlReader を使用してクライアントに送信する他のすべてのメッセージが作成されます。
WCF チャネル モデルでのストリーミング サポート
次の表は、WCF チャネル モデルでのストリーミングのサポート方法に関する詳細情報を示しています。
操作 | ノード ストリーミング | Node-Value ストリーミング | 説明 |
---|---|---|---|
送信 RFC および BAPI 操作 (クライアントからアダプターへ) | サポートされていません | サポートされていません | |
送信 tRFC 操作 (クライアントからアダプターへ) | サポートされていません | サポートされていません | |
IDOC 送信操作 (厳密に型指定) | サポートされていません | サポートされていません | |
IDOC 受信操作 (厳密に型指定) | サポートされています | サポートされていません | |
SendIdoc 操作 (文字列) | サポートされています | サポートされています | アダプターは XmlDictionaryWriter を使用して要求メッセージを使用します。 クライアントが BodyWriter を使用してメッセージを作成すると、クライアントからアダプターへのノード値ストリーミングが行われます。 |
ReceiveIdoc 操作 (文字列) | サポートされています | サポートされています | アダプターは BodyWriter を使用して要求メッセージを作成します。 クライアントが XmlDictionaryWriter を使用してメッセージを使用する場合、アダプターからクライアントへのノード値ストリーミングが発生します。 |
受信 RFC 操作 | サポートされていません | サポートされていません | |
受信 tRFC 操作 | サポートされていません | サポートされていません |
SendIdoc 操作と ReceiveIdoc 操作を使用してフラット ファイル (文字列) IDOC を送受信するノード値ストリーミングをコードに実装する方法については、「 WCF チャネル モデルを使用して SAP で IDOC Flat-File ストリーム配信する」を参照してください。
WCF サービス モデルでのストリーミング サポート
メッセージの XML 表現と、そのメッセージのマネージ コード オブジェクト表現をシリアル化および逆シリアル化するには、メッセージ全体をメモリに書き込んで読み取る必要があります。 このため、WCF サービス モデルでは、ノード ストリーミングもノード値ストリーミングもサポートされていません。
BizTalk Serverでのストリーミング サポート
次の表に、BizTalk Serverでのストリーミングのサポート方法に関する詳細情報を示します。
操作 | ノード ストリーミング | Node-Value ストリーミング | 説明 |
---|---|---|---|
RFC および BAPI 操作 (クライアントからアダプターへ) | サポートされていません | サポートされていません | |
tRFC 操作 (クライアントからアダプターへ) | サポートされていません | サポートされていません | |
IDOC 送信操作 (厳密に型指定) | サポートされていません | サポートされていません | |
IDOC 受信操作 (厳密に型指定) | サポートされています | サポートされていません | |
SendIdoc 操作 (文字列) | サポートされています | サポートされています | WCF-Custom アダプターは BodyWriter を使用して要求メッセージを作成するため、ノード値ストリーミングがサポートされます。 |
ReceiveIdoc 操作 (文字列) | サポートされています | サポートされています | WCF-Custom アダプターは XmlDictionaryWriter を使用して要求メッセージを使用するため、ノード値ストリーミングがサポートされます。 |
受信 RFC 操作 | サポートされていません | サポートされていません | |
受信 tRFC 操作 | サポートされていません | サポートされていません |