歡迎光臨
每天分享高質量文章

如何優雅的利用Windows服務來部署ASP.NET Core程式

上一篇文章中我給大家講述了五種部署ASP.NET Core網站的方法,其中有一種方式是透過Windows服務來進行部署,這樣既可以做到開啟自啟動,又不會因為iis的反向代理而損失部分效能。但是美中不足的是需要藉助第三方軟體nssm來進行,那麼有沒有更好並且優雅的方式來進行ASP.NET Core網站的Windows服務方式部署呢?答案是肯定的!

作者:依樂祝
原文連結:https://www.cnblogs.com/yilezhu/p/10380887.html

今天這篇文章我會利用番茄工作法來進行寫作,預計用時四十分鐘。所以,話不多說,開擼吧!

  1. 新建一個asp.net core網站專案,如下圖所示我將其命名為TestAgent

  2. 如下所示需要新增兩個Nuget包,這就是大名鼎鼎的NewLife.Core以及NewLife.Agent了

    Install-Package NewLife.CoreInstall-Package NewLife.Agent

    安裝後如下所示:

  3. 這時候我們稍微修改Program 在其中新增一個服務類並繼承自 AgentServiceBase,如下所示:

    public class TestAgentServices : AgentServiceBase
            {            #region 屬性
    
                ///顯示名

     

    
                public override string DisplayName => "Agent測試服務";            ///描述

     

    
                public override string Description => "Agent測試服務的描述資訊!";            #endregion
    
                #region 建構式
                ///實體化一個代理服務

     

    
                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 命令如下圖所示執行我們的程式,看到如下介面:

    如上所示:顯示了當前服務的名稱,描述以及狀態,黃色字型部分列出了對應的操作命令,我們只需要輸入對應的資料即可進行操作

  6. 我們這裡直接輸入數字2 來進行安裝服務,如下所示:

    這時候顯示服務已經安裝,但是還未啟動,這時候我們可以開啟windows服務視窗找到我們的Agent測試服務 ,並右鍵屬性看到如下所示:

    這時候啟動下即可!

  7. 我們訪問下我們配置的埠來訪問下網站,如下所示:

    至此我們windows服務方式部署成功!

總結

今天利用NewLife.Agent來演示如何優雅的進行ASP.NET Core程式的部署,當然對於控制檯程式也是支援的!大夥也可以抽空試一下!最後,我只想說一句.NET Core的生態真的越來越好了,好用的東西太多太多了!同時這篇文章總共花費了三十八分鐘,看來番茄工作法還是很高效的!如果你有興趣的話可以加入.NET Core實戰專案千人群637326624 跟更多的.NETCorer一起交流!

 

    贊(0)

    分享創造快樂