跳過到頁腳內容
Iron Academy Logo
C# 應用程式
C# 應用程式

其他分類

C#中的Windows服務入門

Tim Corey
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 Service專案模板,但Tim更喜歡控制台方法以簡化偵錯。

"這裡的重點不是我放入什麼代碼,而是如何創建服務本身," Tim說。

什麼是Windows服務?

Tim使用開始選單搜尋功能打開Windows中的服務選項卡(只需輸入 "services" 並按Enter)。 他解釋說,在背景中運行的服務執行了許多重要的操作系統功能,如遠端桌面或MySQL伺服器。

目標是使用自定義代碼在此列表中創建新的條目。

Visual Studio專案類型:控制台應用程式與Windows服務

您可能會想選擇Visual Studio中的Windows Service專案,但Tim解釋說這更難以偵錯。 相反,控制台應用程式允許您在本地運行和測試,減少了必須附加偵錯器到正在運行的服務的需要。

">> "內建的服務類型專案使偵錯更困難,因為您必須先安裝它,然後才能附加偵錯器。"

通過NuGet添加Topshelf

為簡化服務執行,Tim通過NuGet添加了Topshelf,一個開源框架。 這個受歡迎的程式庫(擁有數百萬次下載量)有助於創建Windows服務而不需樣板代碼。

步驟:

  1. 右鍵點擊References

  2. 選擇Manage NuGet Packages

  3. 搜尋並安裝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 start
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start

這將服務添加到服務控制管理器。 再次打開服務選項卡並單擊刷新,服務現在可見並正在運行。

">> "安裝服務真的很容易,並且可以輕鬆地使用服務做很多事情。"

要卸載:

SimpleHeartbeatService.exe uninstall
SimpleHeartbeatService.exe uninstall

回顧:優點與考量

Tim再次總結說使用Topshelf創建和安裝服務是簡單直接的。 然而,他警告說無限的文件寫入可能導致存儲問題,這是一個對於正確日誌管理的良好提醒。

現實世界的服務創意

Tim分享了Windows服務的實際創意:

  • 文件夾清理:從下載中刪除舊文件

  • 圖片整理:按日期將照片分入文件夾

  • CSV處理:監視文件夾並自動將CSV導入資料庫

  • 電子郵件自動化:監控客服表並發送通知

這些例子展示了如何使用服務自動化背景任務並與SQL Server、OneDrive及任務排程器等工具整合。

結束語

Tim以鼓勵開發者進行實驗做結尾。 僅需注意記憶體、存儲和事件記錄。 如果您需要自動更新,安全設置或更穩健的部署,則需要進一步的配置。

">> "這裡有很多強大的功能和可以做的事情。"

結論

使用Tim Corey的逐步示範影片,在C#中創建一個Windows服務變得方便且實用。 透過利用Topshelf,可以將控制台應用程式轉換為一個完全運作的Windows服務,只需最少的設定。無論您是在管理日誌文件、處理資料庫事件或執行自動化,服務提供了一種建構即時背景.NET Framework或.NET Core應用程式的強大且可擴展的方式。

將本教程作為您全面理解、創建和安裝服務的完整路徑。 別忘了要徹底測試,並且始終以管理員身分運行安裝程式或命令提示字元。

Hero Worlddot related to C#中的Windows服務入門
Hero Affiliate related to C#中的Windows服務入門

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我