AOP 你想干什么 IOC 你服务什么

  • 时间:
  • 浏览:0
  • 来源:uu快3官网app_uu快3豹子赚钱

AOP,全称Aspect Oriented Programming,中文名称叫面向方面编程,也叫面向切面编程

借用一图:

要简单实现,亲戚朋友还是找IOC好了,它简单某些。

我这里有一份动代代理实现拦截的代码,可点击下载

AOP,你出来的意图?

这里贴一段我项目中的代码,最常见的修改密码:

看看

好吧,说正事了,咋改呢?

不就为解耦,分离出权限/操作日志/异常/事务等模块出来?

框架的代码基本就到此然后然后开始,那如可使用框架呢?

那咱办呢?

就看源码他励志的话 :

Begin土妙招:权限判断执行:[Users表查询]

End 土妙招:操作日志:登陆结果:失败

1:继承IAop接口,如

真是我很简单,本来我在类里随便挖个洞,能我想钻进去就行了。

说明:

我可不像AOP你什儿 实现一样,能动态拦截土妙招,遍历标志的属性再执行相应的土妙招这样强大而僵化 。

目前在.Net下实现AOP的土妙招分为两大类:

1:定义操作枚举

2:定义IAop接口

3:输出结果

说明:

举例说明使用:这里使用 CYQ.Data 框架 来说明

AOP说:

前言:

说明:

在某些类和土妙招上边标属性,然后继承特定接口或类,以前便可进行消息拦截,拦截后还是根据属性来调用其它土妙招

4:定义新的操作类MyAction,继承自MAction,如

二是采用静态织入的土妙招,引入特定的语法创建“方面”,从而使得编译器还不能在编译期间织入有关“方面”的代码。

结果当然是:

让他独立实现权限/操作日志等模块,然后使用动态拦截调用的土妙招,

接着又要重新使用日志功能:action.SetAopReuse();

有源码呢:

而静态织入的土妙招实现一般是要依靠某些第三方框架提供特定的语法,之类PostSharp,它的实现土妙招是采用 MSIL Injection和MSBuild Task在编译时置入方面的代码,从而实现AOP。

2:界面调用

亲戚朋友只要在每个Insert/Update/Delete/Select的土妙招以前与以前插入Begin与End函数,同样使用IOC注入,即可,土妙招太少吧。

来个简单示例

现在的问題是:

不我想那我写,那咋写?AOP你我想咋写呢?

接下来,实现接口:

IOC:英文为 Inversion of Control,即反转模式又称DI:Dependency Injection,即依赖注入

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

在土妙招调用以前,再调用[End]函数来写日志.

当然了,IOC强大的东西不仅仅本来我在构造函数注入了,不过在哪注入,还是通过反射注入,都都有本节的重点,也都有现在关注的问題。

一是采用动态代理技术,利用截撤回息的土妙招,对该消息进行装饰,以取代或修饰原有对象行为的执行;

说白了Begin和End函数,你得给点参数,不然叫人家土妙招写啥呢?

在你这样日志时还不能使用:action.SetNoAop();

IOC说:

问題说明:

AOP想让亲戚朋友干你什儿 ?本来我让亲戚朋友,不须在每个页面都那我写权限判断和日志操作了。

你什儿 ,你什儿 土妙招

注入到人家的构造函数里:

对于权限判断/操作日志等操作,这里集中操作了,当然也是在这里调用其它独立模块就行了,至于界面,就太少写权限判断和日志记录了。

2:好像界面调用里跳出了SetAop土妙招,那每次操作都有来一次?还不能自动点,省的一行算一行?答案是还不能的。

现在将会你调用Add,是都有就要先执行Begin土妙招,执行完内容以前,又要执行End土妙招了。

http://www.cnblogs.com/cyq1162/archive/2010/09/24/1833670.html

说明:

还有最重要的是,统一管理后,你为什么我么我传参获到分类与更新后的用户名称。

3:预先实现

AOP说:

MAction action = new MAction(new AopAction());

action.Add();

4:内控 用Setter土妙招开个洞,不使用构造函数注入,土妙招里增加Begin调用与End调用

比如上边的权限,说到底内控 还是调用select来决定有这样权限;

我那让他两行代码,一行权限,一行操作日志,

为了解耦,你弄了一堆鬼就看不懂的代码,好吧,算不算能正常运行,那我这咋应用上?

权限的类型我到哪传?操作日志的类型,操作的用户名称,我去哪拿去?他说,唉,这样僵化 了!

还有,亲戚朋友到处说你性能低呢,还是你解耦还有不就为了维护方便么,那我你那一堆鬼都难看懂的代码,本来我换那我人来维护,那都有天天要叫太阳。

我上边的代码要咱办改呢?说了一堆,应用不上,不白说了?

最后调用:

说白某些:

AOP说:

    public interface IAop

    {

        
void Begin();

        
void End();

    }

那我接口:

中秋之假,不得劲闲,在博客园里搜了下AOP就看看,试图看懂些许文章,可惜文章都说的太中规中矩,没发现一篇能浅显看的易懂的。

说起来不得劲僵化 ,借用别人励志的话 说一下好了:

OK,本篇写到这里也算然后然后开始。

在土妙招调用以前,你先调用[Begin]函数实现权限判断;

上边的操作日志,也本来我Update后的事情;

难道页面放个隐藏域,再Request一下或取当前Url来判断分支与使用?是个土妙招,不过不得劲悬!!!

结言:

我的想法很好的,让他分离下权限/操作日志,独立出去统一管理,以前改代码太少跑每个页面改去。

至于实现,是相对僵化 了点,为能了拦截每个土妙招的调用,在调用的前后插入其它土妙招,得底层某些,本来不平易近人了。

分析下:

不使用构造函数实现注入,是为了使用继承来一次性使用SetAop,从而处置到处使用SetAop