C# ABP源码详解 之 BackgroundJob,后台工作(一)
2017-08-22 11:50
176 查看
本文归属作者所有,转发请注明本文链接。
1. 前言
ABP的BackgroundJob,用来处理耗时的操作。比如客户端上传文件,我们要把文件(Excel)做处理,这耗时的操作我们应该放到后台工作者去做,从而不会让用户有‘延迟’的感觉。
ABP的backgroundJob最终运行是在一个InMemoryBackgroundJobStore中运行,它只是定义了一个Dictionary来存储job,并且遍历运行 。当然,觉得不爽可以做改造。
2. 类图研究
我整理了BackgroundJob一些类图,如下:
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。
下一篇文章,将对其进行改造。因为我们的系统是一个高并发系统
1. 前言
ABP的BackgroundJob,用来处理耗时的操作。比如客户端上传文件,我们要把文件(Excel)做处理,这耗时的操作我们应该放到后台工作者去做,从而不会让用户有‘延迟’的感觉。
ABP的backgroundJob最终运行是在一个InMemoryBackgroundJobStore中运行,它只是定义了一个Dictionary来存储job,并且遍历运行 。当然,觉得不爽可以做改造。
2. 类图研究
我整理了BackgroundJob一些类图,如下:
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。
下一篇文章,将对其进行改造。因为我们的系统是一个高并发系统
相关文章推荐
- C# MVC webuploader同步上传前后台详解教程(提供同步、异步上传源码下载链接地址)
- ABP源码分析九:后台工作任务
- ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
- C# 拖放操作源码详解1
- c#源码的执行过程详解
- C# 拖放操作源码详解
- C# 拖放操作源码详解2
- C# 拖放操作源码详解
- WPF 后台任务 等待动画 样例 && C# BackgroundWorker 详解
- .net 2008中在html源码中的《script》可以添加c#后台的源代码。下面是MSDN中的例子
- 利用Emgu.CV实现人脸识别详解 (C#)--附源码
- 根据结果集处理工作事务c#源码
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
- Android消息通信机制Handler详解,Handler,Looper,MessageQueue,源码解析,讲解这几个类怎么配合工作的
- 利用Emgu.CV实现人脸识别详解 (C#)--附源码
- 工作就录四:iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- 一个C#多线程的工作队列 ,c# 多线程排队队列实现的源码
- C# 拖放操作源码详解
- [Abp 源码分析]六、工作单元的实现
- 利用Emgu.CV实现人脸识别详解 (C#)--附源码