Bài giảng Window service
Trang 1Window Services
Trang 2Nội dung
System.ServiceProcess.
hình service.
Trang 3Khái niệm
việc khi khởi động window
người dùng
tài khoản người dùng đặc biệt là system, tài khoản
có quyền ưu tiên cao hơn cả tài khoản administrator
vụ nhật ký sự kiện; dịch vụ tìm kiếm Microsoft Search
Trang 4Cấu trúc dịch vụ
của dịch vụ;
Trang 5Ứng dụng hỗ trợ
chức năng của dịch vụ;
quan đến Service Control Manager như: mở, tắt, dừng, tiếp tục, …
Trang 6Ứng dụng hỗ trợ
phải được đăng ký với Service Control Manager
để bộ phận này có thể gọi các chúng;
Trang 7Bộ phận quản lý dịch vụ
Sevice Control Manager
(HĐH) để giao tiếp với các dịch vụ
cho mỗi dịch vụ.
Trang 8Không gian tên
System.ServiceProcess
phần của một dịch vụ:
hỗ trợ;
dụng điều khiển dịch vụ;
ServiceInstaller để xây dựng ứng dụng cài đặt, cấu hình dịch vụ
Trang 9Tạo Window Service project
Trang 10Các hàm xử lý sự kiện của WS
Ta cần overload các hàm xử lý sự kiện cần thiết
Trang 11Thiết lập các thuộc tính
Trang 12Tạo instance của lớp dịch vụ
dịch vụ và khởi động nó bằng cách gọi hàm run của lớp ServiceBase
Trang 13Ví dụ: Thiết lập thuộc tính
private void InitializeComponent()
{
//
// ServiceExample
//
this.CanPauseAndContinue = true;
this.ServiceName = "MyService";
this.CanStop = true;
this.AutoLog = true;
}
protected override void OnStop()
{
EventLog.WriteEntry("ServiceExample stopping ");
timer.Stop();
timer.Dispose();
timer = null;
}
Trang 14Ví dụ: overload các hàm XLSK
protected override void OnStart(string[] args)
{
double interval;
interval = 5000;
EventLog.WriteEntry(String.Format("ServiceExample starting " +
"Writing log entries every {0} milliseconds ", interval));
timer = new Timer();
timer.Interval = interval;
timer.AutoReset = true;
timer.Elapsed += new ElapsedEventHandler(WriteLogEntry);
timer.Start();
}
private void WriteLogEntry(object sender, ElapsedEventArgs e)
{
// Sử dụng đối tượng EventLog để ghi vào nhật ký sự kiện.
EventLog.WriteEntry("ServiceExample active : " + e.SignalTime);
}
Trang 15Ví dụ: overload các hàm XLSK
protected override void OnPause()
{
if (timer != null)
{
EventLog.WriteEntry("ServiceExample pausing ");
timer.Stop();
}
}
protected override void OnContinue()
{
if (timer != null)
{
EventLog.WriteEntry("ServiceExample resuming ");
timer.Start();
}
}
Trang 16Ví dụ: viết hàm main
Các hàm được viết trong lớp SeviceExample.
Hàm Main viết như sau:
ServiceBase.Run(new ServiceExample());
Muốn chạy nhiều dịch vụ, ta phải tạo nhiều đối tượng:
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {new
Service1(), new MySecondUserService()};
ServiceBase.Run(ServicesToRun);
Trang 17Tạo ứng dụng cài đặt
chọn Add Installer
public ProjectInstaller()
{
InitializeComponent();
}
this.serviceProcessInstaller1.Account =
System.ServiceProcess.ServiceAccount.LocalSystem;
Trang 18Cài đặt service
bin của project service.
vừa cài đặt.
Trang 19Tài liệu tham khảo
Object in a Windows Service.
một dịch vụ Window.