- 5
- 0
- 约1.63千字
- 约 7页
- 2019-08-24 发布于湖北
- 举报
广州呼叫中心/
Copyright ?2012 广州市聚星源科技有限公司 (02022/23/65/66
基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程
AOP编程在目前来说好像是大家都比较喜欢的。ASP.NET MVC中的Filter就是使用AOP实现的配置器模式。AOP在编码中的应用主要有如下几个方面:
日志记录,跟踪,优化和监控
事务的处理
持久化
性能的优化
资源池,如数据库连接池的管理
系统统一的认证、权限管理等
应用系统的异常捕捉及处理
针对具体行业应用的横切行为
前面几种应用我相信大家都是比较熟悉的。在ASP.NET MVC中有Filter之类的,提供认证和权限管理。很多实现AOP的组件都是拿日志作为例子说明。我这里给大家说明一个具体业务的横切例子。
以之前的Orchard.Car模块为例,如果我们这个模块式产品中的一个模块,当应用到项目中时,可能需要一些改动,那么AOP就可以在很多时候解决我们的问题。
假设我们现在有一个方法是获取Car的列表,那么对应的代码如下:
?
对应的Service代码如下:
别忘了在Route.cs中添加路由代码。
运行,查看结果:
?
如果在产品发布后,项目A中使用该产品,需要为car添加一个字段,叫做缩略图,那么很现实的一个问题是,我们是不是为了项目A单独为car扩展一个字段?这时候适配器就很重要了,实现适配器的方式有很多,我们这里就说明下如何使用AOP来实现字段的扩展。
首先需要一个Aufofac的module类,代码如下:
?
我们只需要为CarInfoService类来添加一个拦截器,别的就没有必要了。这里你会看到有一个SimpleInterceptor类,它的作用就是用来对CarInfoService的方法进行拦截。
SimpleInterceptor的代码如下:
?
?
?
?
如果当前的方法名称是GetList那么我们就为它添加一个字段,代表缩略图。这里我随便写一个,你可以根据自己的实际需要去做相应的改变。
现实中,可能这个Interceptor是在一个扩展模块中,所以对应的需要一个扩展的服务来提供Thumb字段。
?
?
结果不正确,因为我们客户端或者页面已经对运来的JSON进行了解析,所以新的JSON格式不是我们需要的,再次修改Interceptor的代码:
除了GetList方法可以通过AOP实现修改封闭扩展开放,你叶可以使用这种方式来扩展新增记录的方法。这时你需要把Request.Form从Controller中传入Service方法。这种扩展方式一个很大的好处就是可以帮助多个项目平稳的升级。产品模块的代码永远都不会被项目牵制。
具体的例子请到github上下载相应的代码来查看,这里就不做解释了。
上面只是我自己的一个小小的使用经验,有时候当字段的类型需要更改,而你不允许直接更改当前的代码时,这种方式也是一个不错的方法。
AOP虽然不是标准的设计模式之一,但是通过它可以让很多的模式更加简单的实现。
最后说明一下,OrchardNoCMS中如何实现的AOP。
它使用的Castle.DynamicProxy来实现的。结合Autofac。首先是对AutoFac的扩展类:
注入时,需要为注入的Component调用EnableDynamicProxy方法,代码位置:
?
可以看出来,所有实现继承了IDependency的类都可以使用AOP。
?
以上就是OrchardNoCMS的AOP编程示例,可以到 /nicholaspei/OrchardNoCMS?下载完整代码。
您可能关注的文档
- 第一章流体流动汇总.ppt
- 心血管内科常见疾病的诊治20110916.ppt
- 小学美术三年级上册《有趣的鞋》教学课件4.ppt
- 六年级上学期家长会课件1.ppt
- 第九章4固体结构.ppt
- 小学科学三年级上册《我们需要清新的空气》精品课件.ppt
- 小学核心价值观主题班会(1).ppt
- 小学数学五年级上册《小数乘法》说课稿.ppt
- 物质代谢的相互联系和调节.ppt
- 生化反应工程实验课件.ppt
- 七年级语文上册期末模拟试卷1(解析版).docx
- 七年级语文上册期末模拟试卷1(原卷版).docx
- 七年级语文上册期末模拟试卷2(原卷版).docx
- 七年级语文上册期末模拟试卷2(解析版).docx
- 期末测试卷(二)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(二)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
最近下载
- 温州市2026届高三(一模)数学试卷(含答案详解).pdf
- 安徽师范大学大学语文课件 8《大自然在反抗》.ppt VIP
- 基于Java web的网上订餐系统的设计与实现.docx VIP
- 2025年上海虹口区高三二模高考数学模拟试卷(含答案) .pdf VIP
- 2023-2024学年山东省济南市市中区七年级(上)期末历史试卷.docx VIP
- 天然气等离子体裂解的研究的开题报告.docx VIP
- 艾梅乙防治知识培训课件.pptx
- 山东省济南市历下区2023-2024学年部编版七年级上学期1月期末历史试题(含答案).docx VIP
- 新22J02 屋面-标准图集.docx VIP
- 标准图集-陕09J01-建筑用料及做法.pdf VIP
原创力文档

文档评论(0)