一个NET8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务
??不知道大家有沒有和小編一樣,很多時候想將自己的一些應用轉為服務運行,比如一些控制臺應用或者.NET Core應用,但是又不想重新編碼,把他們轉為服務,本文將給大家提供些我使用過的方法,并提供一個基于NET8 AOT編譯的輔助項目的封裝工具構建方法,快來看看吧。點我?Star
我的快速開發框架項目
先介紹下我的基于.NET 8的快速開發框架Simple Framework,旨在簡化開發流程,減少學習成本。框架特點包括基于.NET 8、少用第三方庫、基本授權鑒權、CRUD實現和后臺管理前端。規劃使用了NLog、Redis、Json庫等,并支持多數據庫結構。框架包含基礎庫、Web項目擴展庫、EFCore擴展庫、代碼生成器和定時任務模塊,并提供了一套基于vue2 elementui前端頁面框架,以提高開發效率和靈活性,發布以來收到了很多朋友的喜歡,本文的封裝工具也是朋友的建議下擼出來的,快去看看吧。
把應用封裝為服務的常用方式 WinSW 和 NSSM
WinSW(Windows Service Wrapper)和 NSSM(Non-Sucking Service Manager)都是流行的開源工具,用于將任何可執行文件包裝為Windows服務。
盡管它們的目標相同,但它們在設計、配置和功能方面有所不同。
以下是兩者之間一些核心差異的概述:
- 設計理念:
WinSW 使用XML文件作為服務配置,由.NET框架支持,這意味著它需要.NET環境來運行。
NSSM 則不依賴.NET框架,它是使用C++編寫的,并且包含了一個用戶友好的GUI進行服務配置。 - 配置:
WinSW 需要一個XML配置文件,其中指定服務的詳細信息,這可能對那些習慣于XML格式的用戶更方便。
NSSM 提供了一個命令行界面,用于安裝、刪除、啟動和管理服務。它還附帶了一個GUI,允許用戶通過圖形界面配置服務。 - 特性和功能:
WinSW 支持日志記錄、下載、服務失敗操作等。它允許服務自我更新,也支持延遲的自動啟動。
NSSM 的特點是輕量,易于使用,也支持日志記錄,可以自動重啟失敗的服務,并且能夠處理stdout和stderr輸出。 - 易用性:
NSSM 因其簡單的GUI而受到一些用戶的青睞,允許快速安裝和配置服務。
WinSW 需要用戶編輯XML文件,這可能對一些用戶來說不那么直觀,但對于熟悉該格式的用戶則非常有用。 - 依賴性:
WinSW 依賴于.NET環境,所以在沒有安裝.NET的系統上不能使用。
NSSM 沒有額外的依賴,它可以在所有現代Windows系統上直接運行。 - 社區和支持:
WinSW 和 NSSM 都有活躍的社區,但他們的更新頻率和社區支持可能會有所不同。
在選擇使用哪一個時,你需要根據你的特定需求、你的技術偏好以及你所在的環境來決定。例如,如果你已經在使用.NET環境,并且希望有一個詳細的配置文件,那么WinSW可能是更好的選擇。而如果你希望在沒有.NET環境的系統上運行,或者你喜歡使用圖形界面進行配置,那么NSSM可能更適合你。
NSSM注冊服務后,后臺會常駐一個NSSM的程序文件,所以我選擇了使用WinSW來做這個輔助工具。
封裝構想
查對了WinSW的文檔,他是基于xml的配置來執行不同的命令,來處理不同的服務操作,那我們可以寫個程序,來封裝xml配置文件的生成和指令的執行,這樣一來你處理你的服務應用就只需要雙擊你的輔助程序,便可以方便的啟停你的應用程序,.NET8剛好可以做AOT編譯的項目,那就用它來做這個工具吧,也不用安裝環境了,搞起。
項目構建
新建一個控制臺應用,基于.NET8 啟用AOT編譯
-
建一個model,來存儲轉為xml的配置文件數據
-
把方法都封裝到一個Helper類中
封裝常用的 WinSW 命令 -
封裝檢查、讀取、生成配置文件的方法
-
封裝啟動CMD的方法
-
最后封裝指令菜單
看看運行效果
我的API項目執行文件是 Simple.WebHost.exe
- 雙擊我的輔助項目編譯文件 Simple.RunService.exe 配置指令
查看1. 生成的xml文檔
小試一刀1. ,注冊并啟動服務
簡單吧,簡單的封裝,配置一次,以后更新啥的,直接雙擊運行輔助項目輸入個數字就搞定了
看看編譯的輔助工具的文件 2M還行吧,不用安裝環境哦 注意X64環境使用哦
點我?Star
總結
以上是生活随笔為你收集整理的一个NET8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视野修炼-技术周刊第63期
- 下一篇: 迪拜航展,印度推销战机遭遇尴尬,还是要找