.net中使用postsharp来实现aop

postsharp简介

PostSharp是一个用于在.NET平台上实现AOP的框架,相比于uniyt和spring.net框架,postsharp提供了完整的aop架构,比如,可以拦截属性,同时,postsharp使用的是静态拦截,而不是unity和spring.net的动态拦截,关于静态拦截和动态拦截下面会说,而且postsharp是较轻量的,最新稳定版本的postsharp是3.1.45,可以到下面地址去下载, http://www.postsharp.net/download,以vs插件的方式和vs,nuget无缝集成,不过,现在的postsharp分为3个版本,express,pro,ultimate版本,精简版是免费的,专业和旗舰就不免费了,看看价格,对个体程序员来说还是挺贵的,第一年购买$499(Pro版)或$799(Ultimate版),后续的支持费用大约为每年140和250,要上千大洋嘎,每当这个时候,感觉自己都可穷可穷可穷滴,~~~~~~~~~~~~~~~~~~

静态拦截和动态拦截区别

静态拦截AOP的实现思想是给语言的编译器做扩展,使得在编译程序的时候编译器将相应的Aspect代码织入到业务代码的指定连接点,输出整合的结果如下图(以.net为例,postsharp既是静态拦截)

当使用静态拦截时,带AOP扩展的编译器会在编译时将Aspect代码织入业务函数代码,形成整合后的IL,然后交由CLR运行
动态拦截如下图(unity和spring.net都是)



运行时AOP的实现方式是将扩展添加到运行虚拟机而不是编译器,Aspect和业务代码分别独立编译,而在运行时由虚拟机在必要时进行织入

AOP核心思想

在编写代码时将横切关注点分离出来,形成单独的模块,单独编写和维护,不再分散到各业务函数,使得业务函数仅包含核心业务代码,从而解决以上问题。而在程序编译或运行时,通过某些手段(下文介绍)令独立的横切关注点代码可以与核心业务代码自动协作运行,完成本身需要的功能

AOP和语言关系

一般来说,在纯编译型语言(如C、C++)等语言中实现AOP非常困难,必须完全从编译器角度入手,本文讨论托管型语言(如C#,)中AOP的实现方式

环境配置

使用vs2010sp1或者vs2012旗舰版
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值