什麼是wcfwindowscommunication foundation(wcf)是由微軟
開發的一系列支援資料通訊的應用程式框架,可以翻譯為windows 通訊開發平台。
整合了原有的windows通訊的 .net remoting,webservice,socket的機制,並融合有http
和ftp
的相關技術。
是windows平台上開發分布式應用最佳的實踐方式。
契約與說明
契約定義訊息系統的各個方面。
資料契約:服務中的引數;
訊息契約:使用soap協議特定的訊息部分;
服務契約:服務中的方法;
策略與繫結:策略設定安全或其他條件,繫結指定傳輸方式與編碼。
服務執行時
服務執行期間的行為控制
限制行為:控制處理的訊息數;
錯誤行為:出現內部錯誤時所處理的操作;
元資料行為:是否向外提供元資料及元資料的提供方式;
例項行為:可執行的服務例項數目;
事務行為:處理事務;
排程行為:控制wcf處理訊息的方式;
訊息傳遞
訊息傳遞層:說明資料的交換格式和傳輸模式。
訊息傳遞層由通道(通道)組成,通道是對訊息進行處理的元件,負責以一致的方式對訊息進行整理和傳送。通道用於傳輸層、協議層、及訊息獲取。各層次的通道組成了通道棧。
通道對訊息和訊息頭進行操作,服務執行時對訊息正文進行操作。
兩種型別:傳輸通道 與 協議通道。
傳輸通道:讀取和寫入來自網路的訊息,傳輸通道通過編碼器將訊息轉換為網路傳輸使用的位元組流,以及將位元組流轉換為訊息。傳輸通道示例如:http通道、命名管道、tcp、msmq等;
協議通道:通過讀取或寫入訊息頭的方式來實現訊息協議,協議通道示例如:ws-security,ws-reliability。
承載和啟用
服務宿主:負責wcf服務的生命週期和上下文的作業系統程序,負責啟動和停止wcf服務,並提供控**務的基本管理功能。
兩種型別:傳輸通道 與 協議通道。
傳輸通道:讀取和寫入來自網路的訊息,傳輸通道通過編碼器將訊息轉換為網路傳輸使用的位元組流,以及將位元組流轉換為訊息。傳輸通道示例如:http通道、命名管道、tcp、msmq等;
協議通道:通過讀取或寫入訊息頭的方式來實現訊息協議,協議通道示例如:ws-security,ws-reliability。
承載和啟用
契約(
contract
)wcf
的基本概念是以合約
(contract)
來定義雙方溝通的協議,合約必須要以介面的方式來體現,而實際的服務**必須要由這些合約介面派生並實現。合約分成了四種:
資料合約
(data contract)
,訂定雙方溝通時的資料格式。服務合約
(service contract)
,訂定服務的定義。操作合約
(operation contract)
,訂定服務提供的方法。訊息合約
(messagecontract)
,訂定在通訊期間改寫訊息內容的規範。乙個
wcf中的合約,就如同下列**所示:
using system;
using system.servicemodel;
namespace microsoft.servicemodel.samples
}
繫結
(binding)
由於wcf支援了http
,tcp
,named pipe
,msmq
,peer-to-peer tcp
等協議,而
又分為基本
支援(basichttpbinding)
以及ws-http
支援(wshttpbinding)
,而tcp
亦支援nettcpbinding
,netpeertcpbinding
等通訊方式,因此,雙方必須要統一通訊的協議,並且也要在編碼以及格式上要有所一致。
乙個設定通訊協議繫結的示例如下:
<?xml version="1.0" encoding="utf-8" ?>
雖然
wcf
也可以使用
soap
做通訊格式,但它和以往的
asp.netxml web services
不同,因此有部分技術文章中,會將
asp.net
的xml web services
稱為asmx service。
wcf
的服務可以掛載於,,
,windows service
以及windows activation services
中,但大多都會掛在
windows service。
終結點
–終結點是用來傳送或接收訊息(或執行這兩種操作)的構造。終結點包括乙個定義訊息可以傳送到的目的地的位置(位址)結點,包括乙個定義訊息可以傳送到的目的地的位置(位址)、乙個描述訊息應如何傳送的通訊機制規範(繫結)以及對於可以在該位置傳送或接收(或兩者皆可)的一組訊息的定義(服務協定)
—該定義還描述了可以傳送何種訊息。
元資料
所謂的「元資料」就是描述資料的資料,即描述當前服務有哪些服務契約、方法契約和資料契約以及終結點的資訊。而「元資料終結點」就是向外界暴露元資料的終結點。當客戶端新增
wcf服務引用的時候,會首先通過元資料取得伺服器端的契約資訊、終結點資訊,然後根據這些資訊在客戶端建立了**類,我們在客戶端呼叫
wcf服務的過程實際上就是通過**類呼叫
wcf服務的過程。
宿主(
host
):一種應用程式域和程序,服務將在該環境中執行。
1.webservice:嚴格來說是行業標準,不是技術,使用
xml擴充套件標記語言來表示資料(這個是誇語言和平台的關鍵)。微軟的
web服務實現稱為
asp.net web service.
它使用soap
簡單物件訪問協議來實現分布式環境裡應用程式之間的資料互動。
wsdl
來實現服務介面相關的描述。此外
webservices
可以註冊到
uddi中心.
供其客戶查詢使用。後來微軟做了
asp.net web service
的安全,效能,資料加密、解密,託管宿主等多方面的擴充套件,稱為
wse系列,這個是過度產品,最高到
wse3.0.
後來就是
wcf時代。
2.wcf:其實一定程度上就是
asp.net webservice,
因為它支援
web service
的行業標準和核心協議,因此
asp.net webservice
和wse
能做的事情,它幾乎都能勝任,跨平台和語言更不是問題(資料也支援
xml格式化,而且提供了自己的格式化器)。
WCF入門教程 WCF基礎知識問與答
3 為什麼我們要選用wcf?在windows平台下,尤其是在.net平台下開發面向服務的應用程式,或者開發分布式系統,最佳選擇就是wcf。為什麼呢?原因就在於wcf涵蓋了之前微軟推出的所有用於分布式開發的技術,包括remoting web services wse msmq等,並以一種統一的程式設計...
《WCF按部就班學習系列1 WCF基礎概述》
1 wcf的概述 what 1.1.wcf全稱windows communication foundation,是microsoft為構建面向服務的應用提供的分布式通訊程式設計框架,是.net framework 3.5的重要組成部分。使用該框架,開發人員可以構建跨平台 安全 可靠和支援事務處理的企...
無廢話WCF入門教程一 什麼是WCF
一 概述 windows communication foundation wcf 是由微軟發展的一組資料通訊的應用程式開發介面,可以翻譯為windows通訊介面,它是.net框架的一部分。由 net framework 3.0開始引入。wcf的最終目標是通過程序或不同的系統 通過本地網路或是通過i...