Як розмістити службу wcf в керованої службі windows

У цьому розділі описані основні кроки по створенню служби Windows Communication Foundation (WCF), розміщеної в службі Windows. Сценарій реалізується за допомогою можливості розміщення в керованої службі Windows і являє собою працюючу протягом тривалого часу службу WCF, розміщену за межами служб IIS в захищеному середовищі, яке не активується повідомленнями. Замість цього час існування служби контролюється операційною системою. Даний варіант розміщення доступний в усіх версіях Windows.

Службами Windows можна управляти за допомогою Microsoft.ManagementConsole.SnapIn в консолі управління (MMC) і можна налаштувати їх автоматичний запуск при завантаженні системи. Можливість розміщення складається з реєстрації домену додатки, де служба WCF розміщена як керована служба Windows, так що час існування процесу служби контролюється диспетчером служб для служб Windows.

Створення служби та надання коду розміщення

Створіть новий проект консольного застосування Visual Studio з ім'ям Service.

Змініть ім'я файлу Program.cs на Service.cs.

Змініть простір імен на Microsoft.ServiceModel.Samples.

Додайте посилання на наступні збірки.

Додайте наступні оператори using в файл Service.cs.

Визначте контракт служби ICalculator. як показано в наступному коді.

Реалізуйте контракт служби в класі з ім'ям CalculatorService. як показано в наступному коді.

Створіть новий клас з ім'ям CalculatorWindowsService. похідний від класу ServiceBase. Додайте локальну змінну з ім'ям serviceHost. щоб створити посилання на екземпляр ServiceHost. Визначте метод Main. який викликає ServiceBase.Run (new CalculatorWindowsService).

Перевизначите метод OnStart (String []). створивши і відкривши новий екземпляр ServiceHost. як показано в наступному коді.

Перевизначите метод OnStop. закриває ServiceHost. як показано в наступному коді.

Створіть новий клас з ім'ям ProjectInstaller. похідний від Installer і позначений атрибутом RunInstallerAttribute. встановленим в значення true. Це дозволяє встановлювати службу Windows програмою Installutil.exe.

Видаліть клас Service. створений при створенні проекту.

Додайте в проект файл конфігурації програми. Замініть вміст цього файлу наступним XML-кодом конфігурації.

Клацніть правою кнопкою миші файл App.config у вікні Оглядач рішень і виберіть пункт Властивості. У групі Копіювати у вихідний каталог виберіть пункт Копіювати новіші.

У цьому прикладі кінцеві точки явно задаються у файлі конфігурації. Якщо в службу не додана жодна кінцева точка, то Виконавча додає кінцеві точки за замовчуванням. У цьому прикладі, оскільки в службі параметр ServiceMetadataBehavior встановлений в значення true. в ній також включена публікація метаданих. Додаткові відомості про про кінцевих точках за замовчуванням, привязках і поведениях см. В розділах Спрощена конфігурація і Спрощена конфігурація служб WCF.

Установка і запуск служби

Побудуйте рішення, щоб створити виконуваний файл Service.exe.

У командному рядку введіть services.msc. щоб отримати доступ до диспетчера служб. Служба Windows повинна з'явитися в списку служб з ім'ям WCFWindowsServiceSample. Служба WCF може відповідати клієнтам, тільки якщо запущена служба Windows. Щоб запустити службу, клацніть її правою кнопкою миші в диспетчері служб і виберіть «Запустити» або введіть у командному рядку net start WCFWindowsServiceSample.

Щоб внести зміни в службу, необхідно попередньо зупинити її і видалити. Щоб зупинити службу, клацніть її правою кнопкою миші в диспетчері служб і виберіть «Зупинити» або введіть у командному рядку type net stop WCFWindowsServiceSample. Врахуйте, що якщо зупинити службу Windows, а потім запустити клієнт, то коли клієнт спробує звернутися до служби, буде викликано виключення EndpointNotFoundException. Щоб видалити службу Windows, в командному рядку введіть installutil / u bin \ service.exe.

Код, який використовується в цьому розділі, повністю наведено нижче.

Схожі статті