架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17610|回复: 3

[.NET Core] 基于 .NET Core 在 Linux 下的服务

[复制链接]
发表于 2020-10-29 14:20:02 | 显示全部楼层 |阅读模式
.NET CORE 3.0 新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序。如果安装的vs2019是中文版本,Worker Services变成了辅助角色服务。

Linux 系统环境:CentOS 8 x64 位

新建 Worker Service 项目

首先,打开 vs 2019 新建一个 Worker Service 项目,

QQ截图20201029114658.jpg

Linux 服务,需要添加:

如果是 windows 服务,需要添加:

如果想实现一套程序多处运行,那么直接同时安装两个package就可以了。接下来在CreateHostBuilder中,添加UseWindowsService()和UseSystemd()。



项目实现的功能是向 /test/file.txt 文件写日志,主要代码如下:



WriteFile 任务代码如下:

由于权限问题,程序无法自动创建 /test 文件夹,下面会说到。

部署服务到 CentOS

需要安装 .NET Core 运行时(不包含 ASP.NET Core 支持)


QQ截图20201029122212.jpg

如果想安装支持 ASP.NET Core 的运行时,可以执行如下命令:

[root@localhost ~]# dotnet --list-runtimes
Microsoft.NETCore.App 3.1.7 [/usr/lib64/dotnet/shared/Microsoft.NETCore.App]


创建 /test 文件夹,并赋予权限,如下:

在 /etc/systemd/system 文件夹下面,创建 itsvse.service 服务配置文件,如下:

添加服务账户和创建文件夹

将 Job.Service 发布并上传到服务器 /home/dotnetuser/job 目录下面,发布配置如下:

QQ截图20201029141624.jpg

开启服务

服务启动后,可以看到可以正常写文件,如下图:

QQ截图20201029141846.jpg

源码下载:

游客,如果您要查看本帖隐藏内容请回复


(完)




上一篇:ASP.NET WebApi 使用 MessageHandlers 统一返回接口模型格式
下一篇:基于 HttpSelfHostServer 的控制台 Web Api 服务
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-10-30 09:28:44 | 显示全部楼层
// Sample output:
//     info: ExampleHostedService[0]
//           1. StartAsync has been called.
//     info: ExampleHostedService[0]
//           2. OnStarted has been called.
//     info: Microsoft.Hosting.Lifetime[0]
//           Application started.Press Ctrl+C to shut down.
//     info: Microsoft.Hosting.Lifetime[0]
//           Hosting environment: Production
//     info: Microsoft.Hosting.Lifetime[0]
//           Content root path: ..\app-lifetime\bin\Debug\net5.0
//     info: ExampleHostedService[0]
//           3. OnStopping has been called.
//     info: Microsoft.Hosting.Lifetime[0]
//           Application is shutting down...
//     info: ExampleHostedService[0]
//           4. StopAsync has been called.
//     info: ExampleHostedService[0]
//           5. OnStopped has been called.


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-11-6 13:53:00 | 显示全部楼层
public abstract class BackgroundService : IHostedService, IDisposable

IHostedService 接口为在 ASP.NET Core Web 应用程序(在 .NET Core 2.0 及更高版本中)或任何进程/主机(从使用 IHost 的 .NET Core 2.1 开始)中启动后台任务提供了一种便捷方式。 其主要优势在于,当主机本身将要关闭时,可以有机会进行正常取消以清理后台任务的代码。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-4-27 15:57:28 | 显示全部楼层
注册后台服务扩展方法

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-25 10:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表