WCF - Hosting Layanan Windows

Pengoperasian hosting layanan Windows itu sederhana. Diberikan di bawah ini adalah langkah-langkah dengan pengkodean dan tangkapan layar yang diperlukan yang menjelaskan proses dengan cara yang mudah.

Step 1- Sekarang mari buat layanan WCF. Buka Visual Studio 2008 dan klik New → Project dan pilih Class Library dari template.

Step 2- Tambahkan referensi System.ServiceModel ke proyek. Ini adalah rakitan inti yang digunakan untuk membuat layanan WCF.

Step 3- Selanjutnya, kita dapat membuat antarmuka ISimpleCalulator. Tambahkan atribut Kontrak Layanan dan Operasi seperti yang ditunjukkan di bawah ini -

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);
   }
}

Step 4 - Implementasikan antarmuka ISimpleCalculator seperti yang ditunjukkan di bawah ini -

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;
      }
   }
}

Step 5- Bangun Proyek dan dapatkan dll. Sekarang, kami siap dengan layanan WCF. Kita akan melihat bagaimana menghosting layanan WCF di layanan Windows.

Note- Dalam proyek ini, disebutkan bahwa kami membuat Kontrak dan Layanan (implementasi) dalam proyek yang sama. Namun itu selalu merupakan praktik yang baik jika Anda memiliki keduanya dalam proyek yang berbeda.

Step 6 - Buka Visual Studio 2008 dan Klik New → Project dan pilih Windows Service.

Step 7- Tambahkan 'WindowsServiceHostedService.dll' sebagai referensi ke proyek. Majelis ini akan bertindak sebagai layanan.

Step 8- Metode OnStart dari layanan dapat digunakan untuk menulis kode hosting untuk WCF. Kami harus memastikan bahwa kami hanya menggunakan satu objek host layanan. Metode OnStop digunakan untuk menutup Service Host. Kode berikut menunjukkan bagaimana menjadi tuan rumah layanan WCF di layanan 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);
      }
   }
}

Step 9- Untuk menginstal layanan, kita perlu memiliki kelas Penginstal untuk layanan Windows. Jadi tambahkan kelas Penginstal baru ke proyek, yang diwarisi dari kelas Penginstal. Diberikan di bawah ini adalah kode yang menunjukkan nama Layanan, jenis StartUp, dll dari layanan.

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);
      }
   }
}

Step 10- Bangun proyek untuk mendapatkan file yang dapat dieksekusi WCFHostedWindowsService.exe. Selanjutnya, kita perlu menginstal layanan menggunakan Visual Studio Command Prompt. Jadi buka command prompt dengan mengklik Start → All Programs → Microsoft Visual Studio 2008 → Visual Studio Tools → Visual Studio Command Prompt. Dengan menggunakan aplikasi install util utility, Anda dapat menginstal layanan seperti yang ditunjukkan di bawah ini.