Узел службы 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>
При запуске данного примера запросы и ответы операций отображаются в окнах консоли как службы, так и клиента. Нажмите клавишу ВВОД в каждом окне консоли, чтобы закрыть службу и клиент.
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.
После создания решения запустите Setup.bat из командной строки с повышенными привилегиями Visual Studio, чтобы установить службу Windows с помощью средства Installutil.exe. Теперь служба должна отображаться в списке служб.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".