共用方式為


設計與實施服務

本節說明如何定義及實作 WCF 合約。 服務合約會指定端點與外界通訊的內容。 在更具體的層面上,這是一種對特定訊息進行陳述的描述,這些訊息組織成基本訊息交換模式(MEPs),例如請求/回覆、單向和雙向。 如果服務合約是邏輯上相關的訊息交換集,服務作業就是單一訊息交換。 例如,作業 Hello 必須顯然接受一則訊息(因此呼叫端可以宣告問候語),而且可能或可能不會傳回訊息(視作業的禮貌而定)。

如需合約和其他核心 Windows Communication Foundation (WCF) 概念的詳細資訊,請參閱 基本 Windows Communication Foundation 概念。 本主題著重於瞭解服務合約。 如需如何建置使用服務合約來連線至服務之用戶端的詳細資訊,請參閱 WCF 用戶端概觀

概觀

本主題提供設計及實作 WCF 服務的高階概念方向。 子主題提供有關設計和實作細節的詳細資訊。 在設計和實作 WCF 應用程式之前,建議您:

  • 瞭解服務合約是什麼、運作方式,以及如何建立服務合約。

  • 瞭解合約會指出運行時間設定或裝載環境可能不支援的最低需求。

服務合約

服務合約規定以下事項:

  • 合約所公開的作業。

  • 作業的特徵是透過交換訊息表現出來的。

  • 這些訊息的數據類型。

  • 作業的位置。

  • 用來支援與服務成功通訊的特定通訊協定和串行化格式。

例如,採購單合約的作業可能會 CreateOrder 接受訂單資訊類型的輸入,並傳回成功或失敗資訊,包括訂單識別碼。 它也可能有 GetOrderStatus 接受訂單標識碼並傳回訂單狀態信息的作業。 此類的服務合約會指定:

  1. 採購單合約是由 CreateOrderGetOrderStatus 作業所組成。

  2. 這些作業已指定輸入訊息和輸出訊息。

  3. 這些訊息所能攜帶的數據。

  4. 關於成功處理訊息所需之通訊基礎結構的類別語句。 例如,這些詳細數據包括是否需要以及需要什麼形式的安全性來建立成功的通訊。

為了將這類資訊傳達給許多平臺上的其他應用程式(包括非Microsoft平臺),XML 服務合約會以標準 XML 格式公開表示,例如 Web 服務描述語言 (WSDL)和 XML 架構 (XSD)。 許多平臺的開發人員都可以使用此公用合約資訊來建立可以與服務通訊的應用程式,因為它們瞭解規格的語言,以及因為這些語言是設計來描述服務所支援的公用表單、格式和通訊協定來啟用互作。 如需 WCF 如何處理這類資訊的詳細資訊,請參閱 元數據

合約可以表達許多方式,雖然 WSDL 和 XSD 是一種可存取方式描述服務的優秀語言,但它們很難直接使用,而只是服務的描述,而不是服務合約實作。 因此,WCF 應用程式會使用 Managed 屬性、介面和類別來定義服務的結構,以及實作它。

如果用戶端或其他服務實作者需要,產生的合約在 Managed 型別中定義,可以匯出為元數據(WSDL 和 XSD)。 結果是簡單的程式設計模型,可描述任何用戶端應用程式(使用公用元數據)。 基礎 SOAP 訊息的詳細數據、傳輸和安全性相關信息等等,可以留給 WCF,其會自動將服務合約類型系統與 XML 類型系統進行必要的轉換。

如需設計合約的詳細資訊,請參閱 設計服務合約。 如需實作合約的詳細資訊,請參閱 實作服務合約

突顯訊息的重要性

當您習慣於遠端程序調用(RPC)樣式的方法簽章時,使用受控介面、類別及方法來模擬服務操作是很簡單的,其中將參數傳遞至方法並接收返回值是向物件或其他程式碼類型請求功能的基本形式。 例如,使用 Visual Basic 和 C++ COM 等受管理語言的程式設計人員可以將 RPC 樣式方法的知識(無論是使用物件或介面)套用至 WCF 服務合約的建立,而不會遇到 RPC 樣式分散式對象系統中固有的問題。 服務方向提供鬆散結合、訊息導向程序設計的優點,同時保留 RPC 程式設計體驗的簡單且熟悉度。

許多程式設計人員更熟悉訊息導向的應用程式開發介面,例如訊息佇列,例如Microsoft MSMQ、 System.Messaging .NET Framework 中的命名空間,或在 HTTP 要求中傳送非結構化 XML,等等。 如需訊息層級程式設計的詳細資訊,請參閱 使用訊息合約服務 Channel-Level 程序設計,以及 與POX應用程式的互作性

瞭解需求階層

服務合約會將作業分組;指定訊息交換模式、訊息類型和那些訊息所攜帶的數據類型;和表示實作必須支援合約的運行時間行為類別(例如,可能需要加密和簽署訊息)。 服務合約本身不會確切地指定這些需求的符合方式,只有必須符合這些需求。 加密的類型,或訊息簽署的方式是符合規範服務的實作和設定。

請注意,合約要求服務合約實作的某些特定事項,以及運行時的組態以增加行為。 要啟用一項服務以供使用,所需符合的一組需求是建立在先前需求的基礎上。 如果合約需要實作,實作可能需要更多可讓服務執行的組態和系結。 最後,主應用程式也必須支援服務組態和系結新增的任何需求。

在設計、實作、設定及裝載 Windows Communication Foundation (WCF)服務應用程式時,請務必記住附加要求過程的重要性。 例如,合約可以指定需要支援會話。 若是如此,您必須設定系結以支援該合約需求,否則服務實作將無法運作。 或者,如果您的服務需要 Windows 整合式驗證,且裝載於 Internet Information Services (IIS),則服務所在的 Web 應用程式必須開啟 Windows 整合式驗證,且已關閉匿名支援。 如需不同服務主機應用程式類型功能和影響的詳細資訊,請參閱 裝載服務

另請參閱