前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET 8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务

.NET 8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务

作者头像
郑子铭
发布2023-12-13 11:09:35
6800
发布2023-12-13 11:09:35
举报
文章被收录于专栏:DotNet NB && CloudNative

前言

不知道大家有没有和小编一样,很多时候想将自己的一些应用转为服务运行,比如一些控制台应用或者.NET Core应用,但是又不想重新编码,把他们转为服务,本文将给大家提供些我使用过的方法,并提供一个基于.NET8 AOT编译的辅助项目的封装工具构建方法,快来看看https://gitee.com/VCodeWork/simple-framework

快速开发框架项目

先介绍下《基于.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的配置文件数据

2、把方法都封装到一个Helper类中

封装常用的 WinSW 命令

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

4、封装启动CMD的方法

5、最后封装指令菜单

看看运行效果

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

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

查看1. 生成的xml文档

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

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

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

项目地址

https://gitee.com/VCodeWork/simple-framework

推荐阅读:

CPF C#跨平台UI框架开源了

ASP.NET Core Web API设置响应输出的Json数据格式的两种方式

一个基于.NET Core开源、跨平台的仓储管理系统

开箱即用, 开源的 IdentityServer4 管理后台

.NET 主流 ORM 功能介绍 大全 最新

ASP.NET Core 中使用 .NET Aspire 消息传递组件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 看看运行效果
  • 项目地址
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档