如何將協調流程對應至 Web 服務
一個協調流程可以具有多個接收埠。 使用 [BizTalk Web 服務發佈精靈],即可選取要發佈為 Web 服務的接收埠。 此精靈可為每個接收埠建立一個 Web 服務 (.asmx 檔案)。 如果所有的接收埠都屬於相同的接收埠類型 (「單向」或「要求/回應」),此精靈也可為所有的接收埠建立單一的 Web 服務。 作業變成函式呼叫。 接收埠中的每個作業都會變成 Web 方法。 要求作業變成輸入參數。 回應作業變成傳回型別。
如果要求和回應作業是相同的 Web 訊息類型,則輸入參數會變成 ref ,而傳回類型為 void。 ASP.NET Web 用戶端可能會合併相同型別的 in 和 out 參數,以變更 Web 方法簽章。 例如,ASP.NET Web 用戶端可能會將 BizTalk Web 方法從 字串 myService (字串) 元件 變更為 void myService (ref 字串元件) 。
作業訊息類型可定義 Web 方法簽章。 每個訊息類型部分都是 Web 方法中的參數。
訊息類型部分名稱和目標命名空間
具有指定 XmlRootAttribute 的檔架構和使用者定義類別是已定義目標命名空間的訊息類型元件。 EDI 架構、未指定 XmlRootAttribute 的使用者定義類別,以及內建類型,例如 System.String 是沒有定義目標命名空間的訊息類型元件。
如果訊息類型部分名稱有 | 使用的參數名稱 |
---|---|
定義的目標命名空間 | 根項目名稱 |
沒有定義的目標命名空間 | 訊息類型部分名稱 |
注意
在回應訊息使用 multipart 訊息類型時,[BizTalk Web 服務發佈精靈] 會使用第一個訊息部分做為傳回值,並會使用其餘的訊息部分做為 out 參數。
具有多重作業的協調流程
如果您的協調流程具有多重作業,此協調流程應該設計為使用一個接收埠,而非多個接收埠。 這種設計可防止「BizTalk Web 服務發佈精靈」建立多個 Web 服務 (.asmx) 檔案,而只在所有的作業都具有相同的呼叫模式 (全都是單向作業,或者全都是要求-回應作業) 情況下運作。 單一的接收埠不能同時包含單向和要求/回應作業。
注意
[BizTalk Web 服務發佈精靈] 會顯示公用的接收埠。 公用的接收埠屬於具有公用型別修飾詞的連接埠類型。 您只能將公用連接埠發佈為 Web 服務。 預設的連接埠類型為「內部」。
注意
如果您的接收埠定義為單向,則 Web 方法回應類型為 void ,而且不會傳回任何資訊給 Web 用戶端。 SOAP 配接器或協調流程所擲回的例外狀況,都不會傳回到 Web 用戶端。
已發佈協調流程的 Web 服務命名慣例
BizTalk Web 服務發佈精靈會根據協調流程命名空間產生 Web 服務 (.asmx) 檔案名,後面接著底線 () ,後面接著 類型名稱,後面接著底線 (\) ,後面接著接收埠的名稱。 包含句號的任何部分都會以底線 (_) 取代。 Web 服務的名稱永遠都會加上該連接埠名稱。
下表顯示「BizTalk Web 服務發佈精靈」如何產生 Web 服務名稱。
協調流程與 Web 連接埠 | 產生的 Web 服務名稱 |
---|---|
具有一個 Web 連接埠的一個協調流程 | orchestration1_port1.asmx |
具有兩個 Web 連接埠的一個協調流程 | orchestration1_port1.asmx 和 orchestration1_port2.asmx |
各有一個 Web 連接埠的兩個協調流程 | orchestration1_port1.asmx 和 orchestration2_port2.asmx |