intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tạo windows service đơn giản

Chia sẻ: HA KIEN | Ngày: | Loại File: PDF | Số trang:7

336
lượt xem
44
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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. ...

Chủ đề:
Lưu

Nội dung Text: Tạo windows service đơn giản

  1. 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 : Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
  2. Rename cái service1 thành UsageMonitor (sẽ là tên của service mình tạo ra) Trích dẫn: 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); Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
  3. 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(); } Tiếp đến, chúng ta sẽ add thêm 1 cái component là installservice vào đ ể lát nữa cài đặt cho cái service của mình. Vào cửa sổ Design của service, chuột phải rồi chọn Add Installer Sẽ có thêm thành phần serviceInstaller1 xuất hiện, đặt thuộc tính serviceName của nó là UsageMonitor. Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
  4. Sau khi đã Build thành công project, khi chọn F5 để debug, sẽ có 1 thông báo xuất hiện, đại loại là nó yêu cầu chúng ta sử dụng chuơng trình InstallUtil để đăng ký cái service của chúng ta với windows. Cái chuơng trình InstallUtil.exe nằm trong C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 (ở đây là mình sử dụng VS2k8,NetFrameWork 3.5,nếu các bạn sử dụng VS phiên bản khác thì có thể cái v2.0.50727 sẽ khác ) Copy cả cái InstallUtil.exe và cái SimplyService ( cái chúng ta tạo ra được khi F5 cái project windows service SImplyService của chúng ta lúc nãy) vào chung 1 thư mục nào đó, ví dụ như vào thư mục service và mình đăt luôn ngoài desktop. Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
  5. Vào run, gõ cmd, rồi dùng lệnh cd để chuyển tới thư mục service của chúng ta (cd desktop\\service) Tiếp đến gõ tiếp : InstallUtil.exe SimplyService.exe Nếu ko có lỗi gì xảy ra thì hiện ra tiếp 1 cửa sổ login Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
  6. Mình sẽ login với quyền admin nên chỗ user name mình sẽ nhập là :home-f40ccec89f\administrator , ko tạo password ho service nên mình sẽ để trống phần đó.(home-f40ccec89f là tên máy của mình) Nếu đăng ký thành công thì cái cửa sổ cmd sẽ hiện ra thông báo Trích dẫn: The Commit phase completed successfully. The transacted install has completed. Bây giờ chúng ta mở cái manager services lên (run->services.msc) Chúng ta sẽ thấy cái UsageMonitor đã xuất hiện trong list services. Chuột phải vào UsageMonitor, chọn thẻ Log on, rồi chọn cái Local System account, sau đấy apply rồi chọn start cái service đó. Vào trong ổ C,sẽ thấy 1 cái file txt là logfile được tao ra Muốn gỡ bỏ cái service vừa đăng ký với windows, chúng ta lại vào cmd rồi chuyển vào thư mục service lúc nãy. gõ lệnh : InstallUtil/u SimplyService.exe Vì service chỉ được chạy khi đã đăng ký trong windows, nên ko thể debug cho project windows service như những project thông thường. Chúng ta có thể debug như sau : Đặt một điểm Break Point trong hàm xử lý sự kiện Tick của timer1. Vào menu Debug, chọn Attach Process, rồi chọn SimplyService.exe và attach Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
  7. Lúc này, service sẽ được chạy và dừng lại ở điểm Break Point đã đặt ở trên, tiến hành chạy từng bước service để debug như cách thông thường Biên tập: thienthanit@yahoo.com Nguồn: dieucay555
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
10=>1