日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务

發布時間:2023/12/4 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

 在大部分程序中一般都會需要用到后臺任務, 比如定時更新緩存或更新某些狀態。

一、應用場景

  以調用微信公眾號的Api為例, 經常會用到access_token,官方文檔這樣描述:“是公眾號的全局唯一接口調用憑據,有效期目前為2個小時,需定時刷新,重復獲取將導致上次獲取的access_token失效,建議公眾號開發者使用中控服務器統一獲取和刷新Access_token,其他業務邏輯服務器所使用的access_token均來自于該中控服務器,不應該各自去刷新,否則容易造成沖突,導致access_token覆蓋而影響業務。”

  在這個場景中我們可以創建一個后臺運行的服務,按照access_token的有效期定時執行去請求獲取新的access_token并存儲,其他所有需要用到這個access_token的都到這個共有的access_token。

二、實現方式(一)

  ASP.NET Core 在2.0的時候就提供了一個名為IHostedService的接口,我們要做的只有兩件事:

    1. 實現它。

    2. 將這個接口實現注冊到依賴注入服務中。

  A. 實現IHostedService的接口

? ? ? ? ? ? 首先看一下這個IHostedService:

public interface IHostedService{ ? ? ?
? ? ? ?Task StartAsync(CancellationToken cancellationToken);
? ?
? ? ? ?Task StopAsync(CancellationToken cancellationToken);}

通過名字就可以看出來,一個是這個服務啟動的時候做的操作,另一個則是停止的時候。

新建一個類?TokenRefreshService??實現?IHostedService?,如下面代碼所示:

既然是定時刷新任務,那么就用了一個timer, 當服務啟動的時候啟動它,由它定時執行Refresh方法來獲取新的Token。

這里為了方便測試寫了5秒執行一次, 實際應用還是讀取配置文件比較好, 結果如下:

BackService.TokenRefreshService:Information: 17:23:30: Refresh Token!BackService.TokenRefreshService:Information: 17:23:35: Refresh Token!BackService.TokenRefreshService:Information: 17:23:40: Refresh Token!BackService.TokenRefreshService:Information: 17:23:45: Refresh Token!BackService.TokenRefreshService:Information: 17:23:50: Refresh Token!

?

三、實現方式(二)

?在 ASP.NET Core 2.1中, 提供了一個名為?BackgroundService??的類,它在?Microsoft.Extensions.Hosting?命名空間中,查看一下它的源碼:

可以看出它一樣是繼承自?IHostedService, IDisposable?, 它相對于是幫我們寫好了一些“通用”的邏輯, 而我們只需要繼承它并且實現它的?ExecuteAsync?即可。

也就是說,我們只需在這個方法內寫下這個服務需要做的事即可。?

這樣上面的刷新Token的Service就可以改寫成這樣:

是不是簡單了不少。(同樣這里為了方便測試寫了5秒執行一次)

原文地址https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_11.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。