技术和框架要点
ABP
AOP
IOC
Castle
AOP
AOP,面向切面编程,通过运行期动态代理实现程序功能的统一维护的一种技术,可以再代码运行期间改变目标函数的行为。
ABP框架BackgroundWork
可参考:
ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
Background Jobs And Workers
使用AOP提供的BackgroundJob,如何在不修改框架的基础之上记录每个BackgroundJob的运行信息呢?比如:运行结果、运行时间、Job名称、错误信息、运行耗时等信息。
方案有两种:
- 继承自框架的BackgroundJob<T>类,编写符合要求的基类
- 使用AOP动态代理所有继承自BackgroundJob<T>并且代理Execute方法
示例代码
ABP模块以及初始化



定义后台工作并测试运行
-
定义后台工作者,可参考第三节
定义后台工作者.png
定义后台工作需要注意:必须有参数类、Job必须继承自BackgroundJob<T>
基类和ITransientDependency
接口 -
在程序主入口启动后台工作者
启动后台工作者.png
运行结果.png
经过以上步骤,表示后台工作JOB正常运行。
定义和注册拦截器



注意必须是在Module的PreInitialize()方法中注册.

测试异常信息
在JOB内容抛出异常,修改JOB方法如下



注意观察两次JOB的运行结果。
总结
根据以上代码实例,我们发现AOP带来以下好处:
- 不用修改框架代码
- 不用自定义继承自框架代码
扩展
- 在示例代码中是用Console.WriteLine 输出信息,在实际代码中,可以使用EventBus来触发事件,其他模块代码处理Event,这样可以做到不同的信息记录方式,即可以输出到日志文件,也可以保存到数据库
网友评论