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版本文档官网下载的

官方参考文档:

PDF版本: spring-net-reference.zip   chm版本: spring-net-reference-chm

官方参考API:

API 后缀为.chm的手册Spring.NET-1.3.2-API英文官方手册   官方可以直接免费下载(大小26M)

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动态库文件

我们使用Spring.Net 框架经常要使用到的是以下文件:

  • Common.Logging.dll  包含了Spring.Net日志方面的功能(必须)
  • Spring.Core.dll       包含了Spring.Net 的核心库(必须)
  • Spring.Data.dll       包含了Spring.Net 的数据访问功能
  • Spring.Aop. dll       包含了Spring.Net 对面向切面编程(AOP)的支持
  • Spring.Web.dll       包含了Spring.Net 对ASP.NET进行了一系列功能扩展

最新文章

  1. C# 洗牌算法
  2. 新手入门之GDB调试
  3. pt-fifo-split使用
  4. Java面向对象的多态
  5. sublime text主要快捷键列表
  6. 汇编中 .fill 的作用
  7. python_day2_homework_1(简单购物商城)
  8. 玄机网C#论坛测试小游戏
  9. SOSP 文档 - Windows Azure 存储:具有强一致性的高可用性云存储服务
  10. 可失败构造器(Failable Initializers)
  11. magento后台登陆后,没任何提示,又跳转到登陆页面
  12. 【足迹C++primer】48、函数引用操作符
  13. Forget Java to learn Javascript from 0.--Preface
  14. S2_SQL_第四章
  15. 苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类
  16. 迎元旦,庆surging 1.0发布
  17. 使用PHP+MySql操作——实现微信投票功能
  18. 1、CentOS部署Java开发环境
  19. centos磁盘空间重新分配
  20. HDU 4745 Two Rabbits (2013杭州网络赛1008,最长回文子串)

热门文章

  1. STL使用sort注意的问题
  2. 利用正则表达式作为string.split seprator
  3. ZOJ3469 Food Delivery 区间DP
  4. HDOJ-ACM1008(JAVA)
  5. HDU 5491 The Next
  6. 托盘图标、气泡以及任务栏崩溃后的自动添加——Shell_NotifyIcon
  7. cobbler之详细配置
  8. 在MyEclipse中复制web工程时要注意的事项
  9. jQuery 自学笔记—8 常见操作
  10. ionic3+angular4的三方微信开发(登录and分享)
  11. DP基础练习(4.21)
  12. Orchard详解--第六篇 CacheManager 2
  13. R语言|数据特征分析
  14. 09.vue中样式-style
  15. bzoj4698
  16. HDU3488Tour (KM算法)
  17. code1068 乌龟棋
  18. [转] iOS中@class #import #include 简介
  19. Android关于注解那点事(二)
  20. 5028: 小Z的加油店(线段树)