[C#.NET][WCF] 一隻簡單的 Console Application Self-Host
[WCF] 第一隻簡單的 IIS Host 上篇提到WCF可裝載於 Windows 的應用程式,不必依賴IIS,以下將實作如何建立 Host 載體
@WcfServiceLibrary 專案:
先建立WCF Service專案,名為 WcfServiceLibrary 。
@WcfServiceLibrary 專案:
把合約規範都定義好。
@WcfServiceHost專案:
接下來呢,我需要一個Windows Console專案,用來當WCF的載體,我將它命名為 WcfServiceHost。
@在 WcfServiceHost 專案:
加入 WcfServiceLibrary 專案參考。
@在 WcfServiceHost 專案:
加入 System.ServiceModel參考。
把WcfServiceLibrary專案裡的App.Config,拖拉到WcfServiceHost專案裡。
@在 WcfServiceHost 專案:
使用 ServiceHost.Open方法,將 WCF 掛載起來。
@在 WcfServiceClient 專案:
再來,新增一個桌面應用程式專案,我將它命名為WcfServiceClient
@App.Config:
Host服務的位置,我在這裡是用預設的位置,只要埠號沒被其他程式佔用即可。
@WcfServiceClient專案:
將 WcfServiceHost 加入參考,此時就會看到Windows會將Wcf Host掛載起來
@WcfServiceClient專案裡,UI設計如下
@WcfServiceClient專案裡,當加入WcfServiceHost後,我們就可以使用WcfServiceHost的Proxy類別了。
PS.若無法加入Host 參考,表示Host沒有執行
@WcfServiceClient專案:
設定為啟動專案,按下F5執行程式,便可看到以下畫面。
PS.裝載程式要比Clien程式還要早執行。
最終,WcfServiceLibrary不需要有App.Config,我們必須確保Console Application有掛載WCF。
1.將WcfServiceLibrary專案的App.Conifg刪掉
2.將方案設為多專案啟動(Host要比Client還要早執行)
按下F5就可以看到以下。
把握住兩個原則
- WCF Service不能獨立運行,必須要有載體。
- 載體要比Client應用程式還要早執行。
若想要改變Host的位置
當App.Config修改完畢後
位置變更後手動執行Host
別忘了更新Client的參考位置
修改新位置
範例下載:
補充:專案必須以系統管理員身份執行,否則會跳出例外
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET