Windows 服務主機

這個範例會示範裝載於受管理 Windows 服務中的 Windows Communication Foundation (WCF) 服務。Windows 服務是使用 [控制台] 中的 [服務] 小程式控制,並且可以設定為在系統重新開機後自動啟動。範例是由用戶端程式與 Windows 服務程式所組成。服務會實作為 .exe 程式並包含專屬的裝載程式碼。在其他裝載環境中,例如 Windows Process Activation Services (WAS) 或網際網路資訊服務 (IIS),就不需要撰寫裝載程式碼。

ms751414.note(zh-tw,VS.90).gif注意:
此範例的安裝程序與建置指示位於本主題的結尾。

在這個服務完成建置後,它必須像任何其他 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,並且實作 OnStartOnStop 方法。使用 OnStart 時,會建立並開啟型別為 WcfCalculatorServiceServiceHost 物件。使用 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 鍵,即可關閉服務與用戶端。

若要設定、建置及執行範例

  1. 請確定您已執行 Windows Communication Foundation 範例的單次安裝程序

  2. 若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。

  3. 在建置方案後,執行 Setup.bat 以使用 Installutil.exe 工具安裝 Windows 服務。此時該服務就會出現在 [服務] 中。

  4. 若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.