WCF - Dịch vụ lưu trữ Windows

Hoạt động của dịch vụ lưu trữ Windows là một hoạt động đơn giản. Dưới đây là các bước với mã hóa và ảnh chụp màn hình cần thiết giải thích quy trình một cách dễ dàng.

Step 1- Bây giờ chúng ta hãy tạo một dịch vụ WCF. Mở Visual Studio 2008 và nhấp vào Mới → Dự án và chọn Thư viện Lớp từ mẫu.

Step 2- Thêm tham chiếu System.ServiceModel vào dự án. Đây là tập hợp cốt lõi được sử dụng để tạo dịch vụ WCF.

Step 3- Tiếp theo, chúng ta có thể tạo giao diện ISimpleCalulator. Thêm thuộc tính Hợp đồng Dịch vụ và Vận hành như hình dưới đây -

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 - Triển khai giao diện ISimpleCalculator như hình dưới đây -

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- Xây dựng Dự án và lấy dll. Bây giờ, chúng tôi đã sẵn sàng với dịch vụ WCF. Chúng ta sẽ xem cách lưu trữ dịch vụ WCF trong dịch vụ Windows.

Note- Trong dự án này, có đề cập rằng chúng tôi đang tạo cả Hợp đồng và Dịch vụ (thực hiện) trong cùng một dự án. Tuy nhiên, nó luôn là một thực tiễn tốt nếu bạn có cả hai trong các dự án khác nhau.

Step 6 - Mở Visual Studio 2008 và nhấp vào New → Project và chọn Windows Service.

Step 7- Thêm 'WindowsServiceHostedService.dll' làm tham chiếu đến dự án. Lắp ráp này sẽ hoạt động như một dịch vụ.

Step 8- Phương thức OnStart của dịch vụ có thể được sử dụng để viết mã lưu trữ cho WCF. Chúng tôi phải đảm bảo rằng chúng tôi đang sử dụng duy nhất một đối tượng máy chủ dịch vụ. Phương pháp OnStop được sử dụng để đóng Máy chủ dịch vụ. Đoạn mã sau đây cho thấy cách lưu trữ dịch vụ WCF trong dịch vụ 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- Để cài đặt dịch vụ, chúng ta cần có lớp Installer cho dịch vụ Windows. Vì vậy, hãy thêm một lớp Trình cài đặt mới vào dự án, lớp này được kế thừa từ lớp Trình cài đặt. Dưới đây là mã hiển thị Tên dịch vụ, loại StartUp, v.v. của dịch vụ.

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- Xây dựng dự án lấy file thực thi WCFHostedWindowsService.exe. Tiếp theo, chúng ta cần cài đặt dịch vụ bằng Visual Studio Command Prompt. Vì vậy, hãy mở dấu nhắc lệnh bằng cách nhấp vào Bắt đầu → Tất cả chương trình → Microsoft Visual Studio 2008 → Công cụ Visual Studio → Dấu nhắc lệnh Visual Studio. Sử dụng ứng dụng tiện ích cài đặt, bạn có thể cài đặt dịch vụ như hình dưới đây.