carot_ls
New Member
--------------------------------------------------------------------------------
Trong bài này mình sẽ hướng dẫn tạo 1 ứng dụng windows service đơn giản bằng C#.
Windows services cung cấp phương tiện cho application logic chạy liên tục trên máy tính của bạn, thông thường là việc cung cấp điều khiển thiết bị hoặc các dịch vụ hệ điều hành. Windows services là hữu dụng đối với các ứng dụng phía server mà ta muốn chúng phải luôn ở trạng thái sẵn sàng phục vụ các yêu cầu từ client. Nói chung, nếu bạn có nhu cầu xây dựng một trình ứng dụng mà bản chất hoạt động của nó mang tính “âm thầm làm việc” và không cần sự tương tác trực tiếp của người dùng, bạn có thể nghĩ ngay đến việc tạo trình ứng dụng loại Windows Service.
Windows service là một ứng dụng chạy trên máy server hoặc workstation và cung cấp những chức năng mà sự diễn tiến của nó không cần sự tương tác trực tiếp của người dùng. Windows services thường được dùng để giám sát hoạt động hệ thống.
Một Windows service sẽ chạy trong tiến trình của riêng nó, không phụ thuộc người dùng hay các chương trình khác đang chạy trên cùng máy tính. Windows services thường được cấu hình để tự động bắt đầu khi nào máy tính khởi động. Không giống như đa phần các ứng dụng, Windows services chạy dưới nhận dạng bảo mật của chính nó, thay vì dưới nhận dạng của đăng nhập người dùng hiện hành. Chúng có thể bắt đầu chạy, ngay cả nếu không có người dùng (user) đăng nhập máy tính.
Khi mà bạn tạo một ứng dụng với mục tiêu ứng dụng này sẽ chạy như là một Windows service, bạn cần phải lưu ý rằng nó không bao gồm bất kỳ các yếu tố giao tiếp người dùng như message boxes hay dialog boxes. Một Windows service không có tính chất cung cấp một giao diện trực quan (visual interface) cho người dùng.
Thông thường một Windows service sẽ báo cáo đặc thù các kết quả và thông báo lỗi của nó tới một sổ ghi biến cố (event log). Tuy nhiên bạn cũng có thể kết hợp nó với Web Service để làm những việc “động trời” hơn như là âm thầm chuyển thông tin từ máy mà nó đang được cài đặt đến một máy ở xa thông qua đường truyền internet.
Để tạo 1 ứng dụng win service bằng C#, trong Visual Studio, chúng ta tạo 1 project mới, chọn loại project là windows service, đặt tên là SimplyService. Ở đây, tôi sẽ tạo 1 service theo dõi quá trình sử đụng CPU, kết quả sẽ lưu vào 1 file txt là logfile. Tên của service này là UsageMonitor.
Vì service là ứng dụng ko có giao diện nên chúng ta sẽ ko nhìn thấy cái form để design đâu nhé. Vào toolbox kéo 1 cái Timer và PerformanceCounter.
Đặt interval cho timer1 là 1000, set thuộc tính Enabled=true.
Đặt các thuộc tính cho performanceCounter1 như trong hình :
5212
Rename cái service1 thành UsageMonitor (sẽ là tên của service mình tạo ra)
Các sự kiện của 1 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.
Bây giờ chúng ta sẽ viết các sự kiện cho service
Sự kiện timer1_Tick()
private void timer1_Tick(object sender, System.EventArgs e)
{
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("CPU Usage : " + performanceCounter1.NextValue().ToString() + System.DateTime.Now);
file.Close();
}
Sự kiện OnStart của service
protected override void OnStart(string[] args)
{
timer1.Enabled = false;
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("Service Started");
file.Close();
timer1.Interval = 1000;
timer1.Enabled = true;
}
Sự kiện OnStop
protected override void OnStop()
{
timer1.Enabled = false;
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("Service Restarted");
file.Close();
}
Và sự kiên OnContinue
protected override void OnContinue()
{
timer1.Enabled = false;
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("Service stopped");
file.Close();
}
Trong bài này mình sẽ hướng dẫn tạo 1 ứng dụng windows service đơn giản bằng C#.
Windows services cung cấp phương tiện cho application logic chạy liên tục trên máy tính của bạn, thông thường là việc cung cấp điều khiển thiết bị hoặc các dịch vụ hệ điều hành. Windows services là hữu dụng đối với các ứng dụng phía server mà ta muốn chúng phải luôn ở trạng thái sẵn sàng phục vụ các yêu cầu từ client. Nói chung, nếu bạn có nhu cầu xây dựng một trình ứng dụng mà bản chất hoạt động của nó mang tính “âm thầm làm việc” và không cần sự tương tác trực tiếp của người dùng, bạn có thể nghĩ ngay đến việc tạo trình ứng dụng loại Windows Service.
Windows service là một ứng dụng chạy trên máy server hoặc workstation và cung cấp những chức năng mà sự diễn tiến của nó không cần sự tương tác trực tiếp của người dùng. Windows services thường được dùng để giám sát hoạt động hệ thống.
Một Windows service sẽ chạy trong tiến trình của riêng nó, không phụ thuộc người dùng hay các chương trình khác đang chạy trên cùng máy tính. Windows services thường được cấu hình để tự động bắt đầu khi nào máy tính khởi động. Không giống như đa phần các ứng dụng, Windows services chạy dưới nhận dạng bảo mật của chính nó, thay vì dưới nhận dạng của đăng nhập người dùng hiện hành. Chúng có thể bắt đầu chạy, ngay cả nếu không có người dùng (user) đăng nhập máy tính.
Khi mà bạn tạo một ứng dụng với mục tiêu ứng dụng này sẽ chạy như là một Windows service, bạn cần phải lưu ý rằng nó không bao gồm bất kỳ các yếu tố giao tiếp người dùng như message boxes hay dialog boxes. Một Windows service không có tính chất cung cấp một giao diện trực quan (visual interface) cho người dùng.
Thông thường một Windows service sẽ báo cáo đặc thù các kết quả và thông báo lỗi của nó tới một sổ ghi biến cố (event log). Tuy nhiên bạn cũng có thể kết hợp nó với Web Service để làm những việc “động trời” hơn như là âm thầm chuyển thông tin từ máy mà nó đang được cài đặt đến một máy ở xa thông qua đường truyền internet.
Để tạo 1 ứng dụng win service bằng C#, trong Visual Studio, chúng ta tạo 1 project mới, chọn loại project là windows service, đặt tên là SimplyService. Ở đây, tôi sẽ tạo 1 service theo dõi quá trình sử đụng CPU, kết quả sẽ lưu vào 1 file txt là logfile. Tên của service này là UsageMonitor.
Vì service là ứng dụng ko có giao diện nên chúng ta sẽ ko nhìn thấy cái form để design đâu nhé. Vào toolbox kéo 1 cái Timer và PerformanceCounter.
Đặt interval cho timer1 là 1000, set thuộc tính Enabled=true.
Đặt các thuộc tính cho performanceCounter1 như trong hình :
5212
Rename cái service1 thành UsageMonitor (sẽ là tên của service mình tạo ra)
Các sự kiện của 1 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.
Bây giờ chúng ta sẽ viết các sự kiện cho service
Sự kiện timer1_Tick()
private void timer1_Tick(object sender, System.EventArgs e)
{
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("CPU Usage : " + performanceCounter1.NextValue().ToString() + System.DateTime.Now);
file.Close();
}
Sự kiện OnStart của service
protected override void OnStart(string[] args)
{
timer1.Enabled = false;
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("Service Started");
file.Close();
timer1.Interval = 1000;
timer1.Enabled = true;
}
Sự kiện OnStop
protected override void OnStop()
{
timer1.Enabled = false;
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("Service Restarted");
file.Close();
}
Và sự kiên OnContinue
protected override void OnContinue()
{
timer1.Enabled = false;
TextWriter file = new StreamWriter("C:\\logfile.txt", true);
file.WriteLine("Service stopped");
file.Close();
}