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