为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
.NET

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

今天这篇文章我会利用番茄工作法来进行写作,预计用时四十分钟。所以,话不多说,开撸吧!

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

    1550148209271

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

    Install-Package NewLife.CoreInstall-Package NewLife.Agent

    安装后如下所示:

    1550148424551

这时候我们稍微修改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 方法中.

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

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

    1550149894931

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

  3. 我们这里直接输入数字2 来进行安装服务,如下所示:

    1550150103441

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

    1550150258068

    这时候启动下即可!

  4. 我们访问下我们配置的端口来访问下网站,如下所示:

    1550150594098

    至此我们windows服务方式部署成功!

  5. 最后说明一下NewLife.Agent是XAgent的netcore版本,nfx版本集成在NewLife.Core中,也就是说,nfx下只需要引用NewLife.Core即可,对Windows兼容性更好。
    NewLife.Agent独立是为了准备支持Linux

总结

今天利用NewLife.Agent来演示如何优雅的进行ASP.NET Core程序的部署,当然对于控制台程序也是支持的!大伙也可以抽空试一下!最后,我只想说一句.NET Core的生态真的越来越好了,好用的东西太多太多了!同时这篇文章总共花费了三十八分钟,看来番茄工作法还是很高效的! 


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消