Узел службы Windows
В этом образце показана служба Windows Communication Foundation (WCF), размещенная в управляемой службе Windows. Службы Windows управляются с помощью компонента "Службы" в Панели управления, и их можно настраивать таким образом, чтобы они автоматически запускались после перезагрузки системы. Этот образец состоит из клиентской программы и программы службы Windows. Служба реализуется как программа EXE и содержит свой собственный код размещения. В других средах размещения, таких как служба активации Windows (WAS) или IIS, писать код размещения необязательно.
Примечание |
---|
Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела. |
Примечание |
---|
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).
<диск_установки>:\WF_WCF_Samples
Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<диск_установки>:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WindowsService
|
После построения этой службы ее необходимо установить с помощью служебной программы Installutil.exe, как и все остальные службы Windows. Если предполагается вносить изменения в службу, необходимо сначала удалить ее с помощью команды installutil /u
. Входящие в состав этого образца файлы Setup.bat и Cleanup.bat содержат команды для установки и запуска службы Windows, а также для отключения и удаления службы Windows. Служба WCF может отвечать клиентам, только если запущена служба Windows. Если остановить службу Windows с помощью компонента "Службы" в Панели управления, а затем запустить клиент, при попытке клиента обратиться к службе возникнет исключение EndpointNotFoundException. Если перезапустить службу Windows и клиент, обращение произойдет успешно.
Код службы включает класс установщика, класс реализации службы WCF, который реализует контракт ICalculator и класс службы Windows, который выступает в роли основного приложения среды выполнения. Класс установщика, унаследованный от класса Installer, позволяет устанавливать программу как службу NT с помощью средства Installutil.exe. Класс реализации службы WcfCalculatorService
является службой WCF, которая реализует базовый контракт службы. Эта служба WCF размещается в классе службы Windows с именем WindowsCalculatorService
. Чтобы считаться службой Windows, этот класс наследует от класса ServiceBase и реализует методы OnStart и OnStop. В методе OnStart создается и открывается объект ServiceHost для типа WcfCalculatorService
. В методе 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>
При выполнении образца запросы и ответы операций отображаются в окнах консоли как службы, так и клиента. Нажмите клавишу ВВОД в каждом окне консоли, чтобы закрыть службу и клиент.
Настройка, построение и выполнение образца
Убедитесь, что выполнены процедуры, описанные в разделе Процедура однократной настройки образцов Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Построение образцов Windows Communication Foundation.
После построения решения запустите файл Setup.bat из командной строки Visual Studio 2010 с повышенными привилегиями, чтобы установить службу Windows с помощью программы Installutil.exe. Теперь служба должна отображаться в списке служб.
Чтобы запустить образец на одном или нескольких компьютерах, следуйте инструкциям в разделе Running the Windows Communication Foundation Samples.