如何使用夥伴協調流程直接繫結的連接埠
合作夥伴協調流程直接系結埠提供透過埠進行協調流程間通訊的功能。 您可以建立兩種通訊模式:轉送合作夥伴協調流程直接系結和反向合作夥伴協調流程直接系結。 這兩種模式提供明確的協調流程之間通訊,這表示使用轉寄夥伴協調流程直接繫結時,會有預定的收件者協調流程,而使用反向夥伴協調流程直接繫結時,則有預定的傳送者協調流程。
您也可以執行下列其中一項動作,來設計隱含的夥伴協調流程直接繫結:
將接收者設定為 MessageBox 直接繫結連接埠,並建立接受來自特定傳送協調流程之訊息的篩選條件。
將傳送者設定為 MessageBox 直接繫結連接埠,並升級比對接收協調流程上之訂閱的屬性。
若要設定合作夥伴協調流程直接系結埠,請在 [埠設定精靈]中指定 [直接埠系結],然後選取 [從其他協調流程接收訊息]、在此協調流程中選取此埠,或在此協調流程中選取此通訊埠,視您是否在此埠上接收或傳送訊息而定。 然後,從 [合作夥伴協調流程上的埠] 下拉式清單中選取埠。 兩個連接埠的連接埠類型必須相同,這意味著訊息類型也必須相同。 此外,若要能夠直接系結至夥伴協調流程埠,埠類型的類型修飾詞必須是相同元件或公用內的協調流程內部,才能讓來自另一個元件的協調流程系結至該埠。 連接埠的極性必須相反。 例如,如果一端是傳送埠,另一端就必須是接收埠。
如需如何使用合作夥伴協調流程直接系結埠的範例,請參閱 上的 https://go.microsoft.com/fwlink/?LinkId=73703 SDK 範例「直接系結至協調流程」。
轉寄夥伴協調流程直接繫結
這是用於夥伴協調流程直接繫結的典型通訊模式。 此類型的轉寄夥伴協調流程繫結允許您讓多個傳送者繫結至相同的收件者。
若要設定轉寄夥伴協調流程直接繫結,請執行以下動作:
在 [協調流程 A] 中,選取協調流程工具箱中的 [埠 ] 圖形。 如此將啟動 [連接埠組態精靈]。
在 [ 埠屬性] 頁面上的 [ 名稱] 欄位中,輸入
MyReceivePort
。 按一下 [下一步]。在 [ 選取埠類型] 頁面上,選取 [建立新的埠類型]。 在 [ 埠類型名稱] 欄位中,輸入
MyPartnerPortType
。 按一下 [下一步]。在 [ 埠系結] 頁面上的 [ 通訊方向] 下拉式清單中,選取 [ 我一律會在此埠上接收訊息]。 在 [ 埠系結 ] 下拉式清單中,選取 [ 直接]。
選取 [若要接收來自其他協調流程的訊息],請在這裡選取此通訊埠,然後在 [ 合作夥伴協調流程上的埠 ] 下拉式清單中,選取 [OrchestrationA.MyReceivePort]。 按一下 [下一步]。
在 [ 正在完成埠精靈 ] 頁面上,按一下 [ 完成]。
在 [協調流程 B] 中,選取協調流程工具箱中的 [埠 ] 圖形。 如此將啟動 [連接埠組態精靈]。
在 [ 埠屬性] 頁面上的 [ 名稱] 欄位中,輸入
MySendPort
。 按一下 [下一步]。在 [選取連接埠類型] 頁面上,選取 [使用現有連接埠類型]。 在 [可用的埠類型]底下,選取 [MyPartnerPortType],然後按 [ 下一步]。
在 [ 埠系結] 頁面上的 [ 通訊方向] 下拉式清單中,選取 [我一律會在此埠上傳送訊息]。 在 [ 埠系結 ] 下拉式清單中,選取 [ 直接]。
選取 [若要將訊息傳送至其他協調流程],請在這裡選取此通訊埠,然後在 [ 合作夥伴協調流程上的埠 ] 下拉式清單中,選取 [OrchestrationA.MyReceivePort]。 按一下 [下一步]。
在 [ 正在完成埠精靈 ] 頁面上,按一下 [ 完成]。
注意
從傳送者協調流程到接收者協調流程之間會產生強式繫結。 因此,如果想要修改接收者協調流程,或者想要變更接收者協調流程的版本,您就必須更新傳送者夥伴協調流程直接繫結連接埠的設計階段組態。 不過,因為接收者協調流程對傳送者協調流程並無明確的認知,所以可以更新傳送者協調流程,而不會影響接收者協調流程。
在前面的組態中,協調流程 A 是收件者,而協調流程 B 是傳送者。 設定可讓協調流程 B 將訊息傳送至 OrchestrationA.MyReceivePort,並讓協調流程 A 接收傳送至 OrchestrationA.MyReceivePort的任何訊息。 此外,您還可以使用如同協調流程 B 的組態,將協調流程 C 加入成為第二個傳送者,而將協調流程 D 加入成為第三個傳送者。
反向夥伴協調流程直接繫結
這不是夥伴協調流程直接繫結使用的典型通訊模式。 在此模式中,繫結的方向與通訊的方向相反。 此類型的反向夥伴協調流程繫結允許您讓單一傳送者與多個接收者進行通訊。
注意
如果您要搭配反向夥伴協調流程直接繫結使用雙向連接埠類型,則必須設定接收篩選條件,確保只有其中一個收件者會取用訊息。 這是因為請求-回應連接埠只預期接收單一回應。 如果有多個收件者要取得訊息,則請求-回應連接埠會接受第一個回應,而所有的後續回應都將遭到擱置且不可繼續。 當您嘗試在這種情況下傳送訊息時,傳訊引擎會擲回例外狀況,並指出請求-回應連接埠有多個收件者。
若要設定反向夥伴協調流程直接繫結,請執行以下動作:
在 [協調流程 A] 中,選取協調流程工具箱中的 [埠 ] 圖形。 如此將啟動 [連接埠組態精靈]。
在 [ 埠屬性] 頁面上的 [ 名稱] 欄位中,輸入
MySendPort
。 按一下 [下一步]。在 [ 選取埠類型] 頁面上,選取 [建立新的埠類型]。 在 [ 埠類型名稱] 欄位中,輸入
MyPartnerPortType
。 按一下 [下一步]。在 [ 埠系結] 頁面上的 [ 通訊方向] 下拉式清單中,選取 [我一律會在此埠上傳送訊息]。 在 [ 埠系結 ] 下拉式清單中,選取 [ 直接]。
選取 [若要將訊息傳送至其他協調流程],請在這裡選取此通訊埠,然後在 [ 合作夥伴協調流程上的埠 ] 下拉式清單中,選取 [OrchestrationA.MySendPort]。 按一下 [下一步]。
在 [ 正在完成埠精靈 ] 頁面上,按一下 [ 完成]。
在 [協調流程 B] 中,選取協調流程工具箱中的 [埠 ] 圖形。 如此將啟動 [連接埠組態精靈]。
在 [ 埠屬性] 頁面上的 [ 名稱] 欄位中,輸入
MyReceivePort
。 按一下 [下一步]。在 [選取連接埠類型] 頁面上,選取 [使用現有連接埠類型]。 在 [可用的埠類型]底下,選取 [MyPartnerPortType],然後按 [ 下一步]。
在 [ 埠系結] 頁面上的 [ 通訊方向] 下拉式清單中,選取 [ 我一律會在此埠上接收訊息]。 在 [ 埠系結 ] 下拉式清單中,選取 [ 直接]。
選取 [若要接收來自其他協調流程的訊息],請在這裡選取此通訊埠,然後在 [ 合作夥伴協調流程上的埠 ] 下拉式清單中,選取 [OrchestrationA.MySendPort]。 按一下 [下一步]。
在 [ 正在完成埠精靈 ] 頁面上,按一下 [ 完成]。
注意
接收者協調流程會強式繫結至傳送者協調流程。 因此,如果想要修改接收者協調流程,或更新接收者協調流程的版本,您就必須更新傳送者的連接埠組態。 傳送者協調流程對接收者協調流程並無明確的認知,所以可以更新接收者協調流程,而不會影響傳送者協調流程。
在前面的組態中,協調流程 A 是傳送者,而協調流程 B 是收件者。 設定可讓協調流程 A 透過 OrchestrationA.MySendPort將訊息傳送至協調流程 B,並讓協調流程 B 接收 來自 OrchestrationA.MySendPort的訊息。 此外,您還可以使用如同協調流程 B 的組態,將協調流程 C 加入成為第二個收件者,而將協調流程 D 加入成為第三個收件者。