Windows Service, còn gọi là NT Service, trước đây được tạo bằng C++ sử dụng cho hệ điều hành Windows NT, Windows 2000 và XP.. Windows Service được xem như là một loại ứng dụng Windo
Trang 1Lập Trình WINDOWS SERVICE
Với NET FrameWork
Trang 2 Windows Service, còn gọi là NT Service, trước đây được tạo bằng C++ sử dụng cho hệ điều hành Windows NT,
Windows 2000 và XP
Windows Service được xem như là một loại ứng dụng
Windows, không có giao diện, chạy thường trú, và giao
tiếp với các ứng dụng khác hoặc người sử dụng thông qua các lời gọi hàm nảy sinh do sự kiện
Windows trao đổi thông tin với môi trường bên ngoài qua
cơ chế thông điệp hay ghi chú sự kiện (event log)
Ví dụ : ta cần xử lý thông tin trên các file được gởi về từ Internet thông qua FTP, thời điểm file được gởi về không được biết trước : cần một service thường trú để kiểm tra
luồng file từ FTP, và có hành động xử lý thích hợp
Tổng quan
Trang 3Tạo Windows Service từ Visual Studio NET
Tạo project mới với loại project là Windows Service, đặt tên là LearningVBservice
Trang 4 Double click vào cửa sổ Service1.vb[Design] để vào cửa
sổ mã của Service1.vb
Trang 5 Đổi tên dòng Public Class Service1 thành Public Class UsageMonitor
Trang 6 Click vào region mã Component Designer generated code để
mở vùng mã của Service do VB phát sinh tự động
Trong hàm Main, sửa dòng mã
ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1}
Thành
ServicesToRun = New System.ServiceProcess.ServiceBase() {New UsageMonitor}
Trong hàm InitializeComponent, sửa dòng mã
Me.ServiceName = "Service1“
Thành
Me.ServiceName = “UsageMonitor“
Trang 7 Trở về cửa sổ Service1.vb[Designer], mở ToolBox Component, kéo thả điểu khiển Timer và
PerformanceCounter lên Designer
Trang 8 Đặt tính chất Interval của điều khiển Timer1 thành 1000 (miligiây).
Trang 9 Đặt các tính chất của điều khiển PerformanceCounter1 thành :
CategoryName thành “processor”,CounterName thành “% Processor Time”
InstanceName thành “_Total”
MachineName thành <tên máy tính>
Trang 10 Viết mã cho sự kiện Elaspe của điều khiển Timer1 :
Viết mã cho hàm OnStart của service :
Trang 11 Viết mã cho hàm OnStop, OnContinue của service :
Trang 12 Click phải chuột lên cửa sổ Service1.vb [Design], chọn Add Installer, thành phần ProjectInstaller được thêm vào project :
Trang 13 Thành phần ServiceInstaller sử dụng để cài đặt Service UsageMonitor vào hệ điều hành.
Trang 14 Thành phần ProcessServiceInstaller sử dụng để cài đặt tiến trình (process) quản lý service UsageMonitor.
Trang 15Biên dịch Windows Service
Chọn menu Project Project Properties, định lại mục
Startup object là UsageMonitor
Chọn menu Debug Start để tiến hành biên dịch
Sau khi biên dịch thành công, màn hình hiện ra thông báo cho biết rằng cần phải được cài đặt vào hệ điều hành sử dụng công cụ installutil.exe
Trang 16 Sử dụng Windows Exloprer, tìm file InstallUtil.exe trong
folder C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 (hoặc dùng chức năng search của Windows)
Copy file này vào thư mục bin của project LearningVBService
Trang 17Debug Windows Service
Trang 18 Khởi động ứng dụng Command Prompt của Windows: từ Windows XP, chọn Start All Programs Accessories Command Prompt.
Trong Command Prompt, chuyển sang folder của project LearningVBservice Gõ dòng lệnh :
installutil LearningVBservice.exe
Trang 20 Màn hình hiện ra hộp thoại yêu cầu, gõ vào username và password của máy tính được phép cài đặt service.
Sau khi cài đặt service thành công, cửa sổ Command
Prompt hiện ra thông báo :
The Commit phase completed successfully
The transacted install has completed
Trang 21 Từ Windows, mở cửa sổ Control Panel Administrative Tools Services , bạn sẽ thấy mục service UsageMonitor đã được install vào hệ thống.
Trang 22 Click phải chuột vào service UsageMonitor, chọn
Properties
Cửa sổ Properties của service hiện ra, chọn thẻ Log On, chọn mục Log On As Local System account Apply
Trang 23 Chọn thẻ General Start để khởi động service.
Chờ vài giây, sau đó chọn Stop để ngưng service
Mở tập tin Output.txt được tạo ra từ service để xem kết quả ()
Trang 24Các sự kiện của Windows Service
OnStart : Khởi phát khi service được khởi động
OnPause : Nếu tính chất CanPauseAndContinue của
service được đặt là true, service có thể được tạm dừng và kích hoạt trở lại bởi người quản trị Windows
OnContinue : Khởi phát khi service được kích hoạt trở lại
OnStop : Khởi phát trước khi service ngưng hoạt động
OnShutDown : Nếu tính chất CamShutDown được đặt là true, sự kiện này sẽ được khởi phát khi service vẫn đang
trong trạng thái chạy (running) và máy tính bị shutdown
Trang 25Debug Windows Service
Windows service không thể được debug như những
project thông thường, vì service chỉ được chạy sau khi đã
được cài đặt vào hệ điều hành
Debug LeaningVB Service:
Đặt một điểm Break Point trong hàm xử lý sự kiện Elapse của Timer1
Chọn menu Debug Processes, chọn mục
Trang 28Un-Install Windows Service
Sau khi đã cài đặt service vào hệ điều hành, bạn có thể gỡ
bỏ service theo cách sau :
Sử dụng Command Prompt, vào folder bin của project LearningVBService, nơi chứa file InstallUtil.exe đã chép vào ở bước cài đặt service
Gõ dòng lệnh :
installutil /u LearningVBservice.exe