Hướng dẫn cách làm việc với các dịch vụ của Windows trong C#

Ngoc Huynh

Tận dụng lợi thế của dịch vụ Windows để xây dựng các ứng dụng có thể thực thi trong khoảng thời gian được xác định trước một cách tự động.

Một dịch vụ Windows là một ứng dụng bền vững có thể được bắt đầu tự động khi hệ thống của bạn bắt đầu hoạt động. Bạn có thể tạm dừng dịch vụ của bạn và tiếp tục lại hoặc thậm chí khởi động lại nếu cần thiết. Một khi bạn đã tạo ra một dịch vụ Windows, thì bạn có thể cài đặt nó vào hệ thống của bạn bằng cách sử dụng tiện ích dòng lệnh InstallUtil.exe.

Tại sao chúng ta cần một dịch vụ Windows?

Thông thường bạn sẽ muốn sử dụng các dịch vụ Windows khi cần phải xây dựng và thực hiện các công việc lâu dài được thực hiện trong khoảng thời gian xác định trước. Dịch vụ Windows của bạn sẽ tiếp tục chạy ở chế độ background trong khi các ứng dụng trong hệ thống của bạn có thể thực hiện cùng một lúc. Lưu ý rằng một dịch vụ Windows có thể tiếp tục thực hiện ở chế độ background ngay cả khi không có ai đăng nhập vào hệ thống của bạn.

Làm thế nào để làm việc với một dịch vụ Windows trong C#?

Để tạo ra một dịch vụ Windows trong Visual Studio 2015, các bạn hãy làm theo các bước hướng dẫn sau đây:
1. Mở Visual Studio 2015 IDE
2. Nhấp chuột vào File > New > Project
3. Chọn project template có tên là “Windows Service”
4. Chỉ rõ một tên gọi cho dịch vụ Windows
5. Nhấp vào OK

Điều này sẽ tạo ra một dự án dịch vụ Windows mới trong Visual Studio. Khi làm việc với các dịch vụ Windows, hai lớp (class) chính mà bạn sẽ cần đó là các lớp dịch vụ và lớp cài đặt dịch vụ. Các lớp dịch vụ là tập tin dịch vụ chính sẽ chứa tất cả những gì mà dịch vụ của bạn được cho là phải làm. Các lớp khác là trình cài đặt dịch vụ có chứa các lập trình và metadata (siêu dữ liệu) cần thiết để thiết lập dịch vụ.

Dưới đây là ví dụ về mã nguồn của dịch vụ mặc định (có tên là Service1 và được lưu trữ trong tập tin Service1.cs):

using System.ServiceProcess;
namespace IDGWindowsService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}
}

Lưu ý rằng tất cả các dịch vụ Windows của bạn nên mở rộng lớp ServiceBase. Như bạn có thể thấy trong ví dụ lập trình trên, thì sẽ có hai methods quan trọng trong lớp dịch vụ. Chúng bao gồm methods OnStart và OnStop. Trong khi trước đây các methods này sẽ được loại bỏ mỗi lần dịch vụ của bạn được khởi động bởi trình quản lý kiểm soát dịch vụ (service control manager), sau này thì chúng được loại bỏ mỗi lần dịch vụ được dừng lại bởi trình quản lý kiểm soát dịch vụ.

Bạn có thể tận dụng lợi thế của lớp Timer để chỉ định một hoạt động (trong method OnStart () của lớp dịch vụ) mà bạn muốn thực hiện trong khoảng thời gian nhất định. Bạn có thể chỉ định thời gian và trình xử lý sự kiện (event handler) được gọi mỗi lần trong khoảng thời gian đã trôi qua. Và bạn nên tắt bộ đếm thời gian trong method OnStop () được gọi mỗi lần dịch vụ Windows dừng lại.

Tiếp đến, kích đôi vào tập tin dịch vụ trong cửa sổ solution explorer, nhấp chuột phải và chọn “Add Installer” để tạo ra các tập tin cài đặt dịch vụ. Sau đó chọn service installer, click chuột phải, và click vào “Properties” để mở cửa sổ thuộc tính. Bạn có thể chỉ định tên dịch vụ, mô tả, start type, v.v.. cho dịch vụ của bạn từ cửa sổ thuộc tính của trình cài đặt dịch vụ.

Hai thuộc tính có tầm quan trọng đó là tên dịch vụ và start type. Trong khi trước đây đề cập đến tên của dịch vụ mà sẽ được cài đặt trong hệ thống của bạn, thì sau này đề cập đến cách dịch vụ nên được bắt đầu. Có ba lựa chọn tốt cho start type của dịch vụ – Tự động, bằng tay, và vô hiệu hóa.

Sau khi thực hiện, bạn sẽ phải biên dịch giải pháp để tạo ra các tập tin thực thi cho dịch vụ Windows mà bạn đã thực hiện. Tiếp theo, bạn nên mở “Developer Command Prompt” của phiên bản Visual Studio được cài đặt trong hệ thống của bạn và sau đó sử dụng các tiện ích dòng lệnh có tên InstallUtil để cài đặt dịch vụ.

Nếu việc cài đặt dịch vụ thành công, thì bạn sẽ thấy các thông điệp sau đây sẽ được hiển thị trong cửa sổ giao diện điều khiển, chẳng hạn như Visual Studio Developer Command Prompt.

The Commit phase completed successfully.
The transacted install has completed.

Bây giờ, nếu start type của dịch vụ Windows của bạn được thiết lập ở chế độ “Manual”, bạn nên bắt đầu dịch vụ của bạn bằng tay. Để làm điều này, bạn vào Start -> Run và sau đó gõ “services.msc”. Khi cửa sổ “Services” mở ra, thì hãy xác định vị trí dịch vụ Windows của bạn và bắt đầu nó bằng tay. Đây là tất cả những gì các bạn cần phải làm để xây dựng và thực hiện các dịch vụ Windows của bạn.

Chia sẻ bài viết ngay

Nguồn bài viết : http://www.infoworld.com/