串流和 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 會使用管線將兩個寫入器一起傳送,以啟用串流。 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 串流 | 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 作業 | 不支援 | 不支援 |