本頁是否能提供幫助?
您對此內容的意見反應十分重要。 請告訴我們您的想法。
其他意見反應?
剩餘 1500 個字元
路由和回覆動作:協調通訊協定不符的情況

路由和回覆動作:協調通訊協定不符的情況

更新日期: 2015年7月

通訊協定不符的情況來自於訊息傳送者和訊息接收者採用不同的訊息通訊協定。在包含 橋接器 的一般 BizTalk 服務 案例中,訊息傳送者會將訊息傳送至 橋接器。橋接器 在處理訊息後,會將其對外傳送至訊息接收者。這表示,在兩種狀況下,通訊協定不符的情況必須進行協調:

  • 首先是在訊息傳送至訊息接收者時。無論採用 XML 單向橋接器 還是 XML 要求-回覆橋接器,都是如此,因為在這兩種情況下,訊息都必須傳送至訊息接收者。這稱為路由動作

  • 其次是在接收自訊息接收者的回應訊息傳回給訊息傳送者時。只有採用 XML 要求-回覆橋接器 時才是如此,因為只有針對此 橋接器,才必須將回應傳回給訊息傳送者。這稱為回覆動作

路由和回覆動作都是以您在 [擴充] 階段中定義的屬性運作的。

我們將以假設案例,了解路由動作如何用來產生通訊協定不符的情況。依據此案例,必須要有一個 POX (純舊 XML)/REST 訊息透過 XML 單向橋接器 傳送至 WCF 服務 (預期 SOAP 訊息)。傳送至橋接器的訊息是簡單的 XML 裝載,不含標頭。另一方面,傳出至 WCF 服務的訊息必須已定義某些 SOAP 標頭。為了透過 橋接器 產生此通訊協定不符的情況,橋接器 的設定者使用路由動作,將某些相關 SOAP 訊息標頭 (例如Action, MessageID 等) 指派給傳出訊息。在 橋接器 設定並部署至 服務匯流排 後,POX 訊息即傳送至 橋接器。在處理訊息之後、但尚未將訊息路由至 WCF 服務之前,橋接器 的路由動作中指定的標頭會在訊息上加上戳記,然後傳送至 WCF 服務,因而協調通訊協定不符的情況。若要設定路由動作,請參閱The Routing Action

下表列出屬性值如何透過路由動作再 BizTalk 服務專案 的中繼步驟 (或目的地) 之間傳輸:

 

來源/目的地 送至其他 橋接器 送至佇列和主題 送至轉送或外部服務端點

從 橋接器

屬性無法以原狀 (金鑰-值配對) 傳輸,但可藉由將其指派為傳出訊息標頭的值 (HTTP 或 SOAP) 來傳送。

屬性能夠以原狀 (金鑰-值配對) 傳輸,也可用傳出訊息標頭值的形式來傳送。

屬性無法以原狀 (金鑰-值配對) 傳輸,但可藉由將其指派為傳出訊息標頭的值 (HTTP 或 SOAP) 來傳送。但是,橋接器設計人員必須確定相關標頭 (可能由轉送或外部服務所使用) 可以傳送。

回覆動作與路由動作極為相似。唯一的差異在於,路由動作是在訊息傳送至預定訊息接收者時適用 (在 XML 單向橋接器 或 XML 要求-回覆橋接器 中),而回覆動作則是在來自於訊息接收者的回應訊息必須傳回給訊息傳送者時適用 (僅在使用 XML 要求-回覆橋接器 時適用)。

若要深入了解這一點,您可以直接反向操作用於路由動作的案例。請設想訊息傳送者必須將 SOAP 訊息傳送至預期 POX/REST 訊息的 REST 服務 (透過 XML 要求-回覆橋接器)。傳送至 橋接器 的訊息為具有所有相關標頭的 SOAP 訊息。橋接器 在將訊息路由至 REST 服務之前,會隱含地去除訊息標頭,而僅將 XML 裝載傳送至 REST 服務。REST 服務的回應也是 POX 訊息。在 POX 回應訊息傳回至訊息傳送者之前,回覆動作會在 POX 訊息的訊息標頭上加上戳記,再將 SOAP 封裝的訊息傳送至訊息傳送者。若要設定回覆動作,請參閱 Create an XML Request-Reply Bridge

下表列出屬性值如何透過回覆動作從 橋接器 傳回至訊息傳送端用戶端:

 

來源/目的地 送至其他 橋接器 送至轉送或外部服務端點

從 橋接器

屬性無法以原狀 (金鑰-值配對) 傳輸,但可藉由將其指派為傳出訊息標頭的值 (HTTP 或 SOAP) 來傳送。

屬性無法以原狀 (金鑰-值配對) 傳輸,但可藉由將其指派為傳出訊息標頭的值 (HTTP 或 SOAP) 來傳送。但是,橋接器設計人員必須確定相關標頭 (可能由轉送或外部服務所使用) 可以傳送。

雖然您可以使用路由和回覆動作來設定訊息標頭屬性,但您必須考量下列要點:

  • 在使用 ToReplyTo SOAP 訊息標頭時,您必須謹慎小心。這是因為基礎繫結 (例如 WCF 繫結) 可能會覆寫這些訊息標頭。因此,如果使用這些訊息的應用程式預期您透過路由或回覆動作設定的訊息標頭,則可能導致非預期的錯誤。

  • 在將訊息路由至使用 basicHttpBindingbasicHttpRelayBinding 的端點時,不可設定 MessageID SOAP 標頭。

另請參閱

顯示:
© 2015 Microsoft