最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

而一個(gè)托管服務(wù)的簡(jiǎn)單實(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ù)注冊(cè)的順序執(zhí)行。 主機(jī)啟動(dòng)時(shí),每個(gè) IHostedService 上都會(huì)調(diào)用 StartAsync。主機(jī)正常關(guān)閉時(shí),以反向注冊(cè)順序調(diào)用 StopAsync。相比傳統(tǒng)的后臺(tái)任務(wù),這里就提供了一個(gè)好處:在服務(wù)終止的時(shí)候可以?xún)?yōu)雅的關(guān)閉(graceful close)。

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

public MyHostedService(IHostEnvironment env, IHostApplicationLifetime appLifetime)
{
}

IHostingEnvironment

IHostingEnvironment主要用來(lái)提供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)處理所有請(qǐng)求。 關(guān)閉受到阻止,直到完成此事件。

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

操作:

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

BackgroundService

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

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

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

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

相關(guān)文章

最新評(píng)論

资阳市| 凌云县| 沁水县| 齐齐哈尔市| 贵德县| 和平区| 筠连县| 睢宁县| 朔州市| 三台县| 闻喜县| 隆回县| 峨边| 昌邑市| 布尔津县| 潍坊市| 重庆市| 双牌县| 洛扎县| 七台河市| 南开区| 蚌埠市| 黔西县| 策勒县| 琼中| 西丰县| 拜泉县| 安远县| 都匀市| 富源县| 中江县| 和平县| 理塘县| 定结县| 越西县| 方城县| 蓬莱市| 漳州市| 荥阳市| 卫辉市| 七台河市|