Поделиться через


Узел службы Windows

В примере WindowsService показана служба Windows Communication Foundation (WCF), размещенная в управляемой службе Windows. Службы Windows управляются с помощью applet services в панель управления и могут быть настроены для автоматического запуска после перезагрузки системы. Этот образец состоит из клиентской программы и программы службы Windows. Служба реализуется как программа EXE и содержит свой собственный код размещения. В других средах размещения, таких как служба активации Windows (WAS) или IIS, писать код размещения необязательно.

Примечание.

Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.

После построения этой службы ее необходимо установить с помощью служебной программы Installutil.exe, как и все остальные службы Windows. Если предполагается вносить изменения в службу, необходимо сначала удалить ее с помощью команды installutil /u. Входящие в состав этого образца файлы Setup.bat и Cleanup.bat содержат команды для установки и запуска службы Windows, а также для отключения и удаления службы Windows. Служба WCF может реагировать только на клиентов, если служба Windows запущена. Если вы остановите службу Windows с помощью applet Services из панель управления и запустите клиент, EndpointNotFoundException исключение возникает при попытке клиента получить доступ к службе. Если перезапустить службу Windows и клиент, обращение произойдет успешно.

Код службы включает класс установщика, класс реализации службы WCF, реализующий контракт ICalculator, и класс службы Windows, который выступает в качестве узла среды выполнения. Класс установщика, унаследованный от класса Installer, позволяет устанавливать программу как службу NT с помощью средства Installutil.exe. Класс WcfCalculatorServiceреализации службы — это служба WCF, реализующая базовый контракт службы. Эта служба WCF размещается внутри класса WindowsCalculatorServiceслужбы Windows. Чтобы считаться службой Windows, этот класс наследует от класса ServiceBase и реализует методы OnStart(String[]) и OnStop(). В методе OnStart(String[]) создается и открывается объект ServiceHost для типа WcfCalculatorService. В методе OnStop() объект ServiceHost закрывается путем вызова метода Close(TimeSpan) объекта ServiceHost. Базовый адрес узла настраивается с помощью элемента add>, который является дочерним <элементом baseAddresses>, который является дочерним элементом узла>, который является дочерним<< элементом службы>.<

Определяемая конечная точка использует базовый адрес и wsHttpBinding>.< В следующем образце показана конфигурация базового адреса, а также конечной точки, предоставляющей службу 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>

При запуске данного примера запросы и ответы операций отображаются в окнах консоли как службы, так и клиента. Нажмите клавишу ВВОД в каждом окне консоли, чтобы закрыть службу и клиент.

Настройка, сборка и выполнение образца

  1. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

  2. Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.

  3. После создания решения запустите Setup.bat из командной строки с повышенными привилегиями Visual Studio, чтобы установить службу Windows с помощью средства Installutil.exe. Теперь служба должна отображаться в списке служб.

  4. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".

См. также