WCF 中wsHttpBinding配置實例程序
這兩天接觸到WCF技術,覺得有必要對一些遇到過的不大清楚的問題進行記錄。既為方便后面自己對相關問題的查漏補缺,也希望能夠有需要的人提供一點幫助。
1 介紹
介紹了WCF程序中使用地址綁定的wsHttpBinding方式實例。
2 背景
在WCF技術中,WCF Service在服務器端發布之后,客戶端client鏈接服務器進行服務接口調用有以下四種方式:
-
HTTP:常見的http方式連接,類似於網站傳輸方式;
-
TCP:使用TCP協議實現本地網絡與遠程服務器之間的鏈接,比HTTP方式高效,支持安全控制;
-
Name Pipe:命名管道技術,是用於在本機的不同進程之間的通信;
-
MSMQ:(Microsoft Message Queue,微軟消息隊列),一種可靠消息排隊技術,允許應用程序發送的消息通過隊列路由到達目的地。
Figure 1 WCF Service與Client的連接通信方式[1]
圖1顯示了WCF Service在服務端與各Client的通信連接方式。
[1] 引自《Beginning Visual C# 2010》,Chatper 26, page 902.
3 代碼
在Visual Studio 2010下創建。
首先,第一個例子是使用wsHttpBinding,然后使用控制台Console應用程序作為Host及Client,其工程結構圖如下:
Step 1:建立WCF Service Library工程,WcfSericeLib,VS會自動生成接口文件IService1.cs及類實現文件Service1.cs。
Step 2: 分別創建Console Application工程ConsoleHost和ConsoleClient。
在App.config文件中,我們可以看到以下配置:
從中我們可以看到,其實這里默認使用了wsHttpBinding,此時程序是可以編譯運行的。但是本程序演示的目的是將WCF Service寄宿到ConsoleHost中,讓ConsoleHost啟動服務,然后通過ConsoleClient調用已啟用的服務。
Step 3:將WcfServiceLib中的App.config文件剪切到ConsoleHost中,並在ConsoleHost中引入WcfServiceLib.dll.
Step 4: ConsoleHost中加入System.ServiceModel庫,更改Program.cs文件如下:
這時,將ConsoleHost設為啟動項目,就能將Service服務啟動成功。
Step 5:先在ConsoleHost工程Debug目錄下將ConsoleHost.exe運行,能夠看到Service1 Started的啟動信息。 然后在ConsoleClient中Add Service Reference,將ConsoleHost中App.config中的baseAddress復制到地址欄中,可以查找到當前Service。如下圖所示:
上述步驟完成后,在ConsoleClient中會自動生成app.config的配置文件,具體見代碼。
Step 6:更改ConsoleClient program.cs,如下:
最后,先運行ConsoleHost.exe啟動Service的情況下,再運行ConsoleClient.exe,可得到如下結果:
至此,該示例完成。
整個工程源代碼下載:WCFDemo_wsHttpBinding.zip
4 討論
本例中,只是將WCF Application Library中的服務Handle到Console中,這樣的話,ConsoleHost可為遠程服務器,ConsoClient可為各不同地域的客戶機。
5 版權
在注明出處的情況下,可自由進行復制傳播。
參考文獻:
《Beginning Visual C# 2010》
http://blog.csdn.net/fangxing80/article/details/6106228
6 關於作者
Ray Lei,正處於積累學習階段的C++/C#、移動平台開發者。