共用方式為


Windows 服務主機

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

注意

此範例的安裝程序與建置指示位於本主題的結尾。

在這個服務完成建置後,它必須像任何其他 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(String[])OnStop() 方法。 使用 OnStart(String[]) 時,會建立並開啟型別為 ServiceHostWcfCalculatorService 物件。 使用 OnStop() 時,會呼叫 Close(TimeSpan) 物件的 ServiceHost 方法來關閉 ServiceHost。 設定主機基底位址的方式是使用 <add> 元素,也就是 <baseAddresses> 的子系,也就是 <host> 元素的子系,也就是是 <service> 元素的子系。

所定義的端點會使用基底位址以及 <wsHttpBinding>。 下列範例會示範設定基底位址,以及會公開 (Expose) CalculatorService 的端點。

<services>
  <service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
           behaviorConfiguration="CalculatorServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
      </baseAddresses>
    </host>
    <!-- This endpoint is exposed at the base address provided by host: http://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 版本,請遵循 Building the Windows Communication Foundation Samples中的指示。

  3. 在建置方案後,從提高權限的 Visual Studio 命令提示字元執行 Setup.bat,以便使用 Installutil.exe 工具來安裝 Windows 服務。 此時該服務就會出現在 [服務] 中。

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

另請參閱