fbpx
维基百科

Windows通訊基礎

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

在.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 Adddouble n1, double n2;  [OperationContract] // 營運合約  double Subtractdouble n1, double n2;  [OperationContract] // 營運合約  double Multiplydouble n1, double n2;  [OperationContract] // 營運合約  double Dividedouble 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.NET XML 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物件即可。

参考文献

  • MSDN .NET Framework Developer Center: WCF (页面存档备份,存于互联网档案馆
  • MSDN Library: WCF Portal (页面存档备份,存于互联网档案馆
    • 本文中的範例均來自MSDN Library: WCF Portal中。

windows通訊基礎, 英語, windows, communication, foundation, 是由微軟發展的一組資料通訊的應用程式開發介面, 它是, net框架的一部分, framework, 0开始引入, 與windows, presentation, foundation及, windows, workflow, foundation並列為新一代windows作業系統以及winfx的三個重大應用程式開發類別庫, framework, 0以及前版本中, 微軟發展了web, service, soap,. Windows通訊基礎 英語 Windows Communication Foundation WCF 是由微軟發展的一組資料通訊的應用程式開發介面 它是 NET框架的一部分 由 NET Framework 3 0开始引入 與Windows Presentation Foundation及 Windows Workflow Foundation並列為新一代Windows作業系統以及WinFX的三個重大應用程式開發類別庫 在 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 目录 1 概念 1 1 合約 Contract 1 2 協定繫結 Binding 1 3 安全性層次 2 用戶端 3 参考文献概念 编辑WCF由於集合了幾乎由 NET Framework所提供的通訊方法 因此學習曲線比較陡峭 開發人員必須要針對各個部份的內涵做深入的了解 才能夠操控WCF來開發應用程式 通訊雙方的溝通方式 由合約 Contract 來訂定 通訊雙方所遵循的通訊方法 communication protocol 由協定繫結 Binding 來訂定 通訊期間的安全性 由雙方約定的安全性層次來訂定 合約 Contract 编辑 WCF的基本概念是以合約 Contract 來定義雙方溝通的協定 合約必須要以介面的方式來呈現 而實際的服務程式碼必須要由這些合約介面衍生並實作 合約分成了四種 資料合約 Data Contract 訂定雙方溝通時的資料格式 服務合約 Service Contract 訂定服務的定義 營運合約 Operation Contract 訂定服務提供的方法 訊息合約 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支援了HTTP TCP Named Pipe MSMQ Peer To Peer TCP等協定 而HTTP又分為基本HTTP支援 BasicHttpBinding 以及WS HTTP支援 WsHttpBinding 而TCP亦支援NetTcpBinding NetPeerTcpBinding等通訊方式 因此 雙方必須要統一通訊的協定 並且也要在編碼以及格式上要有所一致 一個設定通訊協定繫結的範例如下 lt xml version 1 0 encoding utf 8 gt lt configuration gt lt system serviceModel gt lt 設定服務繫結的資訊 gt lt services gt lt service name CalculatorService gt lt endpoint address binding wsHttpBinding bindingConfiguration Binding1 contract ICalculator gt lt service gt lt services gt lt 設定通訊協定繫結的資訊 gt lt bindings gt lt wsHttpBinding gt lt binding name Binding1 gt lt binding gt lt wsHttpBinding gt lt bindings gt lt system serviceModel gt lt configuration gt 雖然WCF也可以使用SOAP做通訊格式 但它和以往的ASP NET XML 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物件即可 参考文献 编辑MSDN NET Framework Developer Center WCF 页面存档备份 存于互联网档案馆 MSDN Library WCF Portal 页面存档备份 存于互联网档案馆 本文中的範例均來自MSDN Library WCF Portal中 取自 https zh wikipedia org w index php title Windows通訊基礎 amp oldid 74102438, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。