Работа хостинга Windows-сервиса проста. Ниже приведены шаги с необходимым кодированием и скриншотами, которые объясняют процесс простым способом.
Шаг 1 — Теперь давайте создадим сервис WCF. Откройте Visual Studio 2008, нажмите «Создать» → «Проект» и выберите «Библиотека классов» из шаблона.
Шаг 2 — Добавьте ссылку System.ServiceModel в проект. Это базовая сборка, используемая для создания службы WCF.
Шаг 3 — Далее мы можем создать интерфейс ISimpleCalulator. Добавьте атрибут контракта на обслуживание и эксплуатацию, как показано ниже —
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; namespace WindowsServiceHostedService{ [ServiceContract] public interfaceISimpleCalculator { [OperationContract] int Add(int num1, int num2); [OperationContract] int Subtract(int num1, int num2); [OperationContract] int Multiply(int num1, int num2); [OperationContract] double Divide(int num1, int num2); } }
Шаг 4 — Реализуйте интерфейс ISimpleCalculator, как показано ниже —
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsServiceHostedService { Class SimpleCalulator : ISimpleCalculator { Public int Add(int num1, int num2) { return num1 + num2; } Public int Subtract(int num1, int num2) { return num1 - num2; } Public int Multiply(int num1, int num2) { return num1 * num2; } Public double Divide(int num1, int num2) { if (num2 != 0) return num1 / num2; else return 0; } } }
Шаг 5 — Постройте проект и получите dll. Теперь мы готовы с сервисом WCF. Мы увидим, как разместить службу WCF в службе Windows.
Примечание. В этом проекте упоминается, что мы создаем как Контракт, так и Сервис (реализацию) в одном проекте. Однако это всегда хорошая практика, если у вас есть оба в разных проектах.
Шаг 6. Откройте Visual Studio 2008, нажмите «Создать» → «Проект» и выберите «Служба Windows».
Шаг 7 — Добавьте «WindowsServiceHostedService.dll» в качестве ссылки на проект. Эта сборка будет выступать в качестве службы.
Шаг 8. Метод OnStart службы можно использовать для написания кода хостинга для WCF. Мы должны убедиться, что мы используем только один объект узла службы. Метод OnStop используется для закрытия узла службы. Следующий код показывает, как разместить службу WCF в службе Windows.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.ServiceModel; using System.ServiceModel.Description; namespace WCFHostedWindowsService { Partial class WCFHostedWindowsService : ServiceBase { ServiceHostm_Host; Public WCFHostedWindowsService() { InitializeComponent(); } Private void InitializeComponent() { thrownewNotImplementedException(); } protectedoverridevoidOnStart(string[] args) { if (m_Host != null) { m_Host.Close(); } //Create a URI to serve as the base address UrihttpUrl = newUri("http://localhost:8090/WindowsServiceHostedService/SimpleCalculator"); //Create ServiceHost m_Host = newServiceHost typeof(WindowsServiceHostedService.SimpleCalulator), httpUrl); //Add a service endpoint m_Host.AddServiceEndpoint (typeof(WindowsServiceHostedService.ISimpleCalculator), newWSHttpBinding(), ""); //Enable metadata exchange ServiceMetadataBehaviorsmb = newServiceMetadataBehavior(); smb.HttpGetEnabled = true; m_Host.Description.Behaviors.Add(smb); //Start the Service m_Host.Open(); } protectedoverridevoidOnStop() { if (m_Host != null) { m_Host.Close(); m_Host = null; } } staticvoid Main() { ServiceBase[] ServicesToRun; ServicesToRun = newServiceBase[] { newWCFHostedWindowsService(); } ServiceBase.Run(ServicesToRun); } } }
Шаг 9 — Чтобы установить службу, нам нужен класс Installer для службы Windows. Поэтому добавьте в проект новый класс Installer, который унаследован от класса Installer. Ниже приведен код, который показывает имя службы, тип запуска и т. Д. Службы.
using System; using System.Collections.Generic; using System.Text; using System.ServiceProcess; using System.Configuration.Install; using System.ComponentModel; using System.Configuration; namespace WCFHostedWindowsService { [RunInstaller(true)] Public class WinServiceInstaller : Installer { Private ServiceProcessInstaller process; Private ServiceInstaller service; Public WinServiceInstaller() { process = newServiceProcessInstaller(); process.Account = ServiceAccount.NetworkService; service = newServiceInstaller(); service.ServiceName = "WCFHostedWindowsService"; service.DisplayName = "WCFHostedWindowsService"; service.Description = "WCF Service Hosted"; service.StartType = ServiceStartMode.Automatic; Installers.Add(process); Installers.Add(service); } } }
Шаг 10 — Создайте проект, чтобы получить исполняемый файл WCFHostedWindowsService.exe. Далее нам нужно установить службу с помощью командной строки Visual Studio. Поэтому откройте командную строку, нажав Пуск → Все программы → Microsoft Visual Studio 2008 → Инструменты Visual Studio → Командная строка Visual Studio. Используя утилиту установки утилиты, вы можете установить сервис, как показано ниже.