上一篇文章中我給你們講述了五種部署ASP.NET Core網站的方法,其中有一種方式是經過Windows服務來進行部署,這樣既能夠作到開啓自啓動,又不會由於iis的反向代理而損失部分性能。可是美中不足的是須要藉助第三方軟件nssm來進行,那麼有沒有更好而且優雅的方式來進行ASP.NET Core網站的Windows服務方式部署呢?答案是確定的!html
做者:依樂祝
原文連接:http://www.javashuo.com/article/p-rqjbcggm-ha.htmlc#
今天這篇文章我會利用番茄工做法來進行寫做,預計用時四十分鐘。因此,話很少說,開擼吧!windows
新建一個asp.net core網站項目,以下圖所示我將其命名爲TestAgentasp.net
以下所示須要添加兩個Nuget包,這就是大名鼎鼎的NewLife.Core以及NewLife.Agent了ide
Install-Package NewLife.Core Install-Package NewLife.Agent
安裝後以下所示:函數
這時候咱們稍微修改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
方法中.測試
Mian方法中調用TestAgentServices.ServiceMain();
來引導進入咱們上面新建的服務類。字體
以管理員身份打開PowerShell,並利用dotnet run
命令以下圖所示運行咱們的程序,看到以下界面:網站
如上所示:顯示了當前服務的名稱,描述以及狀態,黃色字體部分列出了對應的操做命令,咱們只須要輸入對應的數據便可進行操做
咱們這裏直接輸入數字2
來進行安裝服務,以下所示:
這時候顯示服務已經安裝,可是還未啓動,這時候咱們能夠打開windows服務窗口找到咱們的Agent測試服務
,並右鍵屬性看到以下所示:
這時候啓動下便可!
咱們訪問下咱們配置的端口來訪問下網站,以下所示:
至此咱們windows服務方式部署成功!最後說明一下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一塊兒交流!