暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

cnblogs 一个NET8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务

原创 xiyun 2023-11-26
481

一个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服务。
尽管它们的目标相同,但它们在设计、配置和功能方面有所不同。
以下是两者之间一些核心差异的概述:

  1. 设计理念:
    WinSW 使用XML文件作为服务配置,由.NET框架支持,这意味着它需要.NET环境来运行。
    NSSM 则不依赖.NET框架,它是使用C++编写的,并且包含了一个用户友好的GUI进行服务配置。
  2. 配置:
    WinSW 需要一个XML配置文件,其中指定服务的详细信息,这可能对那些习惯于XML格式的用户更方便。
    NSSM 提供了一个命令行界面,用于安装、删除、启动和管理服务。它还附带了一个GUI,允许用户通过图形界面配置服务。
  3. 特性和功能:
    WinSW 支持日志记录、下载、服务失败操作等。它允许服务自我更新,也支持延迟的自动启动。
    NSSM 的特点是轻量,易于使用,也支持日志记录,可以自动重启失败的服务,并且能够处理stdout和stderr输出。
  4. 易用性:
    NSSM 因其简单的GUI而受到一些用户的青睐,允许快速安装和配置服务。
    WinSW 需要用户编辑XML文件,这可能对一些用户来说不那么直观,但对于熟悉该格式的用户则非常有用。
  5. 依赖性:
    WinSW 依赖于.NET环境,所以在没有安装.NET的系统上不能使用。
    NSSM 没有额外的依赖,它可以在所有现代Windows系统上直接运行。
  6. 社区和支持:
    WinSW 和 NSSM 都有活跃的社区,但他们的更新频率和社区支持可能会有所不同。
    在选择使用哪一个时,你需要根据你的特定需求、你的技术偏好以及你所在的环境来决定。例如,如果你已经在使用.NET环境,并且希望有一个详细的配置文件,那么WinSW可能是更好的选择。而如果你希望在没有.NET环境的系统上运行,或者你喜欢使用图形界面进行配置,那么NSSM可能更适合你。

NSSM注册服务后,后台会常驻一个NSSM的程序文件,所以我选择了使用WinSW来做这个辅助工具。

封装构想

查对了WinSW的文档,他是基于xml的配置来执行不同的命令,来处理不同的服务操作,那我们可以写个程序,来封装xml配置文件的生成和指令的执行,这样一来你处理你的服务应用就只需要双击你的辅助程序,便可以方便的启停你的应用程序,.NET8刚好可以做AOT编译的项目,那就用它来做这个工具吧,也不用安装环境了,搞起。

项目构建

新建一个控制台应用,基于.NET8 启用AOT编译

  1. 建一个model,来存储转为xml的配置文件数据
    image

  2. 把方法都封装到一个Helper类中
    封装常用的 WinSW 命令
    image

  3. 封装检查、读取、生成配置文件的方法
    image

  4. 封装启动CMD的方法
    image

  5. 最后封装指令菜单
    image

看看运行效果

我的API项目执行文件是 Simple.WebHost.exe

  1. 双击我的辅助项目编译文件 Simple.RunService.exe 配置指令

image

查看1. 生成的xml文档
image

小试一刀1. ,注册并启动服务
image

简单吧,简单的封装,配置一次,以后更新啥的,直接双击运行辅助项目输入个数字就搞定了

看看编译的辅助工具的文件 2M还行吧,不用安装环境哦 注意X64环境使用哦
image

点我✨Star

在时间轴上留下点什么,作为个程序员,就在cnblog上吧,我不是技术大牛,也不是IT狂热者,说不上是我选了它还是它选了我,结果是现在我是一名程序员,我对它很感兴趣,不为以后做业务大佬、行业顶尖,只想在自己能力范围内,把事情做到最好,在博客园记录下自己的历程吧,工作,学习,感情,生活。


分类: .NET CORE

标签: C#

好文要顶 关注我 收藏该文 

VictorStar
粉丝 - 15 关注 - 58



+加关注

2

0




« 上一篇: .NET 8来了,那就开发一套基于.NET 8的快速开发框架吧,就叫Simple

posted @ 2023-11-26 17:08  VictorStar  阅读(46)  评论(0)  编辑  收藏  举报


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论