Веб-сервисы, Программирование, Сервис-ориентированные системы

Основы разработки WCF-служб. Часть 6. Размещение WCF-службы как службы Windows

Размещаем WCF-службу в качестве отдельной службой Windows. Основы разработки WCF-служб. Часть 6. Размещение WCF-службы как службы Windows
Иван Артамоновhttps://artamonoviv.ru/images/icon/logo.png
Внимание! Эта статья была опубликована в 2012 году в книге "Разработка распределенных сервисно-ориентированных программных средств". Использование материалов из нее разрешено только при правильной библиографической ссылке (для докладов, курсовых работы, рефератов, дипломных и пр. научных работ) или url-ссылки (для сайтов). Библиографическое описание дано в конце статьи.
PDF-версия статьи: скачать
Размещаем WCF-службу в качестве отдельной службой Windows.

Разработка библиотеки WCF-службы проводится здесь: Основы разработки WCF-служб. Часть 3. Разработка простой WCF-службы. А разработка клиентского приложения для нее проводится здесь: Основы разработки WCF-служб. Часть 4. Клиент для службы.

Задача: Разместить WCF-службу в отдельной Windows-службе.

Работа службы в качестве отдельного приложения – не самый лучший вариант. В первую очередь из-за совсем ненужной интерактивности для взаимодействия с пользователем. Системная служба Windows же может автоматически запускаться и перезапускаться, реагировать на ошибки и выполняться вне зависимости от пользователя.

Внимание! Для выполнения этой работы необходимы привилегии локального администратора системы.

1. Разработка службы

Создайте новое приложение "Служба Windows" (также, как и консольное, только выбрать надо "Служба Windows") и назовите его, например, "e_servicewindows". Среда разработки создаст все необходимые файлы.

В "Обозревателе решений" щелкните по "Service1.cs". Ниже "Обозревателя" откроется окно "Свойства", где можно изменить некоторые свойства поведения службы. В полях "Name" и "ServiceName" измените запись с "Service1", например, на "BookService".

Щелкните правой кнопкой свободной области в центре экрана (вкладка "Service1.cs [Конструктор]") и выберите "Добавить установщик". На свободной области появится два поля: "serviceProcessInstaller1" и "serviceInstaller1".

Выделите "serviceProcessInstaller1" и в окне "Свойства" в поле "Account" смените "User" на "LocalSystem". Таким образом вы измените режим входа службы в систему на "С системной учетной записью". Выделите "serviceInstaller1" и в поле "ServiceName" введите "BookService". Это позволит службе установиться в Windows с таким именем.

Далее добавьте ссылки на службу "b_FirstService" и пространство имен "System.ServiceModel", так же, как и в предыдущей статье: Основы разработки WCF-служб. Часть 5. Размещение службы в отдельном процессе.

Щелкните правой кнопкой на "Service1.cs" и выберите "Перейти к коду". Откроется код службы, в котором уже предусмотрены обработчики событий запуска и остановки службы. Подключите оба пространства имен через "using".

После объявления класса, перед функцией public BookService() пропишите ту же строку инициализации "ServiceHost", что и в прошлой работе:

Теперь необходимо отреагировать на событие "Старт" службы. Для этого в функции "protected override void OnStart(string[] args)" необходимо прописать инициализацию конечной точки и открыть "ServiceHost":

При событии "Стоп" необходимо закрыть хост. То есть в функции "protected override void OnStop()" запишите:

Должен получиться примерно такой код:

Таким образом, при запуске Windows-службы будет создан экземпляр WCF-службы, которая начнет принимать подключение. При остановке службы, WCF -служба так же остановится.

2. Установка и запуск службы

Теперь службу необходимо установить. С помощью утилиты "InstallUtil.exe", которая входит в поставку Microsoft.NET, – это простая задача.

Запустите командную строку Visual Studio. Эта программа находиться в папке Microsoft Visual Studio (меню "Пуск") в подпапке Visual Studio Tools.

Пропишите в командной строке:

И нажмите . Путь до вашей службы скорей всего будет такой: "\e_servicewindows\e_servicewindows\bin\Debug\e_servicewindows.exe"

Если установка пройдет успешно, то последние строчки выведенного текста будут приблизительно таковы: "The Commit phase completed successfully. The transacted install has completed."

Откройте оснастку администрирования служб. "Панель управления" : "Администрирование" : "Службы". В списке служб должна появиться "BookService".

Запустите службу. Запустите клиента из статьи: Основы разработки WCF-служб. Часть 4. Клиент для службы. Убедитесь, что клиент работает со службой.

После окончания работы не забудьте удалить службу. Это можно сделать, например, через командную строку:

В следующей статье рассматривается рассматривается добавление нескольких конечных точек для службы: Основы разработки WCF-служб. Часть 7. Добавление нескольких конечных точек службы.


Библиографическое описание

Артамонов, И. В. Разработка распределенных сервисно-ориентированных программных средств / Иван Васильевич Артамонов. – Иркутск : БГУЭП, 2012. – 130 с.

URL-ссылка

https://artamonoviv.ru/articles/wcf_tutorial_6/