Spring.NET依赖注入框架学习--简介
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进行了一系列功能扩展
Spring.NET依赖注入框架学习--简介的更多相关文章
- Spring.NET依赖注入框架学习--实例化容器常用方法
Spring.NET依赖注入框架学习---实例化容器常用方法 本篇学习实例化Spring.NET容器的俩种方式 1.通过XmlObjectFactory创建一个Spring.NET容器 IResour ...
- Spring.NET依赖注入框架学习--简单对象注入
Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...
- Spring.NET依赖注入框架学习--入门
Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...
- Spring.NET依赖注入框架学习-- 泛型对象的创建和使用
Spring.NET依赖注入框架学习-- 泛型对象的创建和使用 泛型对象的创建方法和普通对象是一样的. 通过构造器创建泛型对象 下面是一个泛型类的代码: namespace GenericsPlay ...
- 在ABAP里模拟实现Java Spring的依赖注入
Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用.通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便. 那么ABAP能否从语言层面上也 ...
- 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .
3.2. “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探
更新 1.如果看不懂本文,或者比较困难,先别着急问问题,我单写了一个关于依赖注入的小Demo,可以下载看看,多思考思考注入的原理: https://github.com/anjoy8/BlogArti ...
- Z从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探
本文梯子 本文3.0版本文章 更新 代码已上传Github+Gitee,文末有地址 零.今天完成的绿色部分 一.依赖注入的理解和思考 二.常见的IoC框架有哪些 1.Autofac+原生 2.三种注入 ...
- spring的依赖注入是什么意思
最近学习spring框架,对依赖注入有些模糊,遂上网翻阅资料,做了下列总结,原博客为CSDN 南夏的 spring的依赖注入是什么意思,侵删! Spring 能有效地组织J2EE应用各层的对象.不管是 ...
随机推荐
- 使用JCOOKIES创建http cookie
jCookies,一个功能强大的操作http cookie的jquery插件,他能够让你存储任何数据类型如:字符串,数组,对象等.它通过JavaScript存储Cookies,然后通过服务器端代码如: ...
- 最课程阶段大作业之01:使用SVN实现版本控制
版本控制在友军那里都是放在整个培训的最后阶段才开始讲的,但我们打算放到SE阶段.与其匆匆在项目实战阶段弄个半生不熟,然后进入实际工作中接受他人对你的怀疑,不如……早死早超生~~~. 可是,我们毕竟现在 ...
- 你真的会用Gson吗?Gson使用指南(1)
JSON (官网) 是一种文本形式的数据交换格式,它比XML更轻量.比二进制容易阅读和编写,调式也更加方便.其重要性不言而喻.解析和生成的方式很多,Java中最常用的类库有:JSON-Java.Gso ...
- PL/SQL- ora-12154 '' TNS:could not resolve the connect identifier specified'
出现如上情况在使用pl/sql连接oracle服务器时很常见,问题出现的方式也很多 最终问题还是pl/sql在读取NETWORK\ADMIN\tnsnames.ora是配置的内容时解析错误 也就是说t ...
- 浅谈压缩感知(二十四):压缩感知重构算法之子空间追踪(SP)
主要内容: SP的算法流程 SP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 SP与CoSaMP的性能比较 一.SP的算法流程 压缩采样匹配追踪(CoSaMP)与子 ...
- 【T05】套接字接口比XTI_TLI更好用
1.用于网络编程的API接口有两种: Berkeley套接字 XTL 2.套接字是加州大学伯克利分校为其Unix操作系统版本开发的,TLI是AT&T(贝尔实验室)为Unix系统V3.0开发的 ...
- postgresql 窗口函数排序实例
经常遇到一种应用场景,将部分行的内容进行汇总.比较.排序. 比如数据表名称test.test2 select num,province from test.test2 得到结果: ;"黑龙江 ...
- ASP.net教程]启用WebApi 2里的Api描述信息(Help下的Description
环境:vs2013+web api 2 问题:默认情况下新建的Web Api 2项目,自带的Help页下会显示Api的相关信息,但Description那一栏无法获取到数据,如下图所示: 解决: 1. ...
- oracle完全删除实例
问题描述: 重建oracle库实例,因此要删除数据库实例 问题解决: 利用自用自带的dbca库管理,实现图形化删除实例 01.登录安装oracle数据库的linux 打开xshell企业版的Xman ...
- poj 2068 Nim(博弈dp)
Nim Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1403 Accepted: 791 Description Le ...