淺析使用WCF宿主
之前我們就自宿主做了詳解,現在我們就宿主和大家分析一下,大家可能認為這不是一回事嗎?其實不然,我們這里就來看看吧。每個WCF服務必須宿主在一個Windows進程中(稱為宿主進程)。單個宿主進程可以宿主多個服務,而相同的服務類型可以宿主在多個進程中。WCF宿主并不要求是否該宿主進程也是客戶端進程。
顯然,應該有一個獨立的進程支持錯誤和安全的隔離。另外,誰提供進程或調用哪種類型的進程都不是實質性的問題。這個WCF宿主可以由IIS或Windows Vista中的Widows活動服務(WAS)或由開發者作為應用程序的一部分來提供。
IIS宿主
#T#在IIS中宿主一個服務的主要優點是,在發生客戶端請求時宿主進程會被自動啟動,并且你可以依靠IIS來管理宿主進程的生命周期。IIS宿主的主要不利在于,你僅僅可以在IIS5和IIS6上使用HTTP傳輸數據;而且當使用IIS5時,你僅可以使用80端口。在IIS上宿主非常類似于WCF宿主一個典型的 ASMX Web服務。你需要在IIS下創建一個虛擬的目錄并且提供一個.svc文件。這個.svc文件的功能就象一個被用來標識服務的code-behind文件和類的.asmx文件一樣。
- <%@ ServiceHost
- Language = "C#"
- Debug = "true"
- CodeBehind = "~/App_Code/MyService.cs"
- Service = "MyService"
- %>
你甚至可以把服務代碼以內聯方式注入到.svc文件中,但是不建議這樣用(就象對于ASMX的情形一樣)。一旦你準備好了.svc文件,你就可以使用一個瀏覽器來觀看它。如果一切順利,那么你將得到一個確認頁面。
Visual Studio 2005能夠為你生成一個新的IIS宿主的服務。這只要從File菜單下選擇"New Website",然后從"New Web Site"對話框中選擇WinFX服務。這使得Visual Studio 2005創建一個新的Web站點,服務代碼和匹配的.svc文件。另外,Web站點配置文件必須列舉出你想要暴露的服務類型。你需要使用完全限定類型名(包括程序集名),如果類型來自于一個未引用的程序集的話。
- <system.serviceModel>
- <services>
- <service name="MyNamespace.MyService">
- ...
- </service>
- </services>
- </system.serviceModel>