執行後台任務的利器 Hangfire

2021-07-16 09:08:45 字數 859 閱讀 1735



今年1月31日,在微軟的mvp 2015社群大講堂上,我給大家分享了乙個演講:在asp.net應用中執行後台任務。其中介紹了三種技術的應用:queuebackgroundworkitem、hangfire和azure webjobs。當時由於時間關係,對三者都是簡要介紹。今天想和大家著重介紹下hangfire。

hangfire是乙個開源且商業免費使用的工具函式庫。可以讓你非常容易地在asp.net應用(也可以不在asp.net應用)中執行多種型別的後台任務,而無需自行定製開發和管理基於windows service後台任務執行器。且任務資訊可以被持久儲存。內建提供整合化的控制台。

通過nuget就可以在你的應用程式中安裝hangfire:install-package hangfire

hangfire的具有如下特性和有點:

為什麼要使用hangfire這樣的函式庫呢?我覺得好處有如下幾個方面:

開發簡單:無需自己額外做開發,就可以實現任務的佇列執行、延遲執行和重複執行

部署簡單:可以同主asp.net應用部署在一起,測試和維護都相對簡單

遷移簡單:由於宿主不僅限於asp.net,那麼未來可以非常容易的把任務執行器放到其他地方(需要改變的就是在其他宿主中啟動hangfire伺服器)

擴充套件簡單:由於開源且有很多擴充套件點,在現有外掛程式都不滿足自己需要的情況下能夠容易的進行擴充套件

之前我把hangfire運用到兩種情況下:

後台**郵件:通過延遲和迴圈任務分批通過sendcloud這樣的服務傳送**郵件

當然,hangfire的應用場景還很多,比如在後台處理電商賣家的訂單。

mvp 2015社群大講堂演講的ppt在此:mvp 2015社群大講堂之:在asp.net應用中執行後台任務

執行後台任務的利器 Hangfire

hangfire是乙個開源且商業免費使用的工具函式庫。可以讓你非常容易地在asp.net應用 也可以不在asp.net應用 中執行多種型別的後台任務,而無需自行定製開發和管理基於windows service後台任務執行器。且任務資訊可以被持久儲存。內建提供整合化的控制台。通過nuget就可以在你的...

使用Resque執行後台任務

什麼是後台任務?預設情況下,程式是按照 從上到下依次執行的,在前面的任務完成之前,下乙個任務是不會開始的。基於這個原理,當使用者提交了乙個比較耗時的請求時,他只能等待任務完成後才能進行下一步工作。在這個過程中,使用者花了時間去做等待的事,這無疑不是好的使用者體驗,所以我們可以把程式優化成這樣 使用者...

Ios後台任務執行實現

首先你應該定義如下兩個變數 uibackgroundtaskidentifier m taskid 後台任務id bool m brun 是否有後台任務執行的標誌其次,你需要寫如下幾個函式,用來判斷和啟動後台任務 bool ismultitaskingsupported return bresult...