大话spring.net之 引言

Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。

  企业级应用一般由多个物理层组成,每个物理层也经常划分为若干功能层。不同层次之间需要相互协作,例如,业务服务层一般需要使用数据访问层的对象来实现某个用例。不管应用程序如何构建,最终都会表现为一系列相互协作的对象,这些对象一起组成了完整的应用程序。所以我们说,应用程序中的对象之间相互具有依赖性。

  .NET平台为构建应用程序提供了丰富的功能,从非常基础的基元类型和基础类库(以及定义新类的方法),到功能完善的应用程序服务器和Web框架,都有很好的支持。但.NET平台本身并没有提供任何方式来管理基础的应用模块并将它们组合为一个相互协作的整体,只能依靠架构师或开发人员去创建(一系列)应用程序。诚然,目前有很多设计模式可用于业务系统的设计,我们可以使用这些模式将各种类或对象组合成能够正常工作的完整应用。工厂、抽象工厂、Builder、装饰及服务定位器(Service Locator)等模式已被现今的软件开发行业广泛接受和采用(这也许正是这些模式最早被定型为模式的原因)。这些模式都非常好,但也不过是些已命名的最佳编程方法,在对这些模式的介绍中一般还会说明它们是作什么用的、最好应用到什么场合、可以解决什么问题等等。我们可以从许多书籍和wiki上找到这些模式,然后仔细研读,然后实现在我们自己的应用中。

  Spring.NETIoC容器所解决的,正是如何在企业应用中将类、对象和服务组合成应用程序的问题。IoC容器通过很正统(按:formalized,言下之意是这些方式都是已经定型了的、经过了业界多年考验的)的方式将分散的组件组合成完整的应用程序。Spring.NET框架所采用的,都是被业界无数应用程序考验多年的、已经被定型为设计模式的最佳编程方式,实际上,这些模式已经成为我们架构和开发时的法典,而通过Spring.NET,我们可以直接将它们整合到自己的应用程序中。目前已有很多组织和机构用Spring框架开发出了强壮的、维护性好的应用程序,这确实是一件非常好的事情。

  在2004年初,Martin
Fowler曾经问他网站的读者:当我们谈到控制反转时,“问题是,它们反转的是哪方面的控制?”。随后Fowler建议为控制反转重新命名(或者起码给它一个更具自我描述性的名字),所以依赖注入(Dependency Injection)这一术语才得以使用。Fowler在论文中也讨论了控制反转和依赖注入原理背后的一些概念。如果您需要了解正宗的IoCDI理论,可以参考这篇论文:http://martinfowler.com/articles/injection.html

  

  Spring.NET框架包含了许多功能方面,它们都进入如下图所示的模块组织。下图显示了Spring.NET各核心模块。

  

  Spring.Core作为整个框架的基础,实现了依赖注入的功能。Spring.NET的大部分模块都要依赖或扩展该模块。Spring.Core的基础是IObjectFactory接口,该接口用一个简单而优雅的方式实现了工厂模式,使我们可以无需自行编写singleton类型和众多的服务定位器,并允许将对象配置及其依赖关系与具体的程序逻辑解耦。该模块中的IApplicationContext接口是IObjectFactory的扩展,增加了诸多企业级功能,包括使用资源文件进行文本本地化、事件传播和资源装载等等。

  Spring.AOP为业务对象提供面向方面编程(AOP)的支持。AOP完善了IoC容器的功能,为创建企业应用和使用声明式服务奠定了坚实的基础。

  Spring.Data定义了一个抽象的数据访问层,可以跨越各种数据访问技术(从ADO.NET到各种ORM)进行数据访问。该模块包含一个ADO.NET的抽象层,减少了使用传统ADO.NET进行编码和事务管理时的工作量。

  Spring.Data.NHibernate使用此模块集成到Spring的声明式事务管理功能NHibernate的能容易地操作ADO.NET和NHibernate的混合在同一事务。 NHibernate的1.0用户将受益于易于使用的API来执行数据访问操作。

  Spring.Web使用此模块,以抽象方式编写ASP.NET Web应用程序时允许你有效地解决共同的棘手问题,如在ASP.NET数据绑定,验证和ASP.NET母板页、控件、模块、驱动配置。

  Spring.Web.Extensions 使用此模块,可以轻松公开一个平原。NET对象(PONO),这是一个没有任何属性或特殊基类作为Web Service,通过依赖注入配置,应用AOP,并暴露在客户端的JavaScript。

  Spring.Services
- 使用此模块,以适应平原。使他们能够与特定的分布式通信技术等。NET Remoting的,企业服务,ASMX Web Service,和WCF服务,使用NET对象。这些服务可以通过依赖注入配置和应用AOP

  Spring.Testing.NUnit
- 使用此模块进行整合NUnit的测试。

  Spring.Testing.Microsoft
- 使用此模块进行集成测试框架与微软(MSTest的)测试。

  Spring.Messaging
- 使用此模块,以提您高效的创建Microsoft消息队列(MSMQ)应用程序坚实基础的最佳做法。

  Spring.Messaging.Nms
- 使用此模块,以提您高效的创建Apache ActiveMQ的应用程序,坚实基础的最佳做法。

  Spring.Messaging.Ems
- 使用此模块,以提您高效的创建TIBCO公司环境管理体系的应用程序坚实基础的最佳做法。

  Spring.Scheduling.Quartz
- 提供与Quartz.NET工作提供Quartz jobs,调度声明配置调度一体化,触发器以及一些方便的类以提高生产率在建立工作调度应用。

  Spring.Template.Velocity
- 辅助类配置NVelocity模板引擎在Spring.NET的应用程序。

  

  《Spring.NET学习笔记》系列博客主要是我本人对Spring.NET一个学习巩固的过程。该过程分为五个阶段:控制反转与依赖注入、面向切面编程、集成NHibernateASP.NET
MVC
开发、面向服务编程、扩展集成。而在最我又补充了一个项目的实战应用“企业架构体系实战”,我想这样对全面了解Spring.NET有所帮助。

  我个人认为,Spring.NET是目前最强大的IoC&AOP框架之一,到目前为止,在.NET中很少有其它框架能与Spring.NET一较高下,而Spring.NET框架的功能覆盖面很广,适合大型企业、网站的项目开发及应用,并能有效地在大型项目开发中帮助我们,同时Spring.NET也可以称为.NET应用程序中的“轻量级J2EE架构体系”。我撰写《Spring.NET学习笔记》系列博客的主要目的是为了推广Spring.NET框架,让更多的朋友掌握这个框架,因为Spring.NET的确是一个很好的框架。并希望越来越多的朋友加入到Spring.NET框架的学习和运用过程中。

时间: 2024-08-28 12:06:18

大话spring.net之 引言的相关文章

【转帖】大话Spring Cloud

springcloud(一):大话Spring Cloud 2017/05/01 http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html 研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效.分布式.容错

大话spring.net之IOC

在学习Spring.NET这个控制反转(IoC)和面向切面(AOP)的容器框架之前,我们先来看一下什么是控制反转(IoC). 控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection).我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从而实现松耦合. 我们先来看一段代码 namespace Dao {     public interf

大话spring.net之IOC框架的简单搭建

讲了这么多理论,我们来手动实现一个简易的IoC框架的,这样可以加深IoC的理论知识. 一.思路 在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象.通过这一点就可以告诉我们制作IoC容器需要写一个获取XML文件内容的方法和申明一个Dictionary<string, object>来存放IoC容器中的对象,还需要写一个能从Dictionary<string, obj

大话spring. net之依赖注入

谈到高级语言编程,我们就会联想到设计模式:谈到设计模式,我们就会说道怎么样解耦合.而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny Injection)简称DI,目前DI是最优秀的解耦方式之一.下面我就来谈谈依赖注入的应用场景. 我模拟了三种不同的场景,可以一起学习使用依赖注入的重要性. 下面是应用场景的条件:人类使用工具劳动.     /// <summary>     /// 抽象人类     /// </summary&g

大话 Spring Session 共享

javaweb中我们项目稍微正规点,都会用到单点登录这个技术.实现它的方法各家有各界的看法.这几天由于公司项目需求正在研究.下面整理一下最近整理的心得. 简介 在分布式项目中另我们头疼的是多项目之间的数据共享(即Session共享),经常会出现数据丢失的情况.为了解决这种Bug.前人已经把我们实现了两种解决的办法.今天我在这里一下这两种方式.侧重偏向第二种方法 配tomcat实现session共享 资源下载 点我下载 配置Tomcat 下载好上面的jar包,把他放在tomcat的lib文件下.

springcloud(一):大话Spring Cloud

研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效.分布式.容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用. Spring Cloud是什么鬼? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基

Spring Cloud在国内中小型公司能用起来吗?

今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题 Spring Cloud在国内中小型公司能用起来吗?,吸引了我的注意.仔细的看了题主的问题,发现这是一个好问题,题主经过了一番思考,并且用图形全面的将自己的疑问表达了出来,作为一个研究并使用 Spring Boot 和 Spring Cloud 近两年的程序员,看的我手痒痒不答不快呀. 好问题 好问题必须配认真的回答,仔细的看了题主的问题,发现这个问题非常具有代表性,可能是广大网友想使用 Spring Cloud 却又对 Spring Clou

[转]Spring Cloud在国内中小型公司能用起来吗?

原文地址:http://www.cnblogs.com/ityouknow/p/7508306.html 今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题Spring Cloud在国内中小型公司能用起来吗?,吸引了我的注意.仔细的看了题主的问题,发现这是一个好问题,题主经过了一番思考,并且用图形全面的将自己的疑问表达了出来,作为一个研究并使用Spring Boot和Spring Cloud近两年的程序员,看的我手痒痒不答不快呀. 好问题 好问题必须配认真的回答,仔细的看了题主的问题,发现这个问

Spring Cloud Consul 实现服务注册和发现

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式.通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂.易部署和易维护的分布式系统开发工具包. Spring Cloud 包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Sprin