ABP之AOP初显威二 —— 记录Background运行结果

介绍

在ABP之AOP初显威中介绍了AOP的基本用法,但是在上篇文章中,是使用了异常信息来触发错误的job运行情况,如何在 job运行期间进行job运行情况的收集呢?


实现代码

现有代码是基于上篇文章代码进行修改

定义上下文

上下文中包含两个属性:job是否成功和job消息


ABP之AOP初显威二 —— 记录Background运行结果_第1张图片
JobExecuteContext.png
定义基类
ABP之AOP初显威二 —— 记录Background运行结果_第2张图片
AopBackgroundJob{T}.png
定义DemoJob

该类继承自AopBackgroundJob{T},并实现ExecuteJob

ABP之AOP初显威二 —— 记录Background运行结果_第3张图片
DemoJob.png

修改BackgroundJobExecuteInterceptorRegister

修改注册方式,所有继承自AopBackgroundJob{T}的类都会触发AOP


ABP之AOP初显威二 —— 记录Background运行结果_第4张图片
BackgroundJobExecuteInterceptorRegister.png
修改 BackgroundJobExecuteInterceptor
  1. 这个AOP方法,只拦截ExecuteJob方法,其他方法不拦截
    ABP之AOP初显威二 —— 记录Background运行结果_第5张图片
    image.png
运行结果
ABP之AOP初显威二 —— 记录Background运行结果_第6张图片
运行结果.png

总结

通过定义基类实现job的方法,在job方法中生成上下文实例并传递给子类实现的方法中,这样子类job就可以修改上下文数据,用这种方式来获取job运行情况数据的搜集。

通过ABP之AOP的文章,初步掌握了BackgroundJob的方法,以及AOP的使用方式。
在ABP框架中,大量使用了AOP了,比如UnitOfWork、审计日志、权限等,在实际使用过程中,也给我提供了一个新的思路,要扩展ABP的功能,除了使用继承外,也可以通过使用AOP改变框架的行为。


ABP之AOP初显威二 —— 记录Background运行结果_第7张图片
扫码关注.png

你可能感兴趣的:(ABP之AOP初显威二 —— 记录Background运行结果)