使用C#創建及調用WCF完整實例 (Windows服務宿主)


關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM