美文网首页
ABP之AOP初显威

ABP之AOP初显威

作者: 诸葛_小亮 | 来源:发表于2018-06-03 21:19 被阅读119次

    技术和框架要点

    ABP
    AOP
    IOC
    Castle

    AOP

    AOP,面向切面编程,通过运行期动态代理实现程序功能的统一维护的一种技术,可以再代码运行期间改变目标函数的行为。

    ABP框架BackgroundWork

    可参考:
    ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
    Background Jobs And Workers

    使用AOP提供的BackgroundJob,如何在不修改框架的基础之上记录每个BackgroundJob的运行信息呢?比如:运行结果、运行时间、Job名称、错误信息、运行耗时等信息。
    方案有两种:

    1. 继承自框架的BackgroundJob<T>类,编写符合要求的基类
    2. 使用AOP动态代理所有继承自BackgroundJob<T>并且代理Execute方法

    示例代码

    ABP模块以及初始化

    main.png 启动模块.png 运行结果.png

    定义后台工作并测试运行

    1. 定义后台工作者,可参考第三节

      定义后台工作者.png
      定义后台工作需要注意:必须有参数类、Job必须继承自BackgroundJob<T>基类和ITransientDependency接口
    2. 在程序主入口启动后台工作者


      启动后台工作者.png
      运行结果.png

    经过以上步骤,表示后台工作JOB正常运行。

    定义和注册拦截器

    定义拦截器.png
    注册拦截器方法.png
    Module中注册拦截器.png

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

    运行结果.png

    测试异常信息

    在JOB内容抛出异常,修改JOB方法如下


    抛出异常.png 添加触发异常的job.png
    运行结果.png

    注意观察两次JOB的运行结果。

    总结

    根据以上代码实例,我们发现AOP带来以下好处:

    1. 不用修改框架代码
    2. 不用自定义继承自框架代码

    扩展

    • 在示例代码中是用Console.WriteLine 输出信息,在实际代码中,可以使用EventBus来触发事件,其他模块代码处理Event,这样可以做到不同的信息记录方式,即可以输出到日志文件,也可以保存到数据库

    相关文章

      网友评论

          本文标题:ABP之AOP初显威

          本文链接:https://www.haomeiwen.com/subject/pihlsftx.html