一个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环境使用哦

一个NET8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务的更多相关文章
- ios-实现项目在开发、测试、正式环境快速部署
快速部署:简单的来说,就是不用更改开发.测试.正式环境下的 url ,来实现在同一台测试手机快速部署三种项目状态. Bundle ID一样只会出现一个app:不一样会出现三个app: 具体步骤: 一. ...
- .Net Core 商城微服务项目系列(十二):使用k8s部署商城服务
一.简介 本篇我们将会把商城的服务部署到k8s中,同时变化的还有以下两个地方: 1.不再使用Consul做服务的注册和发现,转而使用k8s-dns来实现. 2.不再使用Ocelot作为业务网关,使用T ...
- 往android主项目中添加辅助项目
一个较大的工程往往需要多个项目组成,便于更好的并行开发和管理,但最后还是要合到一起来发布.那如何往主项目里添加其他辅助项目呢? 通常的做法是将辅助项目打包成jar包,像库一样导入到主项目,但是如果我们 ...
- 知乎问题之:.NET AOT编译后能替代C++吗?
标题上的Native库是指:Native分为静态库( 作者:nscript链接:https://www.zhihu.com/question/536903224/answer/2522626086 ( ...
- dotnet7 aot编译实战
0 起因 这段日子看到dotnet7-rc1发布,我对NativeAot功能比较感兴趣,如果aot成功,这意味了我们的dotnet程序在防破解的上直接指数级提高.我随手使用asp.netcore-7. ...
- 【菜鸟玩Linux开发】在Linux中使用VS Code编译调试C++项目
最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS Code在Linux下的安装这里就不提了,不管是CentO ...
- 【转载】在Linux中使用VS Code编译调试C++项目
原文:在Linux中使用VS Code编译调试C++项目 最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS ...
- 在Linux中使用VS Code编译调试C++项目
最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS Code在Linux下的安装这里就不提了,不管是CentO ...
- 使用Maven将Hadoop2.2.0源码编译成Eclipse项目
编译环境: OS:RHEL 6.3 x64 Maven:3.2.1 Eclipse:Juno SR2 Linux x64 libprotoc:2.5.0 JDK:1.7.0_51 x64 步骤: 1. ...
- 项目androidAnt编译打包Android项目
时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...
随机推荐
- Ceres简单应用-求解(Powell's Function)鲍威尔函数最小值
Ceres 求解 Powell's function 的最小化 \(\quad\)现在考虑一个稍微复杂一点的例子-鲍威尔函数的最小化. \(\quad{}\) \(x=[x_1,x_2,x_3,x_4 ...
- redis数据持久化之RDB和AOF
前言 redis虽然是内存缓存程序,但是可以将内存中的数据保存到硬盘上,从而实现数据保存.目前有两种redis数据持久化方式,分别是RDB和AOF. RDB模式 RDB之简介 RDB(redis da ...
- WPF使用TextBlock实现查找结果高亮显示
在应用开发过程中,经常遇到这样的需求:通过关键字查找数据,把带有关键字的数据显示出来,同时在结果中高亮显示关键字.在web开发中,只需在关键字上加一层标签,然后设置标签样式就可以轻松实现. 在WPF中 ...
- Python操作Redis大全
一.字符串 string Python操作Redis的redis模块对字符串(string)的主要操作函数包括:SET.GET.GETSET.SETEX.SETNX.MSET.MSETNX.INCR( ...
- 基于 LLM 的知识图谱另类实践
本文整理自社区用户陈卓见在「夜谈 LLM」主题分享上的演讲,主要包括以下内容: 利用大模型构建知识图谱 利用大模型操作结构化数据 利用大模型使用工具 利用大模型构建知识图谱 上图是之前,我基于大语言模 ...
- docker搭建dvwa靶场
查看有哪些DVWA镜像 docker search dvwa 这里选择拉取第一个镜像 docker pull citizenstig/dvwa 访问 https://hub.docker.com/ 搜 ...
- 分拣平台API安全治理实战 | 京东物流技术团队
导读 本文主要基于京东物流的分拣业务平台在生产环境遇到的一些安全类问题,进行定位并采取合适的解决方案进行安全治理,引出对行业内不同业务领域.不同类型系统的安全治理方案的探究,最后笔者也基于自己在金融领 ...
- windows10 jdk下载及环境配置
一.环境准备 windows10 系统 jdk 各种版本(配置大同小异) 二.下载并安装jdk 下载地址:http://www.oracle.com/technetwork/java/javase/ ...
- Avalonia开发(一)环境搭建
一.介绍 开源 GitHub:https://github.com/AvaloniaUI/Avalonia/ 多平台支持,包括Windows.mac OS.Linux.iOS.Android.Sams ...
- C++ 重载运算符在HotSpot VM中的应用
C++支持运算符重载,对于Java开发者来说,这个可能比较陌生一些,因为Java不支持运算符重载.运算符重载本质上来说就是函数重载.下面介绍一下HotSpot VM中的运算符重载. 1.内存分配与释放 ...