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

關於WCF的概念、原理、優缺點等,在這裏就很少說了,網上不少,能夠自行搜索,比我解釋的要專業的多。windows

這裏直接說使用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",按相同方法修改.net

回到MyFirstService,在這裏我定義了兩個函數"Base64Encrypt"和"Base64Decrypt",請注意格式,[OperationContract]必定要有,不然外部沒法訪問調試

切換到"MyFirstService",接口實現,編寫具體代碼。orm

好了,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/」,,那麼你要先將服務安裝並啓動服務,這樣才能夠添加服務引用

客戶端代碼

設爲啓動項目,運行

編碼

解碼

 

文中所寫的所有在這個下載中(寫了這麼詳細了,若是還沒作出來,那就花點錢吧^_^)

http://download.csdn.net/detail/meerio/9215083

相關文章
相關標籤/搜索