Windows通信基礎

Windows通信基礎(英語:Windows Communication Foundation, WCF)是由微軟發展的一組數據通信的應用程式開發接口,它是.NET框架的一部分,由.NET Framework 3.0開始引入,與Windows Presentation Foundation及 Windows Workflow Foundation並行為新一代Windows作業系統以及WinFX的三個重大應用程式開發類庫。

基本介紹

  • 中文名:Windows通信基礎
  • 外文名:Windows Communication Foundation
  • 縮寫:WCF
  • 領域:計算機
簡介,概念,契約(Contract),協定綁定(Binding),安全性層次,客戶端,

簡介

在.NET Framework 2.0以及前版本中,微軟發展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/HTTP/Pipeline communication)以及基礎的Winsock等通信支持,由於各個通信方法的設計方法不同,而且彼此之間也有相互的重疊性(例如.NET Remoting可以開發SOAP, HTTP通信),對於開發人員來說,不同的選擇會有不同的程式設計模型,而且必須要重新學習,讓開發人員在使用時有許多不便。同時,服務導向架構(Service-Oriented Architecture)也開始盛行於軟體工業中,因此微軟重新查看了這些通信方法,並設計了一個統一的程式開發模型,對於數據通信提供了最基本最有彈性的支持,這就是Windows Communication Foundation。

概念

WCF由於集合了幾乎由.NET Framework所提供的通信方法,因此學習曲線比較陡峭,開發人員必須要針對各個部分的內涵做深入的了解,才能夠操控WCF來開發應用程式。
  • 通信雙方的溝通方式,由契約 (Contract)來訂定。
  • 通信雙方所遵循的通信方法 (communication protocol),由協定綁定 (Binding)來訂定。
  • 通信期間的安全性,由雙方約定的安全性層次來訂定。

契約(Contract)

WCF的基本概念是以契約(Contract)來定義雙方溝通的協定,契約必須要以接口的方式來呈現,而實際的服務代碼必須要由這些契約接口派生並實現。契約分成了四種:
  1. 數據契約(Data Contract),訂定雙方溝通時的數據格式。
  2. 服務契約(Service Contract),訂定服務的定義。
  3. 營運契約(Operation Contract),訂定服務提供的方法。
  4. 訊息契約(Message Contract),訂定在通信期間改寫訊息內容的規範。
一個WCF中的契約,就如同下列代碼所示:
using System;using System.ServiceModel;namespace Microsoft.ServiceModel.Samples{  [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] // 服務契約  public interface ICalculator  {    [OperationContract]     double Add(double n1, double n2);    [OperationContract]     double Subtract(double n1, double n2);    [OperationContract]     double Multiply(double n1, double n2);    [OperationContract]     double Divide(double n1, double n2);  }}

協定綁定(Binding)

由於WCF支持了HTTPTCP,Named Pipe,MSMQ,Peer-To-Peer TCP等協定,而HTTP又分為基本HTTP支持(BasicHttpBinding)以及WS-HTTP支持(WsHttpBinding),而TCP亦支持NetTcpBinding,NetPeerTcpBinding等通信方式,因此,雙方必須要統一通信的協定,並且也要在編碼以及格式上要有所一致。
一個設定通信協定綁定的示例如下:
<?xml version="1.0" encoding="utf-8" ?><configuration>  <system.serviceModel>    <services>      <service name=" CalculatorService" >        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"            contract="ICalculator" />      </service>    </services>    <bindings>      <wsHttpBinding>        <binding name="Binding1">        </binding>      </wsHttpBinding>   </bindings>  </system.serviceModel></configuration>
雖然WCF也可以使用SOAP做通信格式,但它和以往的ASP.NETXML Web Services不同,因此有部分技術文章中,會將ASP.NET的XML Web Services稱為ASMX Service
WCF的服務可以掛載於Console Application,Windows Application,IIS(ASP.NET)Application,Windows Service以及Windows Activation Services中,但大多都會掛在Windows Service。

安全性層次

WCF實現上已經支持了傳輸層次安全性(Transport-level security)以及訊息層次安全性(Message-level security)兩種。
  • 傳輸層次安全性:在數據傳輸時期加密,例如SSL
  • 訊息層次安全性:在數據處理時就加密,例如使用數字簽名散列或是使用密鑰加密法等。

客戶端

對於WCF的客戶端來說,WCF服務就像是一個Web Service一樣,在Visual Studio 2008中,所有WCF服務的連線都是由客戶端的WCF Service Proxy來運行,開發人員不用花費太多心思在通信上,而WCF Service Proxy在Visual Studio中被稱為服務引用(Service Reference)。
在Visual Studio中加入WCF的服務引用時,Visual Studio會自動幫開發人員做掉一些必要工作(例如配置創建以及產生Service Proxy等),開發人員只需要在代碼中取用WCF Service Proxy對象即可。

相關詞條

熱門詞條

聯絡我們