Spring.NET概述
上一篇 / 下一篇 2008-05-11 15:43:14 / 个人分类:转载
1.Spring.NET框架
Spring.NET是一个开源的应用程序框架,它移植自Java平台下流行的Spring框架。其目的是协助开发人员创建企业级的.NET应用程序。它 提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET借助于.NET 强大的反射机制,可以极大地简化.NET应用程序开发。
Spring.NET框架的核心建立在IoC模式之上。在2004年,Martin Fowler在他的网站上发表了《Inversion of Control Containers and the Dependency Injection pattern》文章(网址:http://martinfowler.com/articles/injection.html),在文章中解释了 IoC(Inversion of Control,控制反转)和DI(Dependency injection,依赖注入)的原则和思想。Spring.NET框架提供了一个IoC容器,还包含了许多特性,并被很好地组织在下图所示的模块中。

2. IoC容器
IoC模式的基本概念是,不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,而在配置文件中描述哪一个组件需要哪一项服务,容器负责 将这些联系在一起。对于Spring.NET框架来说,就是由Spring.NET来负责控制对象的生命周期和对象间的关系。
Spring.Core程序集是中的Spring.Objects.Factory.IObjectFactory接口是初始化、配置及管理对象的实际容 器,对象相互间的依赖性通过IObjectFactory的配置数据反映出来。Spring.Core程序集是中的Spring.Context. IApplicationContext扩展了IObjectFactory,增加了AOP和消息资源处理等功能, 是IObjectFactory的一个超集,具备IObjectFactory所有的功能与行为。一般都会用IApplicationContext来作 为IoC容器。
3.AOP
AOP(Aspect Oriented Programming,面向方面的编程),提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。AOP允许程序员对横切 (Crosscutting)关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面(Aspect),它将那些影响多个类的行为封装到可重用的模块中。AOP的本质就是把软件系统分为两个部分:核心关注点和横切关注点。 所谓核心关注点是:业务处理的主要流程,也就是说这个解决方案要作的事。所谓横切关注点是:与核心业务无关的部分,它常常发生在核心关注点地多处,而各处 基本相似,如:日志、权限等。横切关注点虽然与核心的业务实现无关,但是它却是一种更通用的业务,个个横切关注点离散的分布于核心业务地多处,导致系统中 的每一个模块都与这些业务具有很强的依赖性。横切关注点所代表的业务,即为“方面”。
Spring.NET框架的一个关键的组件就是 AOP框架。尽管如此,Spring.NET IoC容器并不依赖于AOP,这意味着可以自由选择是否使用AOP。AOP提供强大的中间件解决方案,这使得Spring.NET IoC容器更加完善。
AOP中的一些基本概念,这些概念都是AOP的通用术语,并非Spring.NET所特有。
方面(Aspect):对横向分布在多个对象中的关注点所做的模块化。在企业应用中,事务管理就是一个典型的横切关注点。Spring.NET将方面实现为Advisor或拦截器(interceptor)。
连接点(Joinpoint):程序执行过程中的一个点,例如对某个方法的调用或者某个特定异常的抛出都可以称为连接点。
通知(Advice):AOP框架在某个连接点所采取的行为。通知有多种类型,包括“环绕”通知,“前置”通知和“异常”通知等,后文将对通知类型进行讨 论。包括Spring.NET在内的很多AOP框架都把通知建模为拦截器(interceptor),并且会维护一个"包围"在连接点周围的拦截器链。
切入点(Pointcut):指通知的应用条件,用于确定某个通知要被应用到哪些连接点上。AOP框架应允许让开发人员指定切入点,例如,可以使用正则表达式来指定一个切入点。
引入(Introduction):向目标对象添加方法或字段的行为。Spring.NET允许为任何目标对象引入新的接口。例如,可以利用引入让任何对象在运行期实现IAuditable接口,以简化对象状态变化的跟踪过程。
目标对象(Target object):指包含连接点的对象。也称为被通知或被代理对象。
AOP代理(AOP proxy):由AOP框架在将通知应用于目标对象后创建的对象。在Spring.NET中,AOP代理是使用IL代码在运行时创建的动态代理。
织入(Weaving):将方面进行组装,以创建一个目标对象。织入可以在编译期完成,也可以在运行时完成,Spring.NET在运行时执行织入。
4. 数据访问框架
5. Nhibernate集成
6. Web框架
7. 服务
Spring.NET是一个开源的应用程序框架,它移植自Java平台下流行的Spring框架。其目的是协助开发人员创建企业级的.NET应用程序。它 提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET借助于.NET 强大的反射机制,可以极大地简化.NET应用程序开发。
Spring.NET框架的核心建立在IoC模式之上。在2004年,Martin Fowler在他的网站上发表了《Inversion of Control Containers and the Dependency Injection pattern》文章(网址:http://martinfowler.com/articles/injection.html),在文章中解释了 IoC(Inversion of Control,控制反转)和DI(Dependency injection,依赖注入)的原则和思想。Spring.NET框架提供了一个IoC容器,还包含了许多特性,并被很好地组织在下图所示的模块中。

2. IoC容器
IoC模式的基本概念是,不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,而在配置文件中描述哪一个组件需要哪一项服务,容器负责 将这些联系在一起。对于Spring.NET框架来说,就是由Spring.NET来负责控制对象的生命周期和对象间的关系。
Spring.Core程序集是中的Spring.Objects.Factory.IObjectFactory接口是初始化、配置及管理对象的实际容 器,对象相互间的依赖性通过IObjectFactory的配置数据反映出来。Spring.Core程序集是中的Spring.Context. IApplicationContext扩展了IObjectFactory,增加了AOP和消息资源处理等功能, 是IObjectFactory的一个超集,具备IObjectFactory所有的功能与行为。一般都会用IApplicationContext来作 为IoC容器。
3.AOP
AOP(Aspect Oriented Programming,面向方面的编程),提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。AOP允许程序员对横切 (Crosscutting)关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面(Aspect),它将那些影响多个类的行为封装到可重用的模块中。AOP的本质就是把软件系统分为两个部分:核心关注点和横切关注点。 所谓核心关注点是:业务处理的主要流程,也就是说这个解决方案要作的事。所谓横切关注点是:与核心业务无关的部分,它常常发生在核心关注点地多处,而各处 基本相似,如:日志、权限等。横切关注点虽然与核心的业务实现无关,但是它却是一种更通用的业务,个个横切关注点离散的分布于核心业务地多处,导致系统中 的每一个模块都与这些业务具有很强的依赖性。横切关注点所代表的业务,即为“方面”。
Spring.NET框架的一个关键的组件就是 AOP框架。尽管如此,Spring.NET IoC容器并不依赖于AOP,这意味着可以自由选择是否使用AOP。AOP提供强大的中间件解决方案,这使得Spring.NET IoC容器更加完善。
AOP中的一些基本概念,这些概念都是AOP的通用术语,并非Spring.NET所特有。
方面(Aspect):对横向分布在多个对象中的关注点所做的模块化。在企业应用中,事务管理就是一个典型的横切关注点。Spring.NET将方面实现为Advisor或拦截器(interceptor)。
连接点(Joinpoint):程序执行过程中的一个点,例如对某个方法的调用或者某个特定异常的抛出都可以称为连接点。
通知(Advice):AOP框架在某个连接点所采取的行为。通知有多种类型,包括“环绕”通知,“前置”通知和“异常”通知等,后文将对通知类型进行讨 论。包括Spring.NET在内的很多AOP框架都把通知建模为拦截器(interceptor),并且会维护一个"包围"在连接点周围的拦截器链。
切入点(Pointcut):指通知的应用条件,用于确定某个通知要被应用到哪些连接点上。AOP框架应允许让开发人员指定切入点,例如,可以使用正则表达式来指定一个切入点。
引入(Introduction):向目标对象添加方法或字段的行为。Spring.NET允许为任何目标对象引入新的接口。例如,可以利用引入让任何对象在运行期实现IAuditable接口,以简化对象状态变化的跟踪过程。
目标对象(Target object):指包含连接点的对象。也称为被通知或被代理对象。
AOP代理(AOP proxy):由AOP框架在将通知应用于目标对象后创建的对象。在Spring.NET中,AOP代理是使用IL代码在运行时创建的动态代理。
织入(Weaving):将方面进行组装,以创建一个目标对象。织入可以在编译期完成,也可以在运行时完成,Spring.NET在运行时执行织入。
4. 数据访问框架
5. Nhibernate集成
6. Web框架
7. 服务
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
TAG: