Windows 服务主机

此示例演示在托管 Windows 服务中承载的 Windows Communication Foundation (WCF) 服务。Windows 服务是使用**“控制面板”**上的“服务”小程序控制的,所以可以配置为在系统重新启动后自动启动。此示例包含一个客户端程序和一个 Windows 服务程序。服务作为一个 .exe 程序实现,并包含其自己的宿主代码。在其他承载环境(如 Windows 进程激活服务 (WAS) 或 Internet 信息服务 (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 继承并实现 OnStartOnStop 方法。在 OnStart 中,为 WcfCalculatorService 类型创建并打开了 ServiceHost 对象。在 OnStop 中,通过调用 ServiceHost 对象的 Close 方法关闭了 ServiceHost。主机的基本地址是使用 <add> of <baseAddress> 元素配置的,该元素是 <baseAddresses> 的一个子元素,它又是 <host> 元素的一个子元素,而该元素又是 <service> 元素的一个子元素。

定义的终结点使用基本地址和一个 wsHttpBinding Element。下面的示例演示了基本地址的配置以及公开 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.