随笔分类 - Spring.NET

Spring.NET
摘要: 热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力。由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI。它有完整的demo和强大AIP手册,使我在开发过程中得心应手。以下是这篇博文Demo程序的演示效果:阅读全文
posted @ 2011-08-19 01:53 刘冬.NET 阅读(76117) | 评论 (177) 编辑
摘要: Spring.NET对分布式程序的支持是有目共睹的。在1.3.1之前的版本,对Remoting和Webservice支持的很好,并且有其对应的解析器,但对WCF支持的不是很完美。然而1.3.1版本加入了WCF的命名空间解析器功能。我们导入xmlns:wcf="http://www.springframework.net/wcf“ 命名空间后,便可以使用解析器提供的配置了。  一、新建一个WCF契约程序集:WcfContract。  建立接口ISpringContract  [代码]  二、建立WCF的服务器端项目WcfServer。  新建SpringService.svc文件,其Spring阅读全文
posted @ 2010-12-22 18:10 刘冬.NET 阅读(6566) | 评论 (18) 编辑
摘要: Spring.NET 1.3.1的程序集Spring.Web.Mvc提供对ASP.NET MVC程序的整合。其中SpringControllerFactory类继承自DefaultControllerFactory,以便于实现Spring.NET对Controller的管理  SpringControllerFactory Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclassSpringControllerFactory:Defa阅读全文
posted @ 2010-12-22 12:14 刘冬.NET 阅读(11046) | 评论 (21) 编辑
摘要: Spring.NET 1.3.1 下载地址为http://www.springframework.net/download.html  正如已经提到的其他地方,这将是Spring.NET的最终版本提供支持的。NET1.x中Spring.NET的未来版本将只针对。NET 2.0和更高版本,让Spring.NET更积极地利用近期功能的更多信息在。NET平台的优势。动之以多种方式前进,我们也将尝试以实现2011年及以后一个更加积极的发布时间表。这方面的一个目标努力的一部分,是一个Spring.NET季度发布周期。我们的目标是提供稳步增长的价值和能力,以Spring.NET采用移动版本之间没有显着的区阅读全文
posted @ 2010-12-22 10:49 刘冬.NET 阅读(8950) | 评论 (7) 编辑
摘要: 最近由于工作忙的原因,博客更新的比较慢,在此给园子里的朋友说声抱歉。于是,我利用周末的时间写了一份Spring.NET架构的综合应用,希望这样的实用型架构能受到大家的欢迎。 一、概括 此Demo使用的开发工具是:VS2010,数据库任意,Silvelright版本是4.0。 Demo分为三层(Tie阅读全文
posted @ 2010-10-16 14:03 刘冬.NET 阅读(24707) | 评论 (61) 编辑
摘要: 之前实现的NHibernate分布式事务,在WCF环境下遇到的一个难点,是NHibernate的Session管理。然而在我查看log4net生成的调试日志时候惊奇的发现,原来NHibernate的Session不一定需要SessionScope来管理。在遇到事务的时候能自动创建一个Session,在事务关闭的时候能自动关闭Session。SessionScope仅仅是把自动创建的Session合...阅读全文
posted @ 2010-08-12 13:45 刘冬.NET 阅读(7521) | 评论 (10) 编辑
摘要: 上篇,我们已实现了在同一应用程序下的分布式事务——即多Dao层+同Service层,每个Dao对应一个数据库,一个Service调用多个Dao。但是在一些特定的子系统较多的项目中,开发人员是无法访问到某个子系统的数据库,这就意味着不能通过增加Dao层来实现分布式事务。正如一个银行的软件系统,记录了客户的账户信息和存款金额,北京的分公司和上海的分公司分别有自己的数据库和软件系...阅读全文
posted @ 2010-07-30 14:44 刘冬.NET 阅读(6592) | 评论 (8) 编辑
摘要: 在使用NHibernate作为持久层框架时,多数据库操作是一个比较难解决的问题。并且很多网友在给我发的eamil中经常谈到此问题。由于NHibernate是一种框架,不能像ADO.NET那样直接用SQL语句操作数据库,在动态改变DbConnection时比较麻烦,而且NHibernate目前并不完全支持多数据库,所以实现多数据库的操作是个棘手的问题。  回想一下,在使用ADO.NET实现多数据库的...阅读全文
posted @ 2010-07-29 03:09 刘冬.NET 阅读(9888) | 评论 (18) 编辑
摘要: 什么是持久层?先解释什么是持久,英文persistence,将内存中的数据固化,保持在物理储存设备中。然而在企业应用中,往往通过关系型数据库来完成这一过程。那么持久层的定义是:相对于三层架构中的表示层、业务层而言,专门负责持久化数据的独立领域。设计模式中的“单一职责”原则确定了分层的目的,说白了,持久层就是专门与数据库打交道的。如图1所示图1  在PetShop4.0中的D...阅读全文
posted @ 2010-06-19 22:08 刘冬.NET 阅读(9489) | 评论 (16) 编辑
摘要: 什么是领域模型?领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。  当我们不再对一个新系统进行数据库提炼时,取而代之的时面向对象的模型提炼。我们必须大刀阔斧地对业务领域进行细分,将一个复杂的业务领域划分为多个小的子领域,同时还必须分清重点和次要部分,抓住核心领域概念,实...阅读全文
posted @ 2010-06-18 01:41 刘冬.NET 阅读(8928) | 评论 (12) 编辑
摘要: PetShop4.0是微软针对.NET企业系统推出的一个范例。业界有许多.NET与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,而且有很多可以借鉴之处。PetShop是一个...阅读全文
posted @ 2010-06-17 12:42 刘冬.NET 阅读(17726) | 评论 (49) 编辑
摘要: 针对大型系统,往往采用Oracle数据库。这是因为在大数据量的情况下Oracle的优势比较明显,而且能够部署到非Windows环境下,从而弥补.NET程序跨平台的缺点。但是使用NHibernate访问Oracle和访问SQL Server相比来说要略微复杂。  在使用NHibernate访问Oracle的过程中,我们需要以下几个步骤:  1.下载并安装Oracle客户端http://www.ora...阅读全文
posted @ 2010-05-25 21:21 刘冬.NET 阅读(11399) | 评论 (16) 编辑
摘要: 什么是二级缓存?  NHibernate的Session提供了一级缓存。每个Session,对同一个id进行两次Load,不会发送两条SQL语句给数据库,但是Session一但关闭,一级缓存也就失效了。   与Session相对的是,SessionFactory也提供了相应的缓存机制。  SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存。  SessionFact...阅读全文
posted @ 2010-05-19 03:46 刘冬.NET 阅读(5230) | 评论 (10) 编辑
摘要: Spring.NET对WCF(Windows Communication Foundation)有很好的支持,Spring.Services程序集下封装了创建和调用WCF的方法。以往,我们使用svc文件来承载WCF;使用自动生产的代理来调用服务。这样便对产生了诸多依赖。而使用Spring.NET则会令应用程序得到良好的改善。  让我们从实例中学习今天的内容:    首先创建服务契约和其实现Cont...阅读全文
posted @ 2010-05-15 22:59 刘冬.NET 阅读(12777) | 评论 (12) 编辑
摘要: Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。 企业级应用一般由多个物理层组成,每个物理层也经常划分为若干功能层。不同层次之间需要相互协作,例如,业务服务层一般需要使用数据访问层的对象来实现某个用例。不管应用程序如何构建,最终都会表现为一系列相互协作的对象,这些对象一起组成了完整的应用程序。所以我们说,应用程序中的对象之间相互具有.阅读全文
posted @ 2009-11-21 00:23 刘冬.NET 阅读(43370) | 评论 (25) 编辑
摘要: NVelocity是一个基于.NET的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象。当NVelocity应用于web开发时,界面设计人员可以和.NET程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由.NET程序开发人员关注业务逻辑编码。NVe...阅读全文
posted @ 2009-11-20 15:41 刘冬.NET 阅读(8790) | 评论 (14) 编辑
摘要: 目录 前言 Spring.NET学习笔记——前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1——控制反转(基础篇) Level 200 Spring.NET学习笔记2——环境搭建(基础篇) Level 200 Spring.NET学习笔记3——实现一个简易的IoC框架(阅读全文
posted @ 2009-11-20 12:36 刘冬.NET 阅读(85397) | 评论 (50) 编辑
摘要: Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于WinForm和ASP.NET应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上1...阅读全文
posted @ 2009-11-20 03:19 刘冬.NET 阅读(10852) | 评论 (13) 编辑
摘要: 虽然目前.NET对WebService支持的非常好,Spring.NET认为还是有几个方面可以改进:  第一、.NET在.asmx文件中保存WebService请求和服务对象的关联关系,这些.asmx文件不管有用没用都得放在那儿。  第二、Spring.NET希望能通过IoC容器对WebService进行依赖注入。一般说来WebService总会依赖其它服务对象,所以,如果能用配置方式来选择服务对...阅读全文
posted @ 2009-11-19 20:06 刘冬.NET 阅读(9124) | 评论 (19) 编辑
摘要: Spring.Services命名空间的目的是为业务服务提供位置的透明性。我们相信使用普通的接口和.NET类,用户应该可以用最简单的方式实现服务。我们也认为在将某个服务发布给客户端的时,应该只关心服务的配置,而无需关心服务的实现。在Spring.Services命名空间的支持下,可以用IoC容器中的服务导出对象将任一个普通对象发布为web服务、企业服务组件或远程对象。这里说的“普通对象...阅读全文
posted @ 2009-11-19 14:30 刘冬.NET 阅读(7575) | 评论 (13) 编辑
摘要: ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架。MVC(Model-View-Controller)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。  今天带给大家的就是期待以久的ASP.NET MVC与Spring.NET和NHibernate的组合,视...阅读全文
posted @ 2009-11-19 05:09 刘冬.NET 阅读(16105) | 评论 (45) 编辑
摘要: NHibernate是一个基于.Net的针对关系型数据库的对象持久化(ORM)类库。NHibernate来源于非常优秀的基于Java的NHibernate关系型持久化工具。从数据库底NHibernate来持久化你的.Net 对象到关系型数据库。NHibernate为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernate自动产生SQL语句,并确保对象提交到...阅读全文
posted @ 2009-11-18 04:36 刘冬.NET 阅读(25383) | 评论 (46) 编辑
摘要: 上篇我们学习了Spring.NET的事务机制。回顾一下,实现事务需要在方法上标记[Transaction]。在很多情况下,事务往往与业务分离。Spring.NET提供了事务代理帮我们管理这些事务,我们可以通过TransactionProxyFactoryObject使用声明式事务。在很多情况下TransactionProxyFactoryObject比ProxyFactoryObject易用,因为...阅读全文
posted @ 2009-11-17 02:25 刘冬.NET 阅读(11041) | 评论 (17) 编辑
摘要: 目前有很多种数据访问技术。在.NET FCL中,有三类API可以执行事务管理,分别是ADO.NET、企业服务和System.Transactions。其它的数据访问技术,如对象关系映射(object relational mappers)和结果集映射(result-set mapping)等等的应用也很广泛,每种技术也都有自己的事务管理API。事务管理的代码一般是直接和各种事务API绑定在一起的,...阅读全文
posted @ 2009-11-16 20:59 刘冬.NET 阅读(19898) | 评论 (36) 编辑
摘要: 上篇我学习了Spring.NET的四种通知类型,AOP的实现方案比较复杂,是通过代码实现的。而Spring.NET框架给我们提供了配置的方式来实现AOP的功能。到目前为止,我们已经讨论过使用ProxyFactoryObject或其它类似的工厂对象显式创建AOP代理的方法。如果应用程序需要创建很多AOP代理,比如当需要代理某个服务层的所有对象时,这种方法就会使配置文件变的相当庞大。为简化配置过程,S...阅读全文
posted @ 2009-11-16 02:26 刘冬.NET 阅读(18774) | 评论 (37) 编辑
摘要: 上篇我们学习了AOP的基本概念,我们回顾一下上篇提到的Advice(通知):所谓通知是指拦截到joinpoint(连接点)之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,环绕通知。  Spring.NET的通知既可由某个类的所有对象共享,也可由该类型的单个实例独占。共享的通知称为基于类型(per-class)的通知,而独占的通知称为基于实例(per-instance)的通知。基于类...阅读全文
posted @ 2009-11-13 03:50 刘冬.NET 阅读(15347) | 评论 (22) 编辑
摘要: 上篇我们简单的了解了AOP的应用场景,知道AOP编程的重要性。这篇我们先看一段代码,来开始今天的学习。  回顾与上篇类似的代码:SecurityService类的IsPass判断用户名为“admin”则有权限保存数据。OrderService为保存数据的类,实现IOrderService接口。[代码]  实现部分[代码][代码]  客户端部分:[代码]  输出:  保存:1...阅读全文
posted @ 2009-11-13 02:32 刘冬.NET 阅读(16026) | 评论 (15) 编辑
摘要: AOP即面向切面编程(Aspect Oriented Programming的缩写),是OOP(面向对象编程)的一种延续形式。是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,它从一个不同于OOP的角度来看待程序的结构:OOP将应用程序分解为一系列表现为继承关系的对象;AOP 则把程序分解为一系列方面(aspects)或者关注点(concerns)。AOP...阅读全文
posted @ 2009-11-12 04:23 刘冬.NET 阅读(20532) | 评论 (26) 编辑
摘要: Spring.NET通过几个专门的接口来控制容器中对象的行为。说到对象的行为无非就要提到对象的生命周期控制。类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispose方法为Form的销毁方法。Spring.NET都能完美的实现这些需求。       一、生命周期接口  在使用Spring.NET框架的时候通常遇到怎样初始化和销毁非托管资源(如数据库连接)的麻烦,...阅读全文
posted @ 2009-11-11 04:20 刘冬.NET 阅读(11962) | 评论 (20) 编辑
摘要: 多数用户都会将容器中的大部分对象布署为singleton模式。当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协作时,Spring.NET都能很好的处理它们的依赖关系。但是,如果对象的生存周期不同,就可能会产生问题。例如,假设一个singleton对象A要使用一个非singleton(原型)对象B,A中的每个方...阅读全文
posted @ 2009-11-11 01:52 刘冬.NET 阅读(15259) | 评论 (12) 编辑
摘要: 今晚看了几篇项目应用的博客感受很深,晚上怎么都睡不着觉。于是乎,下面的博客诞生了 ^-^。 我在想是不是要把我熟悉的Spring.NET框架与别的框架或技术结合起来。由于心血来潮,斗胆在园子里这么多大牛的面前班门弄斧了。长话短说,下面是我项目中用到的技术(图1):1.JQuery的FlexiGrid阅读全文
posted @ 2009-11-10 07:28 刘冬.NET 阅读(29316) | 评论 (53) 编辑
摘要: 我们在第三篇中学习里一个简易的IoC框架。今天我们接着上次的程序,实现带参数构造函数对象的实例和属性的注入 。  我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法);可以获取属性和属性的类型(GetProperties方法)。通过Activator的CreateInstance(Type type, params object[] args)方法可以创建带参数构造函数...阅读全文
posted @ 2009-11-02 11:37 刘冬.NET 阅读(14700) | 评论 (14) 编辑
摘要: Spring.NET还支持集合类型的注入。而且使用起来也比较方便。  一、ILIst类型  使用<list>元素作为ILIst的标签,value为集合中元素的值。也可以注入对象,甚至关联其它对象,使用 <ref/>元素表示关联的对象,object 属性为所关联对象的id或name。集合可以为空,用<null/>元素来标记。  在<list>元素中设置...阅读全文
posted @ 2009-11-02 00:31 刘冬.NET 阅读(15195) | 评论 (19) 编辑
摘要: 一、属性注入  上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<propertyname="Tool"ref="computer"/>。而property标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下:<objectid="modernPerson"type="SpringNetIoC.Mode...阅读全文
posted @ 2009-11-01 00:52 刘冬.NET 阅读(18597) | 评论 (27) 编辑
摘要: 谈到高级语言编程,我们就会联想到设计模式;谈到设计模式,我们就会说道怎么样解耦合。而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny Injection)简称DI,目前DI是最优秀的解耦方式之一。下面我就来谈谈依赖注入的应用场景。  我模拟了三种不同的场景,可以一起学习使用依赖注入的重要性。  下面是应用场景的条件:人类使用工具劳动。[代码...阅读全文
posted @ 2009-10-26 23:23 刘冬.NET 阅读(22192) | 评论 (40) 编辑
摘要: 容器中对象的部署分为两种方式:singleton和非singleton(java里叫prototype)。这里的singleton指的是“单例模式”,就是说当一个对象被定义为singleton时,容器中就只会有一个共享的实例,任何时候通过id或别名请求该对象都会返回这个共享实例的引用(也就是说这个对象只会被创建一次)。当使用非singleton,或者说原型模式布署时,每次请...阅读全文
posted @ 2009-10-26 00:29 刘冬.NET 阅读(19814) | 评论 (14) 编辑
摘要: 学过了前面的课程,我们来一起学习Spring.NET的IoC容器对象的创建。  创建对象一般有3种方式:1.构造器创建,2.静态工厂创建,3.实例工厂创建  多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,容器也可以调用工厂方法来创建对象,这时type属性的值就应该是包含工厂方法的类型(按:而不是要创建的类型,但通过该对象定义的名称获取的则是由工厂方法所创建的...阅读全文
posted @ 2009-10-25 19:48 刘冬.NET 阅读(25895) | 评论 (32) 编辑
摘要: 讲了这么多理论,我们来手动实现一个简易的IoC框架的,这样可以加深IoC的理论知识。  一、思路在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象。通过这一点就可以告诉我们制作IoC容器需要写一个获取XML文件内容的方法和申明一个Dictionary<string, o...阅读全文
posted @ 2009-10-25 12:17 刘冬.NET 阅读(29218) | 评论 (32) 编辑
摘要: 我们先来一起学习一下怎样使用Spring.NET。  一、环境下载及安装  到Spring的官方网站下载Spring.NET框架的安装文件(Spring.NET-1.3.0-RC1.exe)。目前Spring.NET最新的版本是1.3。下载并解压后就可以了。我们使用Spring.NET框架经常用到的一下几个文件:Common.Logging.dll(必要)Spring.Core.dll(必要)Sp...阅读全文
posted @ 2009-10-25 02:17 刘冬.NET 阅读(38027) | 评论 (40) 编辑
摘要: 在学习Spring.NET这个控制反转(IoC)和面向切面(AOP)的容器框架之前,我们先来看一下什么是控制反转(IoC)。  控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从...阅读全文
posted @ 2009-10-25 00:20 刘冬.NET 阅读(50742) | 评论 (64) 编辑