企业开发框架NHibernate和Spring.Net简介-2
本文内容纲要:企业开发框架NHibernate和Spring.Net简介-2
企业开发框架NHibernate和Spring.Net简介-2
2008-03-24 13:58
1.5.3 Spring.Net介绍 Spring框架由一个容器,一个配置和组织组件的框架,和一组内置的为事务、持久化和Web用户接口提供的服务组成。Spring.Net是一个关注于.NET企业应用开发的应用程序框架,它能够提供非常丰富的功能,例如依赖注入(Dependency Injection),面向方面编程(Aspect Oriented Programming),数据访问抽象以及ASP.NET集成等。Spring.NET脱胎于Java的Spring框架,其1.0版包括了一个功能完整的反转控制容器和AOP函数库,在后续的版本中将包含对ASP.NET、Remoting和数据访问的支持。Spring.Net的框架如图1-53所示。 图1-53 Spring.Net的框架图 1.控制反转 控制反转(IoC,Inversion of Control)意味着将设计好的类交给系统去控制,而不是在自己的类内部控制。 IoC是近年来兴起的一种思想,主要是协调各组件间相互的依赖关系,同时大大提高了组件的可移植性,组件的重用机会也变得更多。在传统的实现中,由程序内部代码来控制程序之间的关系。我们经常使用new关键字来实现两组键间关系的组合,这种实现地方式会造成组件之间耦合(一个好的设计,不但要实现代码重用,还要将组件间关系解耦)。IoC很好地解决了该问题,它将实现组件间关系从程序内部提到外部容器,也就是说由容器在运行期将组件间的某种依赖关系动态注入组件中。 分离关注(Separation of Concerns:SOC)是产生IoC模式和AOP的最原始动力,通过功能分解可得到关注点,这些关注可以是组件、方面或服务。 从GOF设计模式中,我们已经习惯一种思维编程方式——接口驱动。接口驱动有很多好处,可以提供灵活的子类实现,增加代码稳定和健壮性等,但是接口一定是需要实现的,即如下语句一定要执行。 AInterface a = new AInterfaceImp(); AInterfaceImp是接口AInterface的子类,Ioc模式可以根据需要延缓接口的实现,有个比喻:接口如同空的模型套,在必要时向模型套注射石膏,成为一个模型实体。可以人为控制接口的实现完成“注射”。 IoC的实现方式有以下几种: 基于接口的(Interface-based IoC,Type-1)。 基于设值的(Setter-based IoC,Type-2)。 基于构造的(Construtor-based IoC,Type-3)。 下面通过简单的例子分别介绍上述几种实现方式。 (1)Type-1。基于接口的设计方法通常是利用接口将调用者与实现者分离。 #001 public class Sport { #002 private InterfaceBall ball; //InterfaceBall是定义的接口 #003 public void init() { #004 //Basketball实现了InterfaceBall接口 #005 ball = (InterfaceBall) Class.forName("Basketball").newInstance();} #006 } Sport类在编译期依赖于InterfaceBall的实现,为了将调用者与实现者分离,可以动态生成Basketball类并将其强制类型转换为InterfaceBall。 (2)Type-2。基于设值的设计方法是通过在类中暴露setter方法来实现依赖关系。 #001 public class Sport { #002 private InterfaceBall _ball; #003 public InterfaceBal1 ball #004 { #005 set{ _ball = value ;} } #006 } Spring.NET就是实现了该类型的轻量级容器。 (3)Type-3。通过构造方法完成依赖关系。 #001 public class Sport { #002 private InterfaceBall ball; #003 public Sport(InterfaceBall arg) { #004 ball = arg; } #005 } 由于Type-3在构造期就形成了对象的依赖关系,所以对对象的重用变得困难。有些框架需要组件提供一个默认的构造方法,此时就显现出Type-3的局限性。通常所有的参数都是通过构造方法注入的,当对象间的依赖关系较多时,构造方法就显得比较复杂,不利于单元测试。PicoContainer就是实现了Type-3依赖注入模式的轻量级容器。 2.Spring.NET库 Spring.NET库有6个基本组成部分,基本上涵盖了Spring.NET框架的所有功能结构。 Spring.Core库是Spring.NET框架最基础的部分,它提供了依赖注入的功能。Spring.NET中大部分的函数库都依赖于这个核心库提供的功能,或者是对核心库的扩展。IObjectFactory是核心容器接口,负责管理容器内的注入对象,而IApplicationContext则是IObjectFactory的继承,它扩展了一些功能。 Spring.Aop库为商业逻辑对象提供了面向方面编程的支持,它为创建企业应用和为商业对象提供服务打下了基础,是Spring核心库中IoC容器的补充。 Spring.Web库为ASP.NET增加了很多功能,例如ASP.NET页面的依赖注入,数据双向绑定,为ASP.NET提供母版页功能,增强了本地化支持。所有的这些都是对ASP.NET很好的扩展。 Spring.Services库可以将任何一个“普通”对象(“普通”是指该对象不是继承自特殊服务的基类)暴露成为一个企业应用(COM+)或者远程对象。因为对依赖注入和原数据属性重载的支持,.NET 中的Web服务会获得更好的配置上的灵活性。同样,该库也提供了对Windows服务的支持。 Spring.Data库为.NET提供了一个数据访问层的抽象,它能够用于从ADO.NET到多种ORM Provider的数据访问提供者。它同时包含了一个ADO.NET抽象层,简化了对ADO.NET的编码和事务管理。 Spring.ORM库提供了一个用于常见的对象—关系映射库的综合层,它提供了诸如对事务管理的支持等功能。 |
本文内容总结:企业开发框架NHibernate和Spring.Net简介-2
原文链接:https://www.cnblogs.com/kedach/archive/2008/09/05/1284864.html
以上是 企业开发框架NHibernate和Spring.Net简介-2 的全部内容, 来源链接: utcz.com/z/295906.html