關於WCF的概念、原理、優缺點等,在這里就不多說了,網上很多,可以自行搜索,比我解釋的要專業的多。
這里直接說使用Windows 服務(Windows Service)作為宿主如何實現,其它方式不在此次教程之內
文章最后有本例的下載連接,包含源代碼、說明教程、編譯后文件
實例環境:Windows Server 2008 R2 + VS 2010(C#)
打開 VS 2010,選擇 新建項目,選擇 ”WCF”|”WCF 服務庫 ”,注意這里是”WCF 服務庫 ”,不是"WCF 服務應用程序"
確定后,系統會自動建立默認文件 ” Service1.cs”和” IService1.cs”,其實也是系統給你的示例
打開"IService1.cs",你可以看到系統給你的示例代碼,將光標定位到"IService1"上,按F2健,可將接口重命為你想要的名子,重命名后將解決管理器中文件也同命修改。我修改為 ”IMyFirstService”;打開“Service1.cs",按相同方法修改
回到MyFirstService,在這里我定義了兩個函數"Base64Encrypt"和"Base64Decrypt",請注意格式,[OperationContract]一定要有,否則外部無法訪問
切換到"MyFirstService",接口實現,編寫具體代碼。
好了,WCF服務庫的代碼部分就結束了,下面要開始配置,打開項目下的App.config文件
這里,我們主要看system.servicemodel節點,有2體個子節點"services"和"behaviors",其中"behaviors"節點主要是安全和調試方面的設置,我們不在此討論,主要說一下第1個子節點"services",我們來看一下"services"節點內容
估計大多數人和我一樣,這些是什么亂七八糟的東西,頭大。既然開頭說了,本文只說如何實現,所以不說其所以然了,肯定,這樣的配置無法在后面的宿主里成功調用,為什么呢,因為缺少了binding的配置,而默認並未生成配置節點,那好我們自己來加,注意標識的地方
配置一下項目屬性,我的生成目錄在F:\WCFTEST,生成項目
好的,WCF服務庫已工作已結束。
開始宿主程序
右擊解決方案,添加|新建項目”Windows”|”Windows 服務”,項目名就默認吧,不改了
在Windows服務項目中添加WCF服務庫的引用
打開"WindowsService1"項目的App.config,發現什么都沒有
將“MyTestWcfServiceLibrary”項目中的App.config文件的內容全部復制過來(即現在2個項目的App.config文件內容是完全一樣的)
開始編寫Windows服務的代碼,要先添加system.servicemodel引用,並using
添加服務安裝程序
配置安裝程序
好的,WCF宿主程序也結束了,成生項目
開始編寫客戶端調用
右擊解決方案|添加|新建項目|Windows|windows 窗體應用程序,項目名就默認吧(WindowsFormsApplication1),添加2個label,2個textbox,3個button
右擊引用|添加服務引用,服務地址在windows服務項目中App.config文件中,依次展開找到system.serviceModel|services|service|host|baseAddresses|add節點,baseAddress等於號后的雙引號中的字符串即為服務地址,注意如果是生產環境,那么你服務所使用的端口號在開啟。本例地址為“http://localhost:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”
(下載連接中的教程中此圖使用錯誤,應該是這樣的圖,教程中使用的是在WindowsService1中的服務引用的圖)
此時,服務地址是localhost,所以可以直接引用成功,如果服務地址是一個網絡地址,需要在宿主服務器中將服務啟動后才可以引用服務,否則會提示找不到服務。也就是說如果你的服務地址是“http://192.168.1.1:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”,,那么你要先將服務安裝並啟動服務,這樣才可以添加服務引用
客戶端代碼
設為啟動項目,運行
編碼
解碼
轉載自https://www.cnblogs.com/pangguoming/p/7494946.html