共用方式為


串流和 SAP 配接器

Microsoft BizTalk Adapter for mySAP Business Suite 支援本身與用戶端應用程式之間的訊息串流。 叫用 SAP 配接器作業,並交換 SOAP 訊息來傳迴響應。 SOAP 訊息本文是由 XML 節點所組成。

配接器支援兩種訊息串流:

  • 節點串流。 在節點串流中,訊息可以在用戶端與配接器之間一次串流處理節點。 這表示,節點的整個值會讀取到緩衝區,然後傳送給接收者。

  • 節點值串流。 在節點值串流中,節點的實際值可以在用戶端與配接器之間的區塊中串流處理。 使用 SendIdoc 或 ReceiveIdoc 作業來傳送或接收大型IDOC 時,節點值串流很有用。 這是因為整個 IDOC 都包含在單一節點中。 (與強型別傳送或接收作業相反,IDOC 資料會分成許多節點) 。

重要

只有配接器與用戶端應用程式之間才支援節點值串流。 SAP 配接器不支援使用 SAP 系統的端對端節點值串流。 這是因為 SAP 用戶端程式庫不支援此功能。

這兩種串流模式都依賴對 WCF 中訊息的節點串流和節點值串流的支援。 因此,串流會緊密系結至配接器和用戶端應用程式建立和取用訊息的方式。 其中一個結果是在所有程式設計模型中,對訊息串流的支援並不相同。

本主題中的各節提供:

  • 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,以取得XmlDictionaryWriter

    下表顯示 WCF 如何針對建立和取用訊息的不同組合運作。

使用 建立的訊息 使用 的訊息 WCF 行為
XmlBodyWriter XmlDictionaryWriter 支援節點值串流。 WCF 會使用管線將兩個寫入器一起傳送,以啟用串流。 XmlBodyWriterXmlDictionaryWriter都必須支援節點/值串流,才能發生。
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 串流 Description
從用戶端到配接器) 的輸出 RFC 和 BAPI 作業 ( 不支援 不支援
從用戶端到配接器) (輸出 tRFC 作業 不支援 不支援
IDOC 傳送作業 (強型別) 不支援 不支援
IDOC 接收作業 (強型別) 支援 不支援
sendIdoc 作業 (字串) 支援 支援 配接器會使用 XmlDictionaryWriter 來取用要求訊息。 如果用戶端使用 BodyWriter建立訊息,就會發生從用戶端串流到配接器的節點值。
ReceiveIdoc 作業 (字串) 支援 支援 配接器會使用 BodyWriter 來建立要求訊息。 如果用戶端使用 XmlDictionaryWriter取用訊息,就會發生從配接器到用戶端的節點值串流。
輸入 RFC 作業 不支援 不支援
輸入 tRFC 作業 不支援 不支援

如需如何在程式碼中實作節點值串流,以使用 SendIdoc 和 ReceiveIdoc 作業傳送和接收一般檔案 (字串) IDOC 的詳細資訊,請參閱 使用 WCF 通道模型在 SAP 中串流 Flat-File IDOC

WCF 服務模型中的串流支援

在訊息的 XML 表示和該訊息的 Managed 程式碼物件表示之間序列化和還原序列化,需要將整個訊息寫入和讀取到記憶體中。 因此,WCF 服務模型不支援節點串流和節點值串流。

BizTalk Server中的串流支援

下表提供BizTalk Server中如何支援串流的詳細資訊。

作業 節點串流 Node-Value 串流 Description
從用戶端到配接器) 的 RFC 和 BAPI 作業 ( 不支援 不支援
tRFC 作業 (從用戶端到配接器) 不支援 不支援
IDOC 傳送作業 (強型別) 不支援 不支援
IDOC 接收作業 (強型別) 支援 不支援
sendIdoc 作業 (字串) 支援 支援 WCF-Custom 配接器會使用 BodyWriter 來建立要求訊息,因此支援節點值串流。
ReceiveIdoc 作業 (字串) 支援 支援 WCF-Custom 配接器會使用 XmlDictionaryWriter 來取用要求訊息,因此支援節點值串流。
輸入 RFC 作業 不支援 不支援
輸入 tRFC 作業 不支援 不支援

另請參閱

開發您的 SAP 應用程式