共用方式為


HOW TO:建立雙工合約

本主題說明的基本步驟可用來建立使用雙工 (雙向) 合約的方法。雙工合約可供用戶端與伺服器彼此各自進行通訊,方便任何一方初始化對另一方的呼叫。雙工合約是 Windows Communication Foundation (WCF) 服務可用的三種訊息模式之一。其他兩種訊息模式分別是單向和要求-回覆。雙工合約是由用戶端和伺服器之間的兩個單向合約組成,而且不需要相互關聯方法呼叫。當您的服務必須查詢用戶端以獲得更多資訊,或是明確地在用戶端上引發事件時,請使用這種合約。如需 建立雙工合約之用戶端應用程式的詳細資訊,請參閱 HOW TO:使用雙工合約存取服務。如需實用範例,請參閱Service Contract: Duplex

若要建立雙工合約

  1. 建立可組成雙工合約伺服器端的介面。

  2. ServiceContractAttribute 類別套用到介面。

  3. 在介面中宣告方法簽章。

  4. OperationContractAttribute 類別套用到每個必須是公用合約一部分的方法簽章上。

  5. 建立可定義作業集合 (供服務在用戶端上加以叫用) 的回呼介面。

  6. 在回呼介面中宣告方法簽章。

  7. OperationContractAttribute 類別套用到每個必須是公用合約一部分的方法簽章上。

  8. 將主要介面中的 CallbackContract 屬性設為回呼介面的型別,以將兩個介面連接至雙工合約。

若要在用戶端上呼叫方法

  1. 在服務的主要合約實作中,宣告回呼介面的變數。

  2. 將變數設為由 OperationContext 類別之 GetCallbackChannel 方法傳回的物件參考。

  3. 呼叫回呼介面定義的方法。

範例

下列程式碼範例會示範雙工通訊。服務合約包含可往前與往後的服務作業。用戶端合約包含可報告自身位置的服務作業。

  • 套用 ServiceContractAttributeOperationContractAttribute 屬性可自動產生 Web 服務描述語言 (WSDL) 格式的服務合約定義。
  • 使用 ServiceModel Metadata Utility Tool (Svcutil.exe) 來擷取用戶端的 WSDL 文件與 (選擇性) 程式碼及組態。
  • 您必須保護公開雙工服務的端點安全。當服務收到雙工訊息時,會查看該傳入訊息中的 ReplyTo 項目,以判斷傳送回覆的位置。如果通道不安全,那麼未受信任的用戶端可能會傳送惡意訊息,其中包含目標電腦的 ReplyTo,而導致該目標電腦發生阻絕服務。如果是一般的要求-回覆訊息,這根本不是問題,因為電腦會忽略 ReplyTo 並且在原始傳入訊息所用的通道上傳送回應。

請參閱

工作

HOW TO:使用雙工合約存取服務
HOW TO:定義 Windows Communication Foundation 服務合約

參考

ServiceContractAttribute
OperationContractAttribute

概念

設計與實作服務

其他資源

Service Contract: Duplex
Service Contract: Session