各种IoC框架下实现AOP

.Net AOP(五) 各种IoC框架下实现AOP

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
主要功能
日志记录,性能统计,安全控制,事务处理,异常处理等等。
主要意图
将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码
一个Castle的实现

首先下载Castle.Windsor.dll

自定义Interceptor
public class MyInterceptor : IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            PreProceed(invocation);
            invocation.Proceed();
            PostProceed(invocation);
        }
        public void PreProceed(IInvocation invocation)
        {
            Console.WriteLine("方法执行前");
        }

        public void PostProceed(IInvocation invocation)
        {
            Console.WriteLine("方法执行后");
        }
    }

用户注册接口和实现
public interface IUserProcessor
    {
        void RegUser(User user);
    }

    public class UserProcessor : IUserProcessor
    {
        public virtual void RegUser(User user)
        {
            Console.WriteLine("用户已注册。Name:{0},PassWord:{1}", user.Name, user.PassWord);
        }
    }
客户端调用
public class Client
    {
        public static void Run()
        {
            try
            {
                ProxyGenerator generator = new ProxyGenerator();
                MyInterceptor interceptor = new MyInterceptor();
                UserProcessor userprocessor = generator.CreateClassProxy<UserProcessor>(interceptor);
                User user= new User() { Name = "lee", PassWord = "123123123123" };
                userprocessor.RegUser(user);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
时间: 2024-12-31 05:33:13

各种IoC框架下实现AOP的相关文章

Spring框架下使用AOP实现日志功能

1 首先定义一个注解类: 新建一个接口并在interface前面添加@ public @interface LogAnnotation{ }

.NET的轻量级IOC框架芮双随笔

面向对象的设计的重用性一直是他的一个重要特性,为了有效定义这一特性,又引申出面向对象设计的几个原则:高内聚.低耦合.功能单一.优先使用聚合.面向接口编程等.依赖这些原则和前人的经验,又发展出形形色色的模式,分析这些原则和模式可以发现,或许是因为硬件的快速升级,我们走的是一条牺牲软件效率以提高其重用性的道路.而沿着这条路走出的另一步就是现在出现在.NET中而Java已经有了相当发展的IOC框架(以上纯属个人观点).目前.NET中的IOC框架较受关注的有Spring.net和Castle等. IOC

.Net常见的IOC框架及AOP框架

IOC框架 Unity:微软patterns&practicest团队开发的IOC依赖注入框架,支持AOP横切关注点. MEF(Managed Extensibility Framework):是一个用来扩展.NET应用程序的框架,可开发插件系统. Spring.NET:依赖注入.面向方面编程(AOP).数据访问抽象,.以及ASP.NET集成. Autofac:最流行的依赖注入和IOC框架,轻量且高性能,对项目代码几乎无任何侵入性. Ninject:基于.NET轻量级开源的依赖注入IOC框架 A

(转)IOC框架Ninject实践总结

http://www.cnblogs.com/jeffwongishandsome/archive/2012/04/15/2450462.html 一.控制反转和依赖注入 Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架.所谓的IOC,即控制反转(Inversion of Control),它是一个经典的面向对象编程法则,它的作用主要是用来帮助应用程序解耦,并把程序分离成一个个松耦合高内聚的模块.控制反转还有一个名字叫依赖注入(Dependency Injection),简称

NET领域最为流行的IOC框架之一Autofac

一.前言 Autofac是.NET领域最为流行的IOC框架之一,微软的Orchad开源程序使用的就是Autofac,Nopcommerce开源程序也是用的Autofac. Orchad和Nopcommerce在用Autofac的时候进行封装,看过源码的都知道Autafac使用简单,功能强大. 建议下载Orchad和Nopcommerce学习下源码:附上下载地址 http://www.orchardproject.net/ http://www.nopcommerce.com/ 和其他IOC对比:

PHP的高效IOC框架——CanoeDI

PHP的高效IOC框架--CanoeDI 一个非常简单且实用的IoC框架,相对于其他的Ioc框架有如下特点: 高效: 框架使用了非常实用且高效的算法,使得框架本身对应用的影响微乎其微,且框架提供了C扩展,最大限度的将性能提升到最高. 配置简单: 大多数情况下几乎不需要额外的配置 自动装配: 基于PHPDocument的property属性来自动装配 懒加载: 所有被注入的变量的实例都为即用即取, 不会产生内存垃圾 IDE友好: 因为利用的是PHP的标准规范, 兼容大部分IDE 安装 编译安装,可

java框架篇---spring AOP 实现原理

什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封装.继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合.当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力.也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系.例如日志功能.日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无

Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】

1.概述 首先我们来吹吹牛,什么叫IoC,控制反转(Inversion of Control,英文缩写为IoC),什么意思呢? 就是你一个类里面需要用到很多个成员变量,传统的写法,你要用这些成员变量,那么你就new 出来用呗~~ IoC的原则是:NO,我们不要new,这样耦合度太高:你配置个xml文件,里面标明哪个类,里面用了哪些成员变量,等待加载这个类的时候,我帮你注入(new)进去: 这样做有什么好处呢? 回 答这个问题,刚好可以回答另一个问题,很多人问,项目分层开发是吧,分为控制层.业务层

java轻量级IOC框架Guice

Guice是由Google大牛Bob lee开发的一款绝对轻量级的java IoC容器.其优势在于: 速度快,号称比spring快100倍. 无外部配置(如需要使用外部可以可以选用Guice的扩展包),完全基于annotation特性,支持重构,代码静态检查. 简单,快速,基本没有学习成本. Guice和spring各有所长,Guice更适合与嵌入式或者高性能但项目简单方案,如OSGI容器,spring更适合大型项目组织. 注入方式 在我们谈到IOC框架,首先我们的话题将是构造,属性以及函数注入