如何优雅的利用Windows服务来部署ASP.NET Core程序

上一篇文章中我给你们讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是经过Windows服务来进行部署,这样既能够作到开启自启动,又不会由于iis的反向代理而损失部分性能。可是美中不足的是须要借助第三方软件nssm来进行,那么有没有更好而且优雅的方式来进行ASP.NET Core网站的Windows服务方式部署呢?答案是确定的!html

做者:依乐祝
原文连接:http://www.javashuo.com/article/p-rqjbcggm-ha.htmlc#

今天这篇文章我会利用番茄工做法来进行写做,预计用时四十分钟。因此,话很少说,开撸吧!windows

  1. 新建一个asp.net core网站项目,以下图所示我将其命名为TestAgentasp.net

    1550148209271

  2. 以下所示须要添加两个Nuget包,这就是大名鼎鼎的NewLife.Core以及NewLife.Agent了ide

    Install-Package NewLife.Core
    Install-Package NewLife.Agent

    安装后以下所示:函数

    1550148424551

  3. 这时候咱们稍微修改Program 在其中添加一个服务类并继承自 AgentServiceBase,以下所示:性能

    namespace TestAgent
    {
     public class Program
     {
         protected static string[] _args;
         public static void Main(string[] args)
         {
             _args = args;
             TestAgentServices.ServiceMain();
    
         }
    
         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
             WebHost.CreateDefaultBuilder(args)
             .UseUrls("http://*:8008")
                 .UseStartup<Startup>();
    
         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 方法中.测试

  4. Mian方法中调用TestAgentServices.ServiceMain(); 来引导进入咱们上面新建的服务类。字体

  5. 以管理员身份打开PowerShell,并利用dotnet run 命令以下图所示运行咱们的程序,看到以下界面:网站

    1550149894931

    如上所示:显示了当前服务的名称,描述以及状态,黄色字体部分列出了对应的操做命令,咱们只须要输入对应的数据便可进行操做

  6. 咱们这里直接输入数字2 来进行安装服务,以下所示:

    1550150103441

    这时候显示服务已经安装,可是还未启动,这时候咱们能够打开windows服务窗口找到咱们的Agent测试服务 ,并右键属性看到以下所示:

    1550150258068

    这时候启动下便可!

  7. 咱们访问下咱们配置的端口来访问下网站,以下所示:

    1550150594098

    至此咱们windows服务方式部署成功!
  8. 最后说明一下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一块儿交流!

相关文章
相关标签/搜索