WindowsCommunication Foundation(WCF)是由微軟發展的一組數據通信的應用程序開發接口,它是.NET框架的一部分,由.NET Framework 3.0開始引入,與Windows PResentation Foundation及 Windows Workflow Foundation并行為新一代Windows操作系統以及WinFX的三個重大應用程序開發類庫。
在.NETFramework 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(之前的版本名為“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大門的鑰匙。
我們通過VS2010自帶的模板創建一個WCF程序,來認識一下WCF服務
第一步:打開VS2010,選擇WCF模板中的"WCF服務應用程序",將解決方案的名稱改為WcfTest,名稱改為Service
第二步:創建完成后,解決方案中生成3個文件,服務契約接口和服務實現類,以及服務寄宿文件和配置文件
第三步:對服務進行寄宿,點擊Service1.svc在瀏覽器中進行查看,既可以寄宿該服務
第四步:服務寄宿后,我們就可以查看其元數據的信息以及調用服務產生客戶端代理類
點擊鏈接就可以看到服務的元數據信息如下:
第五步:我們通過svcutil.exe工具生成客戶端代理類和客戶端的配置文件
svcutil.exe是一個命令行工具,位于路徑C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Bin下,我們可以通過命令行運行該工具生成客戶端代理類
1.在運行中輸入cmd打開命令行,輸入 cd C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Bin
2.輸入svcutil.exe /out:f:/TestProxy.cs /config:f:/App.confighttp://localhost:10998/Service1.svc?wsdl(注意:端口號改成本機服務寄宿的端口號)
此時,你可以在你的f盤的根目錄查看到你剛剛生成的客戶端代理文件和配置文件TestProxy.cs 、App.config
第六步:創建一個控制臺應用程序的客戶端(Client),將生成的代理文件拷貝到該工程中(也可以點擊引用"添加服務引用",靠VS2010自動生成客戶端代理類)
此時你會看到客戶端代理類中出現錯誤,原因是我們并未對服務需要的程序集進行引用。我們引用System.Runtime.Serialization和System.ServiceModel
在客戶端的Program.cs中輸入如下代碼
設置客戶端(Client)未啟動項目,運行程序就可以看到第一個服務程序運行的結果
到此,我們完成了一個簡介的WCF程序,下一篇,我們將自己手動編寫一個wcf服務程序
新聞熱點
疑難解答