Windows Communication Foundation (WCF) 是建置服務導向應用程式的架構。 使用 WCF,您可以將資料當做異步訊息從一個服務端點傳送到另一個服務端點。 服務端點可以是 IIS 所裝載之持續可用服務的一部分,也可以是裝載在應用程式中的服務。 端點可以是向服務端點請求資料的服務用戶端。 訊息可以像以 XML 傳送的單一字元或單字一樣簡單,或與二進位數據的數據流一樣複雜。 一些範例案例包括:
處理商務交易的安全服務。
提供目前數據給其他人的服務,例如流量報告或其他監視服務。
聊天服務,可讓兩個人實時通訊或交換數據。
儀錶板應用程式,會輪詢一或多個服務以取得數據,並將它呈現在邏輯簡報中。
公開使用 Windows Workflow Foundation 作為 WCF 服務實作的工作流程。
在 WCF 存在之前就能建立這類應用程式,而 WCF 使端點的開發比以往更容易。 總而言之,WCF 的設計目的是提供可管理的方法來建立 Web 服務和 Web 服務用戶端。
gRPC 作為 WCF 的替代方案
gRPC 是新式 RPC 架構,是 WCF 的熱門替代方案。 gRPC 建置在 HTTP/2 之上,可提供一些優於 WCF 的優點,包括:
- 效能:gRPC 比 WCF 更有效率,尤其是針對長時間執行的連線。
- 延展性:gRPC 的設計目的是要擴充到大量的客戶端和伺服器。
- 安全性:gRPC 支援各種安全性機制,包括 TLS 和驗證。
- 跨平臺:gRPC 是平臺中立的,可與各種程序設計語言搭配使用。
如需開發或移轉 WCF 應用程式至 gRPC 的詳細資訊,請參閱:
WCF 的功能
WCF 包含下列一組功能。 如需詳細資訊,請參閱 WCF 功能詳細數據。
服務方向
使用 WS 標準的結果之一是 WCF 可讓您建立 服務導向 的應用程式。 服務導向架構 (SOA) 是依賴 Web 服務來傳送和接收數據。 這些服務具有一般優點,即鬆散耦合,而不是從一個應用程式硬式編碼到另一個應用程式。 鬆散結合的關聯性表示只要符合基本合約,任何平臺上建立的任何用戶端都可以連線到任何服務。
互通性
WCF 會實作 Web 服務互作性的新式產業標準。 如需支援標準的詳細資訊,請參閱 互作性和整合。
多個訊息模式
訊息會以數種模式之一交換。 最常見的模式是要求/回復模式,其中一個端點會從第二個端點要求數據。 第二個服務端點會回應。 還有其他模式,例如單向訊息,其中單一端點會傳送訊息,而不需要任何回復。 更複雜的模式是雙工交換模式,其中兩個端點會建立連線並來回傳送數據,類似於立即訊息程式。 如需如何使用 WCF 實作不同訊息交換模式的詳細資訊,請參閱 合約。
服務元數據
WCF 支援使用業界標準中指定的格式來發佈服務元數據,例如 WSDL、XML 架構和 WS-Policy。 此元數據可用來自動產生及設定用戶端來存取 WCF 服務。 元數據可以透過 HTTP 和 HTTPS 發佈,或使用 Web 服務元數據交換標準。 如需詳細資訊,請參閱中繼資料。
數據合約
由於 WCF 是使用 .NET Framework 所建置,因此也包含一些方法,讓您能以程式碼方便地定義想要執行的合約。 其中一種通用型別的合約是數據合約。 基本上,當您使用 Visual C# 或 Visual Basic 撰寫服務程式代碼時,處理數據的最簡單的方式就是建立類別,以代表屬於數據實體的屬性的數據實體。 WCF 包含一套完整的系統,可讓您輕鬆使用數據。 建立代表數據的類別之後,您的服務會自動產生元數據,讓用戶端符合您設計的數據類型。 如需詳細資訊,請參閱 使用數據合約。
安全性
訊息可以加密以保護隱私權,而且您可以要求使用者先自行驗證,才能接收訊息。 安全性可以使用 SSL 或 WS-SecureConversation 等已知標準來實作。 如需詳細資訊,請參閱 安全性。
多個傳輸和編碼
訊息可以傳送至數個內建傳輸通訊協議和編碼方式中的任何一種。 最常見的通訊協議和編碼方式是使用超文本傳輸通訊協定(HTTP)來傳送文字編碼的SOAP訊息,以在萬維網上使用。 或者,WCF 可讓您透過 TCP、命名管道或 MSMQ 傳送訊息。 這些訊息可以編碼為文字或使用優化的二進位格式。 二進位數據可以使用 MTOM 標準有效率地傳送。 如果所提供的傳輸或編碼都不符合您的需求,您可以建立自己的自定義傳輸或編碼。 如需 WCF 所支援傳輸和編碼的詳細資訊,請參閱 傳輸。
可靠與佇列訊息
WCF 支援利用可靠會話進行可靠的訊息傳遞,這些會話是透過 WS-Reliable Messaging 實作的,以及使用 MSMQ。 如需 WCF 中可靠和佇列傳訊支援的詳細資訊,請參閱 佇列和可靠會話。
永久訊息
永久性訊息是即使在通訊中斷時也不會遺失的訊息。 長期訊息模式中的訊息一律會儲存至資料庫。 如果發生中斷,資料庫可讓您在還原連線時繼續訊息交換。 您也可以使用 Windows Workflow Foundation (WF) 建立持久訊息。 如需詳細資訊,請參閱 工作流程服務。
交易
WCF 也支援使用三種交易模型的其中一種交易:WS-AtomicTransactions、命名空間中的 System.Transactions API,以及Microsoft分散式交易協調器。 如需 WCF 中交易支援的詳細資訊,請參閱 交易。
AJAX 和 REST 支援
REST 是不斷演進的 Web 2.0 技術的範例。 WCF 可以設定為處理未包裝在SOAP信封中的「純文字」XML 數據。 WCF 也可以擴充以支援特定的 XML 格式,例如 ATOM(常用的 RSS 標準),甚至是非 XML 格式,例如 JavaScript 物件表示法(JSON)。
擴充性
WCF 架構有一些擴充點。 如果需要額外的功能,有一些進入點可讓您自定義服務的行為。 如需可用擴充點的詳細資訊,請參閱 擴充 WCF。
WCF 與其他Microsoft技術整合
WCF 是彈性平臺。 由於這種極端的彈性,WCF 也會用於數個其他Microsoft產品。 藉由瞭解 WCF 的基本概念,如果您也使用任何這些產品,您便有立即的優勢。
與 WCF 配對的第一種技術是 Windows Workflow Foundation (WF)。 工作流程會將工作流程中的步驟封裝為「活動」,以簡化應用程序開發。在第一版的 Windows Workflow Foundation 中,開發人員必須建立工作流程的主機。 下一版的 Windows Workflow Foundation 已與 WCF 整合。 這可讓任何工作流程輕鬆地裝載在 WCF 服務中。 您可以在 Visual Studio 2012 或更新版本中自動選擇 WF/WCF 專案類型來執行此動作。
Microsoft BizTalk Server R2 也會利用 WCF 作為通訊技術。 BizTalk 的設計目的是接收數據,並將數據從一個標準化格式轉換成另一種格式。 訊息必須傳遞到其中央訊息箱,其中訊息可以使用嚴格對應或利用 BizTalk 的功能之一來進行轉換,例如其工作流程引擎。 BizTalk 現在可以使用 WCF 企業營運 (LOB) 配接器,將訊息傳遞至消息框。
Windows Server AppFabric 應用程式伺服器的裝載功能專為部署和管理使用 WCF 進行通訊的應用程式而設計。 裝載功能包括專為支援 WCF 的應用程式而設計的豐富工具和組態選項。