C# 開發技巧創建強大的 Windows 服務程序
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
前言在實際工作中,我們常常需要開發運行在后臺、無需用戶交互的應用程序。例如,定時讀取西門子PLC的數據并保存到數據庫中。為了實現這一目標,我們可以選擇使用C#創建一個Windows服務。 在本篇文章中,將介紹如何基于C#創建一個Windows服務,并實現對西門子PLC的定時讀取和保存功能,希望這篇文章能為大家提供有價值的參考。 Windows 服務說明Windows 服務是一種特殊類型的應用程序,能夠在系統啟動時自動運行,并且無需用戶登錄即可執行。 它非常適合用于需要在后臺持續運行的任務,尤其是在無人值守環境中。 適用場景1、持續運行的任務日志采集:定時收集系統或應用程序的日志數據。 網絡代理:作為中間層處理網絡請求和響應。 數據同步:定期同步不同系統之間的數據。 2、系統后臺維護自動更新:定時檢查并安裝系統或應用程序的更新。 性能監控:實時監控系統的性能指標(如CPU、內存使用率等)。 備份任務:定時執行數據備份操作。 3、無人值守環境中的任務定時任務調度:在特定時間點執行預定義的任務。 設備監控:監控硬件設備的狀態并進行相應處理(如讀取PLC數據)。 核心特性1、通過服務控制管理器(SCM)管理 SCM 是 Windows 操作系統中用于管理服務的一個組件。通過 SCM,可以方便地安裝、啟動、停止、暫停和刪除服務。 2、與用戶登錄狀態無關 Windows 服務可以在沒有任何用戶登錄的情況下運行。這意味著即使沒有用戶活動,服務也可以在后臺持續工作。 3、支持系統啟動時自動運行 可以配置服務在系統啟動時自動運行,確保關鍵任務始終處于激活狀態。這對于需要高可用性的應用尤其重要。 4、靈活的權限設置 Windows 服務可以配置不同的權限級別,允許它們訪問特定的系統資源或執行特定的操作。例如,某些服務可能需要管理員權限才能正常運行。 5、事件日志記錄 Windows 服務可以將運行時的信息記錄到系統事件日志中,便于后續的故障排查和審計。 6、多實例支持 在某些情況下,可以運行多個相同的服務實例,每個實例處理不同的任務或數據集。 開發與部署開發工具:通常使用 C# 或其他 .NET 語言通過 Visual Studio 進行開發。 安裝包:可以通過安裝腳本或工具(如 sc.exe 命令行工具或第三方工具如 NSSM)來創建和管理服務。 調試與測試:可以使用 Visual Studio 的調試功能或專用的調試工具來測試服務的行為。 Windows服務創建1、創建一個新項目,項目模板選擇Windows服務(.Net Framework): 2、項目名稱為WindowsServiceDemo,項目創建完成后如下: 3、修改服務名稱為SiemensPLCService:
我們可以在OnStart和OnStop里寫一些代碼邏輯。 9、寫了一個簡單的邏輯,就是每次服務啟動或停止都會向指定的文件中寫入一串信息。 我們直接運行剛剛創建的服務,發現是無法運行的,提示如下: 1、首先,使用管理員權限打開cmd命令行,然后進入這個路徑下,便于直接操作InstallUtil。cdC:\Windows\Microsoft.NET\Framework\v4.0.30319 2、安裝服務命令:installutil exe絕對路徑 ; installutil C:\Users\Administrator\Desktop\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.exe 打開服務,可以看到TestService這個名稱的服務已經安裝完成, 3、安裝完成后,雙擊打開,可以啟動服務,也可以手動停止: installutil C:\Users\Administrator\Desktop\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.exe -u 總結 在這篇文章中,探討了 Windows 服務的核心特性,包括如何通過服務控制管理器(SCM)進行管理、如何配置服務在系統啟動時自動運行,以及如何利用這些特性來實現各種后臺任務。我們還討論了開發和部署服務的基本步驟,希望能為你提供一個清晰的指導。 閱讀原文:原文鏈接 該文章在 2025/3/31 11:29:54 編輯過 |
關鍵字查詢
相關文章
正在查詢... |