引用:
windows communication foundation(wcf)是由微軟發展的一組資料通訊的
應用程式開發介面,可以翻譯為windows通訊介面,它是
.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。
wcf 由於集合了幾乎由 .net framework 所提供的通訊方法,因此學習曲線比較陡峭,開發人員必須要針對各個部份的內涵做深入的了解,才能夠操控 wcf 來開發
應用程式。
通訊雙方的溝通方式,由合約來訂定。通訊雙方所遵循的通訊方法,由協議繫結來訂定。通訊期間的安全性,由雙方約定的安全性層次來訂定。wcf 的基本概念是以
合約(contract) 來定義雙方溝通的協議,合約必須要以
介面的方式來體現,而實際的服務**必須要由這些合約介面派生並實現。合約分成了四種:
資料合約 (data contract),訂定雙方溝通時的資料格式。服務合約 (service contract),訂定服務的定義。操作合約 (operation contract),訂定服務提供的方法。訊息合約 (message contract),訂定在通訊期間改寫訊息內容的規範。乙個 wcf 中的合約,就如同下列**所示:
using system;
using system.servicemodel;
namespace microsoft.servicemodel.samples
}由於 wcf 支援了
msmq,peer-to-peer tcp 等協議,而 http 又分為基本 http 支援 (basichttpbinding) 以及 ws-http 支援 (wshttpbinding),而 tcp 亦支援 nettcpbinding,netpeertcpbinding 等通訊方式,因此,雙方必須要統一通訊的協議,並且也要在編碼以及格式上要有所一致。
乙個設定通訊協議繫結的示例如下:
<?xml version="1.0" encoding="utf-8" ?>
雖然 wcf 也可以使用
soap做通訊格式,但它和以往的
asp.net
xml web services不同,因此有部分技術文章中,會將 asp.net 的 xml web services 稱為asmx 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 物件即可。
1.msdn .net framework developer center: wcf
2.msdn library: wcf portal
3. 本文中的示例均來自 msdn library: wcf portal 中
擴充套件閱讀:
開放分類:
visual studio 2005,
wcf
初見WCF服務介面
1.建立mvc空專案,2.建立service和service.inte ce這兩個類庫,在service裡建立wcf服務契約 calculatorservice和mytestservice 在service.inte ce裡建立imytest 3.mvc專案引用 service和service.in...
WCF通訊簡單示例
今天寫了乙個wcf demo,給大家分享,說明如下 服務介面類庫wcfservice.dll 服務實現類庫wcfservicimp.dll 服務宿主專案wcfhost 客戶端呼叫專案 wcftest 客戶端呼叫服務的時候,要引用介面類庫 wcfservice.dll 伺服器端宿主 public pa...
WCF(二)三種通訊模式
wcf在通訊過程中有三種模式 請求與答覆 單向 雙工通訊 客戶端傳送請求,然後一直等待服務端的響應答覆 非同步呼叫除外 期間處於假死狀態,直到服務端有了答覆後才能繼續執行其他程式 請求與答覆模式為wcf預設模式,無需任何設定 operationcontract string getdata int ...