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。

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

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

  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/alunchen/p/7410900.html
Copyright © 2011-2022 走看看