Thứ Sáu, 17 tháng 3, 2023

 

Cách tạo một Windows Service Applications đơn giản trong Visual Studio với CSharp

 Windows Service Applications  hay là Microsoft Windows services  ( còn gọi là các NT services)  cho phép chúng ta viết các ứng dụng chạy ngầm bên trong các phiên làm việc của Windows mà không cần có giao diện người sử dụng để tương tác với chúng.

      Mục đích của chúng để thực hiện các công việc theo một quy trình tuần hoàn nào đó với các tham số, cấu hình được định nghĩa trước mà người sử dụng không cần phải can thiệp thông qua giao diện, chúng được thiết lập các tham số để chạy.  Các services này có thể được chạy một cách tự động chạy khi máy tính khởi động, có thể tạm dừng và khởi động lại services.

     Dưới đây xin trình bày các tạo ra một Window Services đơn giản nhất sử dụng Visual Studio 2012.

Windows Service Applications hay là Microsoft Windows services ( còn gọi là các NT services) cho phép chúng ta viết các ứng dụng chạy ngầm bên

 

       Đặt tên cho Project Services rồi  nhấn Ok, Project Windows Service sẽ có cấu trúc như sau.

Tao Project Windows Services Trong Visual Studio 2012 -01

      File chính mặc định của Project là Services1.cs,  trong ví dụ được đổi thành tên DemoServices.cs theo tên Project.

      Các ứng dụng Windows Services do người dùng viết đều được kế thừa từ lớp ServiceBase  trong namspace có tên  System.ServiceProcess.

1.  Ghi lại hoạt động của Services bằng EventLog

      Do các Windows Services không có giao diện người sử dụng, nên để theo dõi hoạt động của  Services người ta thường sử dụng Log của window để chứa các thông tin liên quan tới các thao tác xử lý bên trong Services. Để cập nhật vào dữ liệu Log của Window. Trong C# người ta sẽ sử dụng lớp EventLog trong namespace System.Diagnostics

      Việc khởi tạo đối tượng ghi Log của Window thường diễn ra trong Constructor của lớp Services, trong ví dụ này là DemoServices

    Thuộc tính Source dùng để định danh cho Log giúp, thường có tên trùng với ứng dụng để xác định Log này được dùng cho ứng dụng nào, trong ví dụ này là DemoSource.  Đoạn code trên giúp kiểm tra xem đã tồn tại Log nào sử dụng tên như vậy trong hệ thống chưa, nếu chưa tồn tại thì thực hiện log.

2.  Xử lý nghiệp vụ mang tính tuần hoàn bằng cách sử dụng 1 Timer.

      Mục đích sử dụng của Windows Services thường dùng để giải quyết các công việc theo quy trình mang tính chất lặp đi lặp lại và để thực hiện điều này trong Windows Services chúng ta thường sử dụng 1 Timer,  Trong C# cung cấp lớp Timer trong namspace System.Timers .

      Việc khởi tạo đối tượng Timer của Window thường diễn ra trong Constructor của lớp Services, trong ví dụ này là DemoServices

3. Các phương thức khác.

      Khi tạo Windows Services thường sẽ có thêm 2 phương thức cơ bản dùng để khởi động hoặc tắt Services bao gôm OnStart và OnStop như sau

       Nếu có sử dụng Timer bên trong Services thì Onstart thường sẽ là nơi dừng quy trình cũ và thự hiện quy trính mới.

Nếu có sử dụng Timer bên trong Services thì OnStop thường sẽ là nơi dừng quy trình cũ

Ngoải ra còn có thể bổ sung cho Services một sốcác phương thức hỗ trợ như tạm dừng ( OnPause), tiêp tục ( OnContinue),..

Dưới đây là toàn bộ code đẩy đủ của ví dụ.

4.  Tạo thông tin cài đặt cho Services bằng cách sử dụng lớp Installer

Để cài đặt services cần tạo bộ cài đặt cho Serivces thông qua lớp Installer của namspace System.Configuration.Install

Kích chuột phải vào file DemoServices chọn View Designer trên Visual Studio. Tại View Designer tiếp chọn Add Installer. 

Tao Project Windows Services Trong Visual Studio 2012 -02

5. Thực hiện Cài đặt Services thực tế trên hệ thống

     Có nhiểu cách để hỗ trợ bạn cài đặt window services:

 Cách 1 : Sử dụng lệnh command line sc để cài đặt Windows Services

 Cách 2 : Sử dụng tiên ích có sẵn của Visual Studio – Công cụ Installutil.exe ( thường sử dụng khi tự test)

  • Để cài đặt Windows Services, bạn phải có quyền Admin trên máy tính cần cài đặt. Các bước cài nh sau:
  1. Trong  Windows 7 và Windows Server, mở Developer Command Prompt  của Visual Studio Tools trong Start. Trong Windows 8 hoặc  Windows 8.1, chọn Visual Studio Tools trong màn hình Start, và chạy Developer Command Prompt với quyền Admin. (thực hiện right-click trên Developer Command Prompt, và chọn Run as Administrator.)

  2. Mở Command Prompt window, di chuyển tới file Exe project Windows Serivces  của bạn. Ví dụ của tôi là:  Visual Studio 2013\Projects\WindowSerivcesDemo\bin\Debug.

  3. Chạy dòng lệnh sau:

Cách 3 : Tạo Project cài đặt, được sử dụng khi Services được tạo trên máy khách hàng

      Xem chi tiết : tại đây

Cách 4 : Sử dụng bằng tay với các lệnh của PowerShell

Một sỗ lỗi khi cài đặt

    – Lỗi : “The source was not found, but some or all event logs could not be searched.  Inaccessible logs: Security.”

    – Khắc phục : chạy Developer Command Prompt với quyền Admin

 6. Kiểm tra Services sau cài đặt

     Kiểm tra services cài đặt thành công chưa bằng cách mở màn hình Start hoăc menu Start, và gõ services.msc.

Tao Project Windows Services Trong Visual Studio 2012 -04

    Start Services  bằng cách kích chuột phải và Start. Kiểm tra log xem thông tin hoạt động của Services.

Tao Project Windows Services Trong Visual Studio 2012 -03

Nguồn: https://hoctoantap.com/2016/08/12/cach-tao-mot-windows-service-applications-don-gian-trong-visual-studio-voi-csharp.html

Không có nhận xét nào: