如何优雅的利用Windows服务来部署ASP.NET Core程序
上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能。但是美中不足的是需要借助第三方软件nssm来进行,那么有没有更好并且优雅的方式来进行ASP.NET Core网站的Windows服务方式部署呢?答案是肯定的!
作者:依乐祝
原文链接:https://www.cnblogs.com/yilezhu/p/10380887.html
今天这篇文章我会利用番茄工作法来进行写作,预计用时四十分钟。所以,话不多说,开撸吧!
新建一个asp.net core网站项目,如下图所示我将其命名为TestAgent
如下所示需要添加两个Nuget包,这就是大名鼎鼎的NewLife.Core以及NewLife.Agent了
Install-Package NewLife.Core Install-Package NewLife.Agent
安装后如下所示:
这时候我们稍微修改Program 在其中添加一个服务类并继承自 AgentServiceBase,如下所示:
public class TestAgentServices : AgentServiceBase<TestAgentServices> { #region 属性 /// <summary>显示名</summary> public override string DisplayName => "Agent测试服务"; /// <summary>描述</summary> public override string Description => "Agent测试服务的描述信息!"; #endregion #region 构造函数 /// <summary>实例化一个代理服务</summary> public TestAgentServices() { // 一般在构造函数里面指定服务名 ServiceName = "TestAgent"; } #endregion #region 执行任务 protected override void StartWork(string reason) { CreateWebHostBuilder(_args).Build().Run(); WriteLog("当前时间{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); base.StartWork(reason); } #endregion }
如上所示:我们重写下显示的名字以及描述信息,并把
CreateWebHostBuilder(_args).Build().Run();
移到这个服务的StartWork
方法中.Mian方法中调用
TestAgentServices.ServiceMain();
来引导进入我们上面新建的服务类。以管理员身份打开PowerShell,并利用
dotnet run
命令如下图所示运行我们的程序,看到如下界面:如上所示:显示了当前服务的名称,描述以及状态,黄色字体部分列出了对应的操作命令,我们只需要输入对应的数据即可进行操作
我们这里直接输入数字
2
来进行安装服务,如下所示:这时候显示服务已经安装,但是还未启动,这时候我们可以打开windows服务窗口找到我们的
Agent测试服务
,并右键属性看到如下所示:这时候启动下即可!
我们访问下我们配置的端口来访问下网站,如下所示:
最后说明一下NewLife.Agent是XAgent的netcore版本,nfx版本集成在NewLife.Core中,也就是说,nfx下只需要引用NewLife.Core即可,对Windows兼容性更好。
NewLife.Agent独立是为了准备支持Linux
总结
今天利用NewLife.Agent来演示如何优雅的进行ASP.NET Core程序的部署,当然对于控制台程序也是支持的!大伙也可以抽空试一下!最后,我只想说一句.NET Core的生态真的越来越好了,好用的东西太多太多了!同时这篇文章总共花费了三十八分钟,看来番茄工作法还是很高效的!如果你有兴趣的话可以加入.NET Core实战项目千人群637326624 跟更多的.NETCorer一起交流!
- 如何在asp.net中编写 Windows 服务程序 [转]
- 以Windows服务方式运行ASP.NET Core程序【转载】
- 如何在asp.net中编写 Windows 服务程序 Visual Studio编写 Windows 服务
- 在IIS 5.1下如何部署ASP.NET MVC 程序
- 如何在 IIS6.0中部署asp.net mvc程序(转)
- 如何在ASP.NET Core程序启动时运行异步任务(3)
- asp.net web api的自托管模式HttpSelfHostServer可以以控制台程序或windows服务程序为宿主,不单单依赖于IIS web服务器
- 在同一IIS6下如何部署不同版本的ASP.Net程序
- 解析如何利用一个ASP.NET Core应用来发布静态文件
- 10分钟学会在windows-Linux下设置ASP.Net Core开发环境并部署应用
- (7)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 利用Polly+AOP+依赖注入封装的降级框架
- 如何在ASP.NET Core程序启动时运行异步任务(2)
- 如何在IIS6.0中部署asp.net mvc程序
- ASP.NET Core利用原生服务控制反转注入泛型类
- windows/Linux下设置ASP.Net Core开发环境并部署应用
- 【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类
- 利用Asp.Net Core的MiddleWare思想如何处理复杂业务流程详解
- 海洋工作室——网站建设专家:如何在IIS6.0中部署asp.net mvc程序
- 如何在ASP.NET Core程序启动时运行异步任务(3)