关于webSharp的Aop的理解

AOP(面向方面编程),当面向对象遭遇业务的全面需求时候(最常被用来举例的需求就是业务的需要权限验证,与钱相关模块和财务挂钩) ,面向对象有些力不从心,这时候会出现aop出来救苦难于水火的程序员。

WebSharp 是个不太出名的轻量级的.net框架包括了ORM,AOP 等开源软件。由http://www.uml.org.cn 在支撑着。
(欢迎有兴趣的人去下载咯)简单的框架对我们这些菜鸟的好处就是,看起来能简单些,虽然我们还有很多不懂,由于代码少点所以要照顾的地方少些,痛苦就少点。

下面我就说说websharp的AOP吧 ,先从间简单的说吧,把我理解的先说吧 。(是不是犯法我就不知道了,如果是给我发个邮件吧,跟我索赔 我不到三千的工资,养我自己还不够 )。

1.首先 AOP也就是拦截,注入咯。注入的时间无非是三种 执行前,执行后,前后都注入 。所以我们定义了注入类型 (enum)
  public   enum  InjectPosition
    
{
        Before,
        After,
        Both
    }
 
2.前后我们做些什么事情 这些事情用函数来表达咯,所以就定义了接口,对于以后要参加影响别人的类都要继承这个的接口IAspect 两个方法 Pre,Post.
  public   interface  IAspect
    
{
        
void PreProcess(IMessage message);

        
void PostProcess(IMessage message);
    }
 3..net的AOP基本上都是靠System.Runtime.Remoting空间下的类库来解决咯 ,这个类库下面的类起的名字怪怪的(关键是自己的英语差 ),所以看起来也没有多大兴趣。
要被注入的类都要继承 类 ContextBoundObject  ,原因是他支持上下文绑定
websharp 这样做的
public   abstract   class  AspectObject : ContextBoundObject
    
{
    }
4.要使对象受影响 那就的给他加个Attribute 靠反射了。高手们都说反射的性能差,我还不知道他们是怎么干活的
所以定义了属性AspectManageAttribute  继承了ProxyAttribute (他们太强了 这个都知道)
    [AttributeUsage(AttributeTargets.Class)]
    [SecurityPermission(SecurityAction.Demand, Flags 
=  SecurityPermissionFlag.Infrastructure)]
    
public   class  AspectManageAttribute : ProxyAttribute
    
{
        
private bool aspectManaged;

        
public AspectManageAttribute()
        
{ }

        
public AspectManageAttribute(bool isAllow)
        
{
            aspectManaged 
= isAllow;
        }


        
public override MarshalByRefObject CreateInstance(Type serverType)
        
{
            MarshalByRefObject mobj 
= base.CreateInstance(serverType);
            MarshalByRefObject retobj 
= null;
            
if (aspectManaged)
            
{
                RealProxy realProxy 
= new AspectProxy(serverType, mobj);
                retobj 
= realProxy.GetTransparentProxy() as MarshalByRefObject;
            }

            
return retobj;
        }
重要的这个重写的方法。
剩下的以后再写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值