亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ASP.NET Core通用主機(jī)實(shí)現(xiàn)托管服務(wù)

 更新時(shí)間:2022年07月08日 11:14:12   作者:天方  
這篇文章介紹了ASP.NET Core通用主機(jī)實(shí)現(xiàn)托管服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前文介紹了.Net core的通用主機(jī)的配置,在基礎(chǔ)配置完成后,下一步就是注冊我們的后臺任務(wù)了。.net core提供了一個(gè)通用的后臺服務(wù)接口IHostedService,稱為托管服務(wù)。一個(gè)注冊托管服務(wù)的示例如下:

hostBuilder.ConfigureServices((hostContext, services) =>
{
    services.AddHostedService<LifetimeEventsHostedService>();
    services.AddHostedService<TimedHostedService>();
});

而一個(gè)托管服務(wù)的簡單實(shí)現(xiàn)如下:

class MyHostedService :IHostedService
{
    public Task StartAsync(CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }
    public Task StopAsync(CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }
}

每個(gè) IHostedService 實(shí)現(xiàn)都按照 ConfigureServices 中服務(wù)注冊的順序執(zhí)行。 主機(jī)啟動(dòng)時(shí),每個(gè) IHostedService 上都會(huì)調(diào)用 StartAsync。主機(jī)正常關(guān)閉時(shí),以反向注冊順序調(diào)用 StopAsync。相比傳統(tǒng)的后臺任務(wù),這里就提供了一個(gè)好處:在服務(wù)終止的時(shí)候可以優(yōu)雅的關(guān)閉(graceful close)。

另外,由于使用了DI框架,可以在托管服務(wù)的構(gòu)造函數(shù)中很方便的獲取其它服務(wù):

public MyHostedService(IHostEnvironment env, IHostApplicationLifetime appLifetime)
{
}

IHostingEnvironment

IHostingEnvironment主要用來提供App的環(huán)境信息,具體就不多介紹了。

IApplicationLifetime

IApplicationLifetime是托管服務(wù)經(jīng)常引入的一個(gè)服務(wù),它允許獲取應(yīng)用的啟動(dòng)和關(guān)閉事件,并且能關(guān)閉整個(gè)主機(jī),具體接口如下:

事件訂閱:

  • ApplicationStarted:主機(jī)已完全啟動(dòng)。

  • ApplicationStopped:主機(jī)正在完成正常關(guān)閉。 應(yīng)處理所有請求。 關(guān)閉受到阻止,直到完成此事件。

  • ApplicationStopping:主機(jī)正在執(zhí)行正常關(guān)閉。 仍在處理請求。 關(guān)閉受到阻止,直到完成此事件。

操作:

  • StopApplication:關(guān)閉整個(gè)主機(jī)

BackgroundService

很多時(shí)候,我們后臺服務(wù)往往只是一個(gè)簡單的任務(wù),并不需要關(guān)閉,此時(shí)可以使用一個(gè)更簡單的模型:BackgroundService

class MyHostedService : BackgroundService
{
    protected override Task ExecuteAsync(CancellationToken stoppingToken)
    {
        //do something 
        return Task.CompletedTask;
    }
}

它本身是IHostedService的一個(gè)實(shí)現(xiàn),但進(jìn)一步簡化了程序功能,只提供一個(gè)ExecuteAsync接口,我們只需要在該函數(shù)中實(shí)現(xiàn)后臺任務(wù)即可。

到此這篇關(guān)于ASP.NET Core通用主機(jī)實(shí)現(xiàn)托管服務(wù)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論