WCF(一):初識WCF
目錄:
一、什麽是WCF
二、WCF能做什麽
三、WCF的模型
四、WCF的基本概念
五、WCF的快速創建
1.WCF是什麽
A、WindowsCommunication Foundation(WCF)是由微軟開發的一系列支持數據通信的應用程序框架,可以翻譯為Windows 通訊開發平臺。
B、它是.NET框架的一部分,由.NET Framework 3.0開始引入,與WPF(界面圖形框架)及WF(工作流框架)並稱為新一代Windows操作系統以及WinFX(Windows Vista 的托管代碼編程模型)的三個重大應用程序開發類庫。
C、在.NETFramework 2.0以及前版本中,微軟發展了WebService、.NET Remoting、Winsock等通信支持,由於各個通信方法的設計方法不同,而且彼此之間也有相互的重疊性,對於開發人員來說,不同的選擇會有不同的程序設計模型,而且必須要重新學習,讓開發人員在用戶有許多不便。同時,服務導向架構SOA也開始盛行於軟件工業中,因此微軟重新查看了這些通信方法,並設計了一個統一的程序開發模型,對於數據通信提供了最基本最有彈性的支持,這就是WCF,所以WCF整合了原有的windows通訊的 .net Remoting,WebService,Socket的機制,並融合有HTTP和FTP的相關技術。
2.WCF能做什麽?
根據微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運行面向服務(Service Oriented)應用程序的統一框架。
它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統兼容協作。
WCF是微軟分布式應用程序開發的集大成者,它整合了.Net平臺下所有的和分布式系統有關的技術,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊列。
以通信(Communiation)範圍而論,它可以跨進程、跨機器、跨子網、企業網乃至於 Internet;
以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。
WCF可以支持的協議包括TCP,HTTP,跨進程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,自定義等多種標準與模式。也就是說,在WCF框架下,開發基於SOA的分布式系統變得容易了,微軟將所有與此相關的技術要素都包含在內,掌握了WCF,就相當於掌握了叩開SOA大門的鑰匙。
3.WCF模型:
WCF體系架構如下:
WCF的客戶端與服務端模型如下:
4.WCF的基本概念:
(1)地址
WCF的每一個服務都有唯一的地址。地址包括服務位置和傳輸協議(傳輸樣式)。服務位置包括目標機器名、站點、網絡、端口、管道或隊列,以及一個可選的特定路徑或者URI。
地址常用格式為:[基地址]/[可選的URI],如“net.tcp://localhost:8081/MyService”。
基地址常用格式為:[傳輸協議]://[機器名或域名][:可選端口],如“net.tcp://localhost:8081”。
WCF支持多種傳輸樣式:
- HTTP 采用http、https協議進行傳輸,默認端口號80。
- TCP 采用net.tcp協議進行傳輸,默認地址為808。
- Peer network(對等網) 采用net.p2p進行傳輸,采用Windows的對等網傳輸機制。
- IPC(內部進程通信) 采用net.pipe進行傳輸,使用Windows的命名管道機制,只能接收來自同一臺機器的調用,且每臺機器只能打開一個命名管道。
- MSMQ 采用net.msmq進行傳輸,使用Windows的MSMQ機制,必須指定隊列名,如果是處理私有隊列,則必須指定隊列類型。
(2)綁定
綁定將通信模式與交互方式直接的組合進行規範,將這些通信特征合理地組合在一起。一個綁定封裝了諸如傳輸協議、消息編碼、可靠性、安全性、事務傳播以及互操作性等相關選項的組合,使得它們保持一致。
WCF定義了六種常用的綁定:
- 基本綁定 由BasicHttpBinding類提供,將WCF服務公開為Web服務。
- TCP綁定 由NetTcpBinding類提供,使用TCP協議通信,支持多種特性,包括可靠性、事務性、安全性及WCF之間通信的優化,缺點是客戶端必須使用WCF。
- IPC綁定 由NetNamedPipeBinding類提供,使用命名管道為同一機器的通信進行傳輸,支持的特性與TCP綁定類似,是性能和安全性最佳的綁定。
- Web服務綁定 由WSHttpBinding類提供,WS綁定使用HTTP或HTTPS進行傳輸,提供了諸如可靠性、事務性與安全性在內的多種特性,這些特性遵循WS-*標準,該綁定被設計用來與支持WS-*標準的系統進行互操作。
- WS雙向綁定 由WSDualHttpBinding類提供,支持雙向通信。
- MSMQ綁定 由NetMsmqBinding類提供,使用MSMQ進行傳輸。
常用綁定的傳輸協議與編碼格式如下:
註意:TCP、IPC和MSMQ綁定使用的二進制編碼器是WCF專有的,不要試圖為其編寫針對其他平臺的自定義解析器。
(3)契約
WCF的所有服務都公開為契約,契約與平臺無關,是描述服務功能的標準方式。WCF包含4類契約:
- 服務契約 描述了客戶端能夠執行的服務操作。
- 數據契約 定義了與服務交互的數據類型。
- 錯誤契約 定義了服務拋出的錯誤,以及服務處理錯誤和傳遞錯誤到客戶端的方式。
- 消息契約 消息契約允許服務直接與消息交互,用於定制專有的消息格式,也意味著要自己的應用程序上下文,因為會增加代碼的復雜度,所以不屬於常見用法。
(4)終結點
終結點是WCF進行通信的唯一手段,ChannelFactory<T>本質上是通過制定的終結點創建用於進行服務調用的服務代理。
終結點在WCF體系中通過System.ServiceModel.Description.ServiceEndpoint類型表示,其包含三個核心屬性——地址、綁定、契約。
終結點是用來發送和接收消息的構造,終結點是真正意義上的接口,它包含了一個對象接口所需的全部信息。
每個服務至少必須公開一個業務終結點,每個終結點有且只能擁有一個契約。
服務上的所有終結點都包含了唯一的地址,而一個單獨的服務則可以公開多個終結點。這些結點可以使用相同或不同的綁定,公開相同或不同的契約。
(5)元數據
服務的元數據描述服務的特征,外部實體需要了解這些特征以便與該服務進行通信。
服務的元數據包括XML、架構文檔(用於定義服務的數據協定)和WSDL文檔(用於描述服務的方法)。
啟用元數據後,WCF通過檢查服務及其終結點自動生成服務的元數據。
(6)上下文
WCF上下文將服務宿主與公開本地CLR類型為服務的上下文組合在一起,上下文是服務實例最核心的執行範圍,上下文可以為空,即不包含任何服務實例。
(7)宿主
WCF服務類不能憑空存在,每個WCF服務類必須托管在某個宿主進程中。
單個宿主進程可以托管多個服務,而相同的服務類型也可以托管在多個宿主進程中,如果服務與客戶端駐留在相同的進程中,則稱為進程內托管。常用宿主如下:
- Web站點
- Windows窗體應用程序
- Windows服務
- Windows激活服務(WAS)
WCF宿主體系結構如下:
每個.NET宿主進程都包含了多個應用程序域,每個應用程序域包含零到多個宿主實例,每個服務宿主實例專門對於於一個特殊的服務類型。
因此,創建一個宿主實例,實際上就是為對應於基地址的宿主機器的類型註冊一個包含了所有終結點的服務宿主實例。每個服務宿主實例擁有零到多個上下文。一個上下文可以與零個或一個服務實例關聯。
(8) 代理
WCF不允許客戶端直接與服務交互,客戶端使用代理將調用轉發給服務。即使對象是本地的,WCF仍然使用遠程編程模型的實例化方式,並且使用代理。
5.WCF的快速創建:
第一步:通過VS創建一個WCF服務應用程序:解決方案-名稱-位置自定義
第二步:點擊確認後,會自動生成三個文件:服務契約接口,服務接口實現類,配置文件
WCF(一):初識WCF