Spring.NET依赖注入框架学习--Spring.NET简介
概述
Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。
企业级应用一般由多个物理层组成,每个物理层也经常划分为若干功能层。不同层次之间需要相互协作,例如,业务服务层一般需要使用数据访问层的对象来实现某个用例。不管应用程序如何构建,最终都会表现为一系列相互协作的对象,这些对象一起组成了完整的应用程序。所以我们说,应用程序中的对象之间相互具有依赖性。
.NET平台为构建应用程序提供了丰富的功能,从非常基础的基元类型和基础类库(以及定义新类的方法),到功能完善的应用程序服务器和Web框架,都有很好的支持。但.NET平台本身并没有提供任何方式来管理基础的应用模块并将它们组合为一个相互协作的整体,只能依靠架构师或开发人员去创建(一系列)应用程序。诚然,目前有很多设计模式可用于业务系统的设计,我们可以使用这些模式将各种类或对象组合成能够正常工作的完整应用。工厂、抽象工厂、Builder、装饰及服务定位器(Service Locator)等模式已被现今的软件开发行业广泛接受和采用(这也许正是这些模式最早被定型为模式的原因)。这些模式都非常好,但也不过是些已命名的最佳编程方法,在对这些模式的介绍中一般还会说明它们是作什么用的、最好应用到什么场合、可以解决什么问题等等。我们可以从许多书籍和wiki上找到这些模式,然后仔细研读,然后实现在我们自己的应用中。
Spring.NET的IoC容器所解决的,正是如何在企业应用中将类、对象和服务组合成应用程序的问题。IoC容器通过很正统(按:formalized,言下之意是这些方式都是已经定型了的、经过了业界多年考验的)的方式将分散的组件组合成完整的应用程序。Spring.NET框架所采用的,都是被业界无数应用程序考验多年的、已经被定型为设计模式的最佳编程方式,实际上,这些模式已经成为我们架构和开发时的法典,而通过Spring.NET,我们可以直接将它们整合到自己的应用程序中。目前已有很多组织和机构用Spring框架开发出了强壮的、维护性好的应用程序,这确实是一件非常好的事情。
Spring.NET模块组成
Spring.NET框架包括很多功能,这些功能被很好的组织进一系列模块当中,其核心模块组成如下图所示。
Spring.Core -------作为整个框架的基础,实现了依赖注入的功能。Spring.NET的大部分模块都要依赖或扩展该模块
Spring.Aop ——为业务对象提供面向方面编程(AOP)的支持
Spring.Data ——使用这个 模块来实现更高的效率和写入数据的一致性 在ADO访问功能。 网和执行声明式事务 管理。
Spring.Data.NHibernate 使用这个模块 与Spring的声明式事务管理集成NHibernate 功能允许容易混合的ADO。 净和NHibernate操作 在同一事务。 NHibernate 1.0用户将受益于安逸 使用api来执行数据访问操作。
Spring.Messaging 使用这个模块 提高抽象层次与微软MSMQ交互 那些排队消息中间件
Spring.Messaging.NMS ——使用这个 模块与Apache交互时提高抽象层次 ActiveMQ消息那些排队的中间件(NMS)
Spring.Messaging.EMS ——使用这个 模块提高抽象层次和Tibco交互时 那些排队企业消息服务(EMS)消息中间件
Spring.Web ——编写ASP.NET Web应用程序时,使用此模块可以提高抽象级别,从而可以有效地解决ASP.NET中常见的难题,如数据绑定,验证和ASP.NET页面/控件/模块/提供程序配置。
Spring.Web.Mvc ——使用此模块将Spring.Core和Spring.Aop模块的功能集成到ASP.NET MVC 2项目中。
Spring.Web.Mvc3 ——使用此模块将Spring.Core和Spring.Aop模块的功能集成到ASP.NET MVC 3项目中。
Spring.Web.Extensions 在编写ASP.NET Web应用程序时,使用此模块可以提高抽象级别(抽象),使您可以有效地解决ASP.NET中的常见问题,如数据绑定,验证和ASP.NET页面/ control / module / provider配置。
services ——使用此模块来调整纯CLR对象,以便它们可以与特定的分布式通信技术(如.NET Remoting,Enterprise Services和ASMX Web Services)一起使用。这些服务可以通过依赖注入来配置,通过应用AOP来进行“装饰”。
Spring.Testing.NUnit ——使用这个 NUnit模块进行集成测试。
Spring.Testing.MSTest ------使用这个模块 与MSTest执行集成测试
Spring.Scheduling.Quartz ——使用此模块来支持与Quartz.NET作业调度程序基础结构进行交互。
Spring.Core模块还包含以下附加功能
- 表达式语言 - 在运行时提供高效的查询和操作对象图。
- 验证框架 - 一个强大的用户界面不可知的框架,用于以编程或声明的方式为业务对象创建复杂的验证规则。
- 数据绑定框架 - 用于执行数据绑定的UI不可知框架。
- 动态反射 - 提供高性能的反射API
- 线程 - 提供额外的并发性(并发性)抽象,如锁??存,信号量和线程本地存储。
- 资源抽象(Resource Abstraction) - 提供了一个通用的接口来处理来自文件和URL的多态(多态)和协议无关的InputStream。
Spring.NET文档
具体详细介绍:这里有Spring.NET1.3.2版本文档官网下载的
Spring.NET源码下载
官网:http://www.springframework.net/
GitHub地址:https://github.com/spring-projects/spring-net
可以看到最新版Spring.NET1.3.2以及下面的老的版本如图所示
这里本人下载Spring.ENT-1.3.1版本(非最新)
目录介绍
Spring主要核心模块代码
Spring.NET 编译生成的动态库文件
开发中经常使用的Spring.NET动态库文件
Common.Logging.dll(必要)
Spring.Core.dll(必要)
Spring.Data.dll
Spring.Aop.dll(可选)
Spring.Data.NHibernate21.dll
Spring.Web.dll