Учебники

WCF — Windows Service Hosting

Работа хостинга Windows-сервиса проста. Ниже приведены шаги с необходимым кодированием и скриншотами, которые объясняют процесс простым способом.

Шаг 1 — Теперь давайте создадим сервис WCF. Откройте Visual Studio 2008, нажмите «Создать» → «Проект» и выберите «Библиотека классов» из шаблона.

Wcf Хостинг Windows Сервис 1

Шаг 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».

Wcf Хостинг Windows Сервис 1

Шаг 7 — Добавьте «WindowsServiceHostedService.dll» в качестве ссылки на проект. Эта сборка будет выступать в качестве службы.

Wcf Hosting Services Служба Windows 4

Шаг 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. Используя утилиту установки утилиты, вы можете установить сервис, как показано ниже.