发布时间:2020-06-01责任编辑:满帅 浏览:1283
服务程序,一般代表一些需要长期稳定运行,没有界面交互的程序,周而复始,生生不息。那么,怎么用.netcore 来编织这么一个程序呢?
利器
以下是在下所使用的工具
· VisualStduio 2019
· .netcore 3.1
起始
道生一| 使用Woker Service 模板创建服务
启动VisualStudio 2019,选择创建新项目,在上方的搜索栏搜索service ,如下图。

或者使用dotnet new worker
这里在下创建一个名为MyService的项目
Bash
1 | dotnet new worker -n MyService |
窥探一番项目文件,可见里面有两个主要的文件
· Program.cs
Csharp
1 | public static void Main(string[] args) |
· Worker.cs
Csharp
1 | public class Worker : BackgroundService |
这两个文件都是相当简洁明了的。
Program.cs 创建Host并对Worker进行托管。
那么Worker是什么?
从Worker.cs中可见Worker只是继承自BackgroundService的子类。
BackgroundService又是何方神圣呢?
窥一眼MyService的项目依赖,依赖包里有Microsoft.Extensions.Hosting这一项,BackgroundService正是来自于此。
这么一看,不过如此,如果阁下不使用VS 模板来创建自己的服务,想必也是易如反掌。
一生二| 编写属于自己的Worker
新建 MyWorker.cs 文件,内容如下
Csharp
1 | class MyWorker : BackgroundService |
除此之外,还需要将Worker 注入。
services.AddHostedService<MyWorker>();
注释掉 services.AddHostedService<Worker>();,而只关注MyWorker
运行之后,就可以看到内容输出了。这点很重要,为什么还会有控制台窗口,而不是一个无界面的服务?
嗯,在程序没有被部署成服务之前,它和控制台程序别无二致。
那么,如和部署成服务呢?
三生万物| 部署Windows 服务
这里需要使用一把武器 sc
打开cmd窗口(使用Powershell 也可以,但是低版本的Powershell 可能会出错)
Powershell
1 | sc create MyService binpath=E:fullpath oyourbinaryfile.exe |
程序在控制台输出,所以安装成服务并不能看到效果。谁管呢,总而言之,使用.netcore创建服务程序很简单,这种方式用在.netframework上又当如何?此处不再多言。
更多创建服务的方式,可以点击下面的引用链接
终
Reference
Creating Windows Services In .NET Core – Part 3 – The “.NET Core Worker” Way
外包部供稿