Spring.Net框架一:Spring.Net简介
一、Spring.Net简介
Spring.NET为建立企业级应用提供了一套轻量级的解决方案。
通过Spring.NET,我们可以用统一且透明的方式来配置应用程序。Spring.NET的重点是为中间层提供声明式事务管理,以及一个功能齐全的ASP.NET扩展框架。Spring.NET是非侵入式的,代码对框架本身不会产生任何依赖。
Spring.Core库是框架的基础,提供依赖注入功能。Spring.NET中大多数类库依赖或扩展了Spring.Core的功能。IObjectFactory接口提供了一个简单而优雅的工厂模式,移除了对单例和一些服务定位stub的必要。允许你将真正的程序逻辑与配置解耦。作为对IObjectFactory的扩展,IApplicationContext接口也在Spring.Core中,Spring DOTNET是一个关注于.NET企业应用开发的应用程序框架。它能够提供很多方面的功能,例如控制反转(Inversion of Control,英文缩写为IOC)、依赖注入(Dependency Injection,英文缩写为DI)、面向方面编程(AOP)、数据访问抽象,以及ASP.NET集成等。基于Java的spring框架的核心概念和价值已被应用到.NET。Spring.NET 1.0包含一个完全功能的依赖注入容器和AOP库。后续的发布将包含对Spring.NET、Remoting和数据访问的支持。
二、依赖注入
依赖注入即控制反转
控制反转(Inversion of Control,英文缩写为IOC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。控制反转一般分为两种类型:依赖注入(Dependency Injection,简称DI)和依赖查找。依赖注入应用比较广泛。
其本质就是反射工厂。
在运行期间,由外部容器动态地将依赖对象注入到容器中。
Interface Driven Design接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执行:AInterface a = new AInterfaceImp(); 这样一来,耦合关系就产生了,如:
1 class A 2 { 3 AInterface a; 4 public A() 5 { } 6 //方法 7 public void Method() 8 { 9 //实例化对象 10 a = new AInterfaceImp(); 11 } 12 }
在上面的代码中,Class A与AInterfaceImp就是依赖关系,如果想使用AInterface的另外一个实现类就需要更改代码了。当然,我们可以建立一个Factory来根据条件生成想要的AInterface的具体实现,代码如下:
1 public class InterfaceImpFactory 2 { 3 public AInterface Create(Object obj) 4 { 5 if (obj.Equals(condA)) 6 { 7 return new AInterfaceImpA(); 8 } 9 if (obj.Equals(condB)) 10 { 11 return new AInterfaceImpB(); 12 } 13 else 14 { 15 return new AInterfaceImp(); 16 } 17 } 18 }
上面的代码中,表面上看来在一定程度上缓解了以上问题,但实质上这种代码耦合并没有改变。通过IoC模式可以彻底解决这种耦合,它把耦合从代码中移出去,放到统一的XML 文件中,通过一个容器在需要的时候把这个依赖关系形成,即把需要的接口实现注入到需要它的类中,这可能就是“依赖注入”说法的来源了。
三、DLL文件
Spring.Core.dll:包含Spring.NET框架基本的核心工具类,Spring.NET其他组件都要使用这里的类,是其他组件的基本核心。
Spring.NET其他组件都要使用到这里的类,是其他组件的基本核心。
Spring.Aop.dll:Spring.NET的AOP框架。
Spring.Web.dll:提供了对Web的支持。
Spring.Web.Mvc3.dll:Spring.NET自己的Web框架。
Common.Logging.dll:Spring.Net日志功能。