C# 中的 Windows 服務入門
[[academy-video-youtube({"vid": "y64L-3HKuP0", "start_time": "0", "title": "Intro to Windows Services in C# - How to create, install, and use a service using Topshelf", "creator": "Tim Corey", "length": "31m 20s"})]]
Windows服務在.NET生態系統中是強大的工具,能夠不需使用者介入地執行背景任務。 在C#中建立Windows服務可能聽起來很複雜,但在他的影片中"Intro to Windows Services in C# - How to create, install, and use a service using Topshelf"中,Tim Corey逐步拆解了這件事。
在這篇文章中,我們將按部就班地重現該影片,涵蓋每個主題以提供清晰性和連續性。
Windows服務介紹
Tim介紹Windows服務為強大但經常被忽視的自動化工具。 這些應用程式設計為在背景執行,處理不需使用者介面來解決的任務。 常見的例子包括SQL Server Agent或Hyper-V服務。
Tim強調要掌握C#,練習是很重要的。 他建議下載影片說明中連結的原始碼以便實際操作學習。
建立控制台演示應用程式
使用Visual Studio,Tim建立了一個名為SimpleHeartbeatService的新控制台應用程式專案。雖然您可以使用Windows服務專案範本,但Tim更喜歡控制台方法,因為它對於除錯更為簡單。
"這裡的重點不是我在這裡放了什麼程式碼,而是如何建立服務本身,"Tim提到。
什麼是Windows服務?
Tim使用開始功能表搜索打開Windows中的服務選項卡(只需輸入"services"並按Enter)。 他解釋服務在背景執行,進行如遠端桌面或MySQL伺服器等重要的作業系統功能。
目標是使用自定義程式碼在此列表中建立新的條目。
Visual Studio專案型別:控制台應用程式 vs. Windows服務
您可能會被Visual Studio中的Windows服務專案吸引,但Tim解釋這樣比較難除錯。 相反地,控制台應用程式讓您能在本地運行和測試,減少連接除錯工具到即時服務的需求。
"內建服務型別專案使得除錯更困難,因為您需要先安裝它,然後連接除錯工具。"
通過NuGet新增Topshelf
為簡化服務實現,Tim通過NuGet新增了Topshelf,一個開源框架。 這個受歡迎的程式庫(擁有百萬次下載)有助於建立無需樣板程式碼的Windows服務。
步驟:
在參考資源上右鍵點擊
選擇管理NuGet套件
- 搜尋並安裝Topshelf
編寫服務邏輯
Tim建立了一個Heartbeat類別,並帶有兩個公共方法: Start()和Stop()。 在構造函式內,他設置了一個System.Timers.Timer,以每秒執行一次。
此計時器的Elapsed事件將當前時間附加到位於C:\temp\demos\資料夾中的.txt檔案。 這模擬了一個持續運行的背景任務。
"這個計時器每秒將寫入一個文字檔案,顯示服務正在運行。"
這模擬了像是資料夾掃描或列印文件等實際服務中運行時間長的過程。
與Topshelf連接服務
使用HostFactory.Run,Tim將Topshelf整合到應用程式中:
定義Heartbeat類別
映射Start() 和Stop() 方法
- 將服務配置為LocalSystem運行,授予必要的權限
他還為服務設置了中繼資料:
服務名稱:HeartbeatService
顯示名稱:Heartbeat Service
- 描述:用於YouTube影片中的演示目的
以控制台應用程式形式運行服務
在安裝之前,Tim運行了應用程式以進行測試。 計時器正確地將時間戳附加到了heartbeat.txt。 使用Notepad++的監控功能,他顯示了實時更新。
安裝和驗證服務
Tim將.exe和相關的檔案從bin\Debug資料夾複製到一個永久位置(如C:\demos\HeartbeatService)。 使用管理員命令提示符,他運行以下命令:
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe startSimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start這將服務新增到服務控制管理器中。 再次打開服務選項卡並點擊刷新後,服務現在可見並正在運行。
"安裝一個服務非常容易,而且用服務做事情也非常容易。"
要解除安裝:
SimpleHeartbeatService.exe uninstallSimpleHeartbeatService.exe uninstall總結:優點和考量
Tim總結道,使用Topshelf建立和安裝服務是很簡單的。 然而,他警告說無限地寫檔可能導致儲存問題,這是一個對適當日誌管理的好提醒。
實際服務點子
Tim分享了一些Windows服務的實用想法:
資料夾清理:刪除Downloads中的舊文件
圖片組織:按日期將照片分到文件夾中
CSV處理:監控一個資料夾並自動匯入CSV到資料庫
- 電子郵件自動化:監控客戶支持表格並發送通知
這些例子顯示了如何使用服務自動化背景任務並與如SQL Server、OneDrive和任務排程工具整合。
最後的想法
Tim結論時鼓勵開發者實驗。 只要注意記憶體、儲存和事件記錄。 如果您需要自動更新、安全設置或更強大的部署,則需要進一步的配置。
"這裡有很多力量,以及您可以做的很多事情。"
結論
使用Tim Corey在其影片中逐步演示的方法,用C#建立Windows服務變得即易進入又實用。 通過利用Topshelf,一個控制台應用程式可以輕鬆地轉換成一個完整功能的Windows服務。無論您是管理日誌文件、處理資料庫事件,還是執行自動化,服務提供了一種建構即時背景.NET Framework或.NET Core應用程式的強大且可擴展的方式。
使用本教程作為您了解、建立和高效安裝服務的完整路徑。 不要忘了徹底測試,並且始終以管理員身份運行安裝程式或命令提示符。



