Windows 服務主機
這個範例會示範裝載於受管理 Windows 服務中的 Windows Communication Foundation (WCF) 服務。 Windows 服務是使用 [控制台] 中的 [服務] 小程式控制,並且可以設定為在系統重新開機後自動啟動。 範例是由用戶端程式與 Windows 服務程式所組成。 服務會實作為 .exe 程式並包含專屬的裝載程式碼。 在其他裝載環境中,例如 Windows 處理序啟用服務 (WAS) 或 Internet Information Services (IIS),就不需要撰寫裝載程式碼。
注意: |
---|
此範例的安裝程序與建置指示位於本主題的結尾。 |
注意: |
---|
這些範例可能已安裝在您的電腦上。 請先檢查下列 (預設) 目錄,然後再繼續。
<InstallDrive>:\WF_WCF_Samples
如果此目錄不存在,請移至用於 .NET Framework 4 的 Windows Communication Foundation (WCF) 與 Windows Workflow Foundation (WF) 範例 (英文),以下載所有 Windows Communication Foundation (WCF) 和 WF 範例。 此範例位於下列目錄。
<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WindowsService
|
在這個服務完成建置後,它必須像任何其他 Windows 服務一樣使用 Installutil.exe 公用程式安裝。 如果要變更服務,就必須先以 installutil /u
將它解除安裝。 這個範例中包含的 Setup.bat 和 Cleanup.bat 檔是用來安裝和啟動 Windows 服務,以及關閉和解除安裝 Windows 服務的命令。 只有在執行 Windows 服務的情況下,WCF 服務才會回應用戶端。 如果您從 [控制台] 中使用 [服務] 小程式停止 Windows 服務,並接著執行用戶端,則當用戶端嘗試存取此服務時將會發生 EndpointNotFoundException 例外狀況。 如果重新啟動 Windows 服務然後重新執行用戶端,就可成功進行通訊。
這段服務程式碼包含安裝程式類別、會實作 ICalculator 合約的 WCF 服務實作類別,以及做為執行階段主機的 Windows 服務類別。 繼承自 Installer 的安裝程式類別,會允許 Installutil.exe 工具將程式當做 NT 服務進行安裝。 服務實作類別 WcfCalculatorService
是實作基本服務合約的 WCF 服務。 這個 WCF 服務是裝載於稱為 WindowsCalculatorService
的 Windows 服務類別中。 為了限定為 Windows 服務,此類別會繼承自 ServiceBase,並且實作 OnStart 和 OnStop 方法。 使用 OnStart 時,會建立並開啟型別為 WcfCalculatorService
的 ServiceHost 物件。 使用 OnStop 時,會呼叫 ServiceHost 物件的 Close 方法來關閉 ServiceHost。 設定主機基底位址的方式是使用 <add> of <baseAddress> 項目,而 <add> of <baseAddress> 項目是 <baseAddresses> 的子系,<baseAddresses> 項目是 <host> 項目的子系,<host> 項目又是 <service> 項目的子系。
所定義的端點會使用基底位址以及 wsHttpBinding Element。 下列範例會示範設定基底位址,以及會公開 (Expose) CalculatorService 的端點。
<services>
<service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="https://localhost:8000/ServiceModelSamples/service"/>
</baseAddresses>
</host>
<!-- This endpoint is exposed at the base address provided by host: https://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
...
</service>
</services>
當您執行範例時,作業要求和回應會顯示在服務與用戶端主控台視窗中。 在每個主控台視窗中按下 ENTER 鍵,即可關閉服務與用戶端。
若要設定、建置及執行範例
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。
在建置方案後,從提高權限的 Visual Studio 2010 命令提示字元執行 Setup.bat,以便使用 Installutil.exe 工具來安裝 Windows 服務。 此時該服務就會出現在 [服務] 中。
若要在單一或跨電腦的組態中執行本範例,請遵循Running the Windows Communication Foundation Samples中的指示。