zoukankan      html  css  js  c++  java
  • C# ABP源码详解 之 BackgroundJob,后台工作(一)

    本文归属作者所有,转发请注明本文链接。

    1. 前言

    ABP的BackgroundJob,用来处理耗时的操作。比如客户端上传文件,我们要把文件(Excel)做处理,这耗时的操作我们应该放到后台工作者去做,从而不会让用户有‘延迟’的感觉。

    ABP的backgroundJob最终运行是在一个InMemoryBackgroundJobStore中运行,它只是定义了一个Dictionary来存储job,并且遍历运行 。当然,觉得不爽可以做改造。

    2. 类图研究

    我整理了BackgroundJob一些类图,如下:

    image

    1)IRunnable,是定义了线程的开启、停止等操作。因为backgroundJob说白了就是启动线程在不停地运行。

    2)IBackgroundJobManager,定义了Job的管理,例如吧Job放到队列中运行。

    3)PeriodicBackgroundWorkerBase,控制了线程AbpTimer的运行、停止、等待等操作。

    4)IBackgroundJobStore,定义了插入、删除、更新、查询后台工作者。现在的后台工作者存储在Member中(用InMemoryBackgroundJobStore实现),你可以改造存储在数据库、云队列中。

    3. ABP Zero模块中的BackgroundJobStore

    我们打开ABP Zero模块中的backgroundjob包,只发行一个类BackgroundJobStore。它实现了IBackgroundJobStore,并且把Job放到数据库中来处理。这样虽然安全性提高了,但是性能较低,需要看我们的实际业务。

    BackgroundJobStore中有一个BackgroundJobInfo的仓储(Repository),用来存储所有的Job。

    下一篇文章,将对其进行改造。因为我们的系统是一个高并发系统

    可以关注本人的公众号,多年经验的原创文章共享给大家。

  • 相关阅读:
    克如斯卡尔 P1546
    真正的spfa
    第四课 最小生成树 要点
    关于vscode中nullptr未定义
    cmake学习笔记
    python学习笔记
    (BFS 图的遍历) 2906. kotori和迷宫
    (图论基础题) leetcode 997. Find the Town Judge
    (BFS DFS 并查集) leetcode 547. Friend Circles
    (BFS DFS 图的遍历) leetcode 841. Keys and Rooms
  • 原文地址:https://www.cnblogs.com/alunchen/p/7410900.html
Copyright © 2011-2022 走看看