共用方式為


相互關聯概觀

相互關聯是將工作流程服務訊息彼此或應用程式實例狀態建立關聯的機制,例如回復初始要求,或特定訂單標識碼與訂單處理工作流程的保存狀態。 本主題提供相互關聯的概觀。 本節中的其他主題會針對每種相互關聯類型提供其他資訊。

相互關聯類型

相互關聯可以是通訊協定型或內容型。 通訊協定型相互關聯會使用訊息傳遞基礎結構所提供的數據來提供訊息之間的對應。 使用協議為基礎的關聯技術相互關聯的訊息,會利用記憶體中的物件(如 RequestContext)或傳輸協議提供的令牌來關聯彼此。 以內容為基礎的相互關聯會使用應用程式指定的數據相互關聯訊息。 使用基於內容的關聯進行關聯的訊息會透過訊息中一些由應用程式定義的數據相關聯,例如客戶號碼。

參與相互關聯的活動會使用 CorrelationHandle 來將傳訊活動系結在一起。 例如,一個用來呼叫服務的 Send 和一個用來接收回呼的後續 Receive,共用相同的 CorrelationHandle。 不論相互關聯是以內容為基礎或通訊協定為基礎,都使用這個基本模式。 您可以在每個活動上明確設定關聯控制權,或將這些活動包含在 CorrelationScope 活動中。 包含在 CorrelationScope 的活動其相互關聯的處理將由 CorrelationScope 管理,而且不需要明確設定 CorrelationHandleCorrelationScope範圍為要求-回應關聯以及一個額外的關聯類型提供CorrelationHandle管理。 使用 WorkflowServiceHost 裝載的工作流程服務具有與 CorrelationScope 活動相同的預設相互關聯管理。 此預設相互關聯管理通常表示,在許多情況下,在 CorrelationScope 或工作流程服務中的傳訊活動不需要其 CorrelationHandle 設定,除非有多個傳訊活動平行或重疊,例如兩個 Receive 活動平行,或兩個 Send 活動後接兩個 Receive 活動。 如需預設相互關聯的詳細資訊,請參閱本節主題中涵蓋每種特定類型的相互關聯。 如需傳訊活動的詳細資訊,請參閱傳訊活動和如何:使用傳訊活動建立工作流程服務

Protocol-Based 相互關聯

通訊協定為基礎的相互關聯利用傳輸機制來將訊息彼此關聯並與適當的實例相連。 某些系統提供的通訊協定相互關聯包括要求-回復相互關聯和以內容為基礎的相互關聯。 要求-回復相互關聯是用來將單一傳訊活動相互關聯,以形成雙向作業,例如 SendReceiveReply配對,或 ReceiveSendReply配對。 Visual Studio 工作流程設計工具也提供一組活動範本,可快速實作此模式。 以內容為基礎的相互關聯是以 .NET 內容交換通訊協議規格中所述的內容交換機制為基礎。 若要使用以內容為基礎的相互關聯,則必須在端點上使用內容型系結,例如 BasicHttpContextBindingWSHttpContextBindingNetTcpContextBinding

如需通訊協定相互關聯的詳細資訊,請參閱 Durable DuplexRequest-Reply。 如需使用 Visual Studio 工作流程設計工具活動範本的詳細資訊,請參閱 傳訊活動。 如需範例程式代碼,請參閱 NetContextExchangeCorrelation 範例。

以內容為基礎的相互關聯

內容型相互關聯會使用訊息中的某些資訊片段,將它與特定實例產生關聯。 不同於以通訊協定為基礎的相互關聯,內容型相互關聯需要應用程式作者明確指出每個相關訊息中可以找到此數據的位置。 使用內容型相互關聯的活動會使用 MessageQuerySet來指定此訊息數據。 在與不使用上下文繫結的服務進行通信時,基於內容的關聯非常有用,例如 BasicHttpContextBinding

另請參閱