基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程

基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程

ID:23893983

大小:1.44 MB

页数:7页

时间:2018-11-11

基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程_第1页
基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程_第2页
基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程_第3页
基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程_第4页
基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程_第5页
资源描述:

《基于asp.net mvc的热插拔模块式开发框架(orchardnocms)--aop编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、广州呼叫中心http://www.focustar.net/基于ASP.NETMVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程AOP编程在目前来说好像是大家都比较喜欢的。ASP.NETMVC中的Filter就是使用AOP实现的配置器模式。AOP在编码中的应用主要有如下几个方面:日志记录,跟踪,优化和监控事务的处理持久化性能的优化资源池,如数据库连接池的管理系统统一的认证、权限管理等应用系统的异常捕捉及处理针对具体行业应用的横切行为前面几种应用我相信大家都是比较熟悉的。在ASP.NETMVC中有Filter之类的,提供认证和权限管理。很

2、多实现AOP的组件都是拿日志作为例子说明。我这里给大家说明一个具体业务的横切例子。以之前的Orchard.Car模块为例,如果我们这个模块式产品中的一个模块,当应用到项目中时,可能需要一些改动,那么AOP就可以在很多时候解决我们的问题。假设我们现在有一个方法是获取Car的列表,那么对应的代码如下:Copyright©2012广州市聚星源科技有限公司(020)38258421/22/23/65/66广州呼叫中心http://www.focustar.net/ 对应的Service代码如下:别忘了在Route.cs中添加路由代码。运行,查看结果: Copyri

3、ght©2012广州市聚星源科技有限公司(020)38258421/22/23/65/66广州呼叫中心http://www.focustar.net/如果在产品发布后,项目A中使用该产品,需要为car添加一个字段,叫做缩略图,那么很现实的一个问题是,我们是不是为了项目A单独为car扩展一个字段?这时候适配器就很重要了,实现适配器的方式有很多,我们这里就说明下如何使用AOP来实现字段的扩展。首先需要一个Aufofac的module类,代码如下: 我们只需要为CarInfoService类来添加一个拦截器,别的就没有必要了。这里你会看到有一个SimpleInt

4、erceptor类,它的作用就是用来对CarInfoService的方法进行拦截。SimpleInterceptor的代码如下:    Copyright©2012广州市聚星源科技有限公司(020)38258421/22/23/65/66广州呼叫中心http://www.focustar.net/如果当前的方法名称是GetList那么我们就为它添加一个字段,代表缩略图。这里我随便写一个,你可以根据自己的实际需要去做相应的改变。现实中,可能这个Interceptor是在一个扩展模块中,所以对应的需要一个扩展的服务来提供Thumb字段。Copyright©20

5、12广州市聚星源科技有限公司(020)38258421/22/23/65/66广州呼叫中心http://www.focustar.net/  结果不正确,因为我们客户端或者页面已经对运来的JSON进行了解析,所以新的JSON格式不是我们需要的,再次修改Interceptor的代码:Copyright©2012广州市聚星源科技有限公司(020)38258421/22/23/65/66广州呼叫中心http://www.focustar.net/除了GetList方法可以通过AOP实现修改封闭扩展开放,你叶可以使用这种方式来扩展新增记录的方法。这时你需要把Req

6、uest.Form从Controller中传入Service方法。这种扩展方式一个很大的好处就是可以帮助多个项目平稳的升级。产品模块的代码永远都不会被项目牵制。具体的例子请到github上下载相应的代码来查看,这里就不做解释了。上面只是我自己的一个小小的使用经验,有时候当字段的类型需要更改,而你不允许直接更改当前的代码时,这种方式也是一个不错的方法。AOP虽然不是标准的设计模式之一,但是通过它可以让很多的模式更加简单的实现。最后说明一下,OrchardNoCMS中如何实现的AOP。它使用的Castle.DynamicProxy来实现的。结合Autofac。

7、首先是对AutoFac的扩展类:注入时,需要为注入的Component调用EnableDynamicProxy方法,代码位置:Copyright©2012广州市聚星源科技有限公司(020)38258421/22/23/65/66广州呼叫中心http://www.focustar.net/ 可以看出来,所有实现继承了IDependency的类都可以使用AOP。 以上就是OrchardNoCMS的AOP编程示例,可以到https://github.com/nicholaspei/OrchardNoCMS 下载完整代码。Copyright©2012广州市聚星源科

8、技有限公司(020)38258421/22/23/65/66

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。