03 2011 档案

摘要:SqlCacheDependencyweb页面代码片段:web页面代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->String connectionString = "Data Source=localhost;Initial Catalog=BalloonShop;Integrated Security=True";DataTable dt = (DataTable)HttpContext.Current.Cache 阅读全文
posted @ 2011-03-27 00:08 似水流年-johnhuo 阅读(339) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/hliq5399/category/297103.aspx 阅读全文
posted @ 2011-03-26 23:22 似水流年-johnhuo 阅读(137) 评论(0) 推荐(0) 编辑
摘要:前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又很多可以借鉴之处。PetShop是一个小型的项目,系统架构与代码都比较简单,却也凸现了许多颇有价值的设计与开发理念。本系列试图对PetShop作一个全方位的解剖,依据的代码是PetShop4.0,可以从链接http://msdn 阅读全文
posted @ 2011-03-26 22:49 似水流年-johnhuo 阅读(902) 评论(0) 推荐(0) 编辑
摘要:1.框架的概要介绍微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。日前微软推出了基于.NET Framework 2.0开 阅读全文
posted @ 2011-03-26 22:41 似水流年-johnhuo 阅读(293) 评论(0) 推荐(0) 编辑
摘要:PetShop数据库解读PetShop数据访问层之数据库访问设计PetShop的工厂模式PetShop之业务逻辑层设计PetShop数据库解读PetShop 4.0使用了四个数据库,分别为:MSPetShop4 、MSPetShop4Orders 、MSPetShop4Profile 、MSPetShop4Services 一、MSPetShop4其中MSPetShop4用来管理产品、分类等基本数据信息,其中共有六个表 AspNet_SqlCacheTablesForChangeNotification Category Inventory Item Product Supplier Cate 阅读全文
posted @ 2011-03-26 22:13 似水流年-johnhuo 阅读(263) 评论(0) 推荐(0) 编辑
摘要:从这篇文章开始我会引入一些领域上的知识或者给出一些参考文章来供大家阅读,我们对这些领域上的知识没有必要深挖,只要大概了解一下就可以了,这对于我们分析BlogEngine.Net会有很大的帮助。在这篇文章中我主要向大家介绍一下BlogEngine.Net的搜索部分的实现以及支持的相应标准等。先用自己的话解释一下什么是开放搜索 开放搜索应该也是一种标准了,现在它越来越流行起来,记得我第一次见到这个东东是在codeproject中。大家一定注意到了IE7右上角的那个小工具栏了,附件: OpenSearch.jpg 我们可以在那里选择一个搜索提供程序例如:Google,当我们输入信息回车以后就会发现页 阅读全文
posted @ 2011-03-26 21:52 似水流年-johnhuo 阅读(178) 评论(0) 推荐(0) 编辑
摘要:在这篇文章中我们将对BlogEngine.Net的全局配置进行一下分析与探讨。关于配置这一部分单独拿出来做一篇文章实在有些牵强,但是我总觉得这个配置部分比较独立,而且BlogEngine.Net的设计和实现都有很多可以参考的地方。在一个企业级应用系统中,对一些系统全局参数进行配置是必不可少的,那么我们是怎么处理这些配置的呢? 一般都有以下三步:1.在业务模块开发的过程中将一些可变的参量提取出来。2.当所有业务模块开发完成时,将这些参量分类存储起来。3.开发出相应的管理功能,允许用户对这些参量进行设置。 相信大多数开发者都是直接操作数据库中的数据,可能有些比较完善的系统会做出单独的页面来给用户管 阅读全文
posted @ 2011-03-26 21:50 似水流年-johnhuo 阅读(151) 评论(0) 推荐(0) 编辑
摘要:在上一篇文章中,我们主要分析了一下BlogEngine.Net的整体设计,在后半部分我们又对BusinessBase业务对象的状态维护做了一些比较深入的探讨。在这篇文章中我将引领大家完成对BlogEngine.Net中业务对象数据存储的设计思路与实现细节的分析。BlogEngine.Net中的数据存储主要是应用Provider模式实现的,那么首先让我们认识一下Provider模式。 Provider模式应该是一种设计模式,是用来解决软件变化问题的。不过它关注的角度(或者维度)是功能声明跟功能实现的分离。一般来说,系统对某一功能的需求可能是相对稳定的(比如每个系统都要求对登录用户进行验证,这个需 阅读全文
posted @ 2011-03-26 21:49 似水流年-johnhuo 阅读(154) 评论(0) 推荐(0) 编辑
摘要:上篇文章朋友的评论给了我很大的动力写这个系列的文章,看来大家都比较关注这个系列。为了后续文章做一个铺垫,我在这篇文章的前半部分讲解一下BlogEngine.Net的整体架构,后半部分主要是对于BusinessBase类的分析。下载源代码以后打开解决方案,我们发现从项目的组织结构上BlogEngine.Net分成两个项目:一个是BlogEngine.Core,顾名思意,它就是BlogEngine.Net的核心逻辑层。所有的业务逻辑和一些功能都在这个项目中体现,实际上这个核心业务层中也有数据访问的一部分,那就是Provider模式。在BlogEngine.Net中,关系数据库或XML等的作用只有一 阅读全文
posted @ 2011-03-26 21:47 似水流年-johnhuo 阅读(165) 评论(0) 推荐(0) 编辑
摘要:近我要开始这个系列了,这是我的第一个系列。关于BlogEngine.Net我想说的是,它设计的真的很棒,代码简洁但是功能很多,真是麻雀虽小,五脏俱全啊,而且具有了很多Web2.0的特征,甚至它的每一行代码都值得我们去研究一下,它的开发团队很棒。实际上很多国外的个人Blog都是采用BlogEngine.Net加上自定义皮肤实现的,如果您是一个Blog的开发者,这更是您的必备参考! 很多兄弟都推荐BlogEngine.Net看一看,甚至www.asp.net也把它放在了很重要的位置。前一阶段我仔细的把它的源代码阅读了一遍,看完以后兴奋的很冲动,心想居然还有这么好的玩意,这个开源项目设计的真的不错。 阅读全文
posted @ 2011-03-26 21:45 似水流年-johnhuo 阅读(172) 评论(0) 推荐(0) 编辑
摘要:在这篇文章中,将讨论一下表示层的实现方法。 表示层是一个系统的“门脸”,不论你的系统设计的多么优秀,代码多么漂亮,系统的可扩展性多么高,但是最终用户接触到的大多是表示层的东西。所以,表示层的优劣对于用户最终对系统的评价至关重要。一般来说,表示层的优劣有一下两个评价指标: 1.美观。即外观设计漂亮,能给人美的感觉。 2.易用。即具有良好的用户体验,用户用起来舒服、顺手。 表示层的设计牵扯到很多非技术性问题,如美工、用户心理学等问题,但是在这篇文章中,将不过多涉及这些问题,一来是我的水平有限,二来是这些内容和本系列文章的关系不是很密切。这里将主要从技术实现的角度讨论表示层的设计。 一般来说,表示层 阅读全文
posted @ 2011-03-26 21:41 似水流年-johnhuo 阅读(150) 评论(0) 推荐(0) 编辑
摘要:在这一篇文章中,将实现一个NGuestBook的业务逻辑层。 在实际应用中,业务逻辑层是至关重要的,他承载着整个系统最核心的部分,也是客户最关注的部分。这一部分的实现,通常需要技术专家和领域专家通力合作。当然,在本文章系列的Demo中,由于业务逻辑的简单性,这里看的可能还不是很明显。 在本篇文章的业务逻辑层实现中,业务逻辑层主要承担了以下职责: 1.对不同数据访问层的封装。使得表示层可以不关心具体的数据访问层。 2.业务逻辑数据的填充与转换。如管理员口令的加密。 3.核心业务的实现。这里很多业务逻辑只有一行代码,即一个业务逻辑方法恰好对应一个数据访问方法,但是也有通过多个数据访问方法实现业务的 阅读全文
posted @ 2011-03-26 21:40 似水流年-johnhuo 阅读(191) 评论(0) 推荐(0) 编辑
摘要:前面的文章讨论了使用SQL语句和存储过程两种数据访问层的实现方式,这一篇里,将讨论使用ORM方式实现数据访问层的方法。 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存 阅读全文
posted @ 2011-03-26 21:39 似水流年-johnhuo 阅读(219) 评论(0) 推荐(0) 编辑
摘要:在上一篇(基于.NET平台的分层架构实战(七-外一篇)——对数据访问层第一种实现(Access+SQL)的重构)中,讨论了使用SQL构建数据访问层的方法,并且针对的是Access数据库。而这一篇中,将要创建一个针对SQLServer数据库的数据访问层,并且配合存储过程实现。 曾经有朋友问我使用SQL和存储过程在效率上的差别,惭愧的是我对这方面没有研究,也没有实际做过测试。通过查阅资料,发现在一般情况下,存储过程的效率由于使用SQL,但是也不绝对,也发现有的朋友测试时发现在特定情况下SQL的效率优于存储过程,所以这个问题不能一概而论。 好,废话不多说,这里先列出使用存储过程构建数据访问层的一般步 阅读全文
posted @ 2011-03-26 21:34 似水流年-johnhuo 阅读(197) 评论(0) 推荐(0) 编辑
摘要:昨天的文章 基于.NET平台的分层架构实战(七)——数据访问层的第一种实现:Access+SQL 发布后,很多朋友对我的程序提出了意见和建议,在这里先谢谢你们!!!尤其是 金色海洋(jyk),对我的程序提出了很多建设性的意见。 我大体总结了一下,昨天程序的主要缺点有: 1.Connection对象没有关闭 2.DataReader对象没有关闭 3.相似代码太多,造成代码冗余。 其中第一点问题,目前还没有太好的解决方案,主要是因为Connection一旦关闭,DataReader就无法读取了。而且,Connection对象应该会自动在适当的时候关闭(通过观察临时文件得出),并且在实际运行时并无影 阅读全文
posted @ 2011-03-26 21:31 似水流年-johnhuo 阅读(161) 评论(0) 推荐(0) 编辑
摘要:经过上面篇文章的介绍,整个系统的框架算是基本搭建完了,下面,我们要具体实现各个层次。关于数据访问层的实现,我准备讨论三种实现方式,这一篇文章讨论第一种:Access+动态生成SQL。 顾名思义,这种实现将使用Access作为后台数据库,而操作方式也是最基本的使用SQL命令。 在具体编写实现代码之前,我们需要做一些准备工作: 第一步,我们要将Access数据库搭建完成,具体做法如下。 在Web工程下新建一个文件夹,命名为AccessData,并在其中新建一个mdb文件(即Access数据库文件),按照前面介绍过的数据库设计构架,将数据表及表间关系建好,这里不再赘述。 第二步,我们要进行一些配置。 阅读全文
posted @ 2011-03-26 21:23 似水流年-johnhuo 阅读(197) 评论(0) 推荐(0) 编辑
摘要:我们设计的分层架构,层与层之间应该是松散耦合的。因为是单向单一调用,所以,这里的“松散耦合”实际是指上层类不能具体依赖于下层类,而应该依赖于下层提供的一个接口。这样,上层类不能直接实例化下层中的类,而只持有接口,至于接口所指变量最终究竟是哪一个类,则由依赖注入机制决定。 之所以这样做,是为了实现层与层之间的“可替换”式设计,例如,现在需要换一种方式实现数据访问层,只要这个实现遵循了前面定义的数据访问层接口,业务逻辑层和表示层不需要做任何改动,只需要改一下配置文件系统即可正常运行。另外,基于这种结构的系统,还可以实现并行开发。即不同开发人员可以专注于自己的层次,只有接口被定义好了,开发出来的东西 阅读全文
posted @ 2011-03-26 21:16 似水流年-johnhuo 阅读(194) 评论(0) 推荐(0) 编辑
摘要:接下来,将进行接口的设计。这里包括数据访问层接口和业务逻辑层接口。在分层架构中,接口扮演着非常重要的角色,它不但直接决定了各层中的各个操作类需要实现何种操作,而且它明确了各个层次的职责。接口也是系统实现依赖注入机制不可缺少的部分。 本项目的接口设计将按如下顺序进行: 1.首先由前文的需求分析,列出主要的UI部分。 2.分析各个UI需要什么业务逻辑支持,从而确定业务逻辑层接口。 3.分析业务逻辑层接口需要何种数据访问操作,从而确定数据访问层接口。 另外,为保证完全的面向对象特性,接口之间的数据传递主要靠实体类或实体类集合,禁止使用DataTable等对象传递数据。 由需求分析,列出主要UI 需求 阅读全文
posted @ 2011-03-26 21:15 似水流年-johnhuo 阅读(192) 评论(0) 推荐(0) 编辑
摘要:实体类是现实实体在计算机中的表示。它贯穿于整个架构,负担着在各层次及模块间传递数据的职责。一般来说,实体类可以分为“贫血实体类”和“充血实体类”,前者仅仅保存实体的属性,而后者还包含一些实体间的关系与逻辑。我们在这个Demo中用的实体类将是“贫血实体类”。 大多情况下,实体类和数据库中的表(这里指实体表,不包括表示多对多对应的关系表)是一一对应的,但这并不是一个限制,在复杂的数据库设计中,有可能出现一个实体类对应多个表,或者交叉对应的情况。在本文的Demo中,实体类和表是一一对应的,并且实体类中的属性和表中的字段也是对应的。 在看实体类的代码前,先看一下系统的工程结构。附件: f3.jpg 如 阅读全文
posted @ 2011-03-26 21:11 似水流年-johnhuo 阅读(252) 评论(0) 推荐(0) 编辑
摘要:本文主要是对将要实现的架构进行一个总体的描述,使朋友们对这个架构有个宏观上的认识。这篇文章理论性的东西会偏多一点,从下篇开始,将进行实际项目的开发。这篇文章的许多内容摘自我的毕业论文。架构基本原则: 这里,将描述一些在这个架构设计中的基本原则,其中很多都是经典的设计原则,不过针对分层架构的特点,用我自己的语言进行了描述。其中也有我自己提出的原则。 逐层调用原则及单向调用原则 现在约定将N层架构的各层依次编号为1、2、…、K、…、N-1、N,其中层的编号越大,则越处在上层。那么,我们设计的架构应该满足以下两个原则: 1.第K(1<K<=N)层只准依赖第K-1层,而不可依赖其他底层。 阅读全文
posted @ 2011-03-26 21:09 似水流年-johnhuo 阅读(265) 评论(0) 推荐(0) 编辑
摘要:在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影响项目的开发过程和质量。实际中,这个环节不但需要系统分析师、软件工程师等计算机方面的专家,还需要相关领域的领域专家参与才能完成。 但是,在这个文章系列中,所要使用的Demo仅仅是一个例子,而且其业务极为简单,因此,这里并不是真正的需求分析和数据库设计,而是将Demo的需求和数据库罗列至此,使朋友们对Demo有一个大体的了解,方便后续文章中开发过程的理解。需求分析: 这个项目是一个留言本,其业务极为简单,现将其描述如下。 1.任何访问者可以进行留言,留言完成后,不会立即显示正文,而是要经过管理员验证后才可显示。 2.任何访 阅读全文
posted @ 2011-03-26 21:08 似水流年-johnhuo 阅读(169) 评论(0) 推荐(0) 编辑
摘要:通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫“基于.NET平台的分层架构与设计模式应用研究”)。通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,详述一下分层架构。然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论分层架构的基本方法,这样会直观很多。希望在这个文章系列的写作过程中,能和朋友们一起学习,一起进步。 为了让朋友们把主要精力放在理解分层架构而不是案例本身,我准备选择一个相对简单的留言本系统作为Demo 阅读全文
posted @ 2011-03-26 21:06 似水流年-johnhuo 阅读(170) 评论(0) 推荐(0) 编辑
摘要:上篇我们简单的了解了AOP的应用场景,知道AOP编程的重要性。这篇我们先看一段代码,来开始今天的学习。 回顾与上篇类似的代码:SecurityService类的IsPass判断用户名为“admin”则有权限保存数据。OrderService为保存数据的类,实现IOrderService接口。 public class SecurityService { public bool IsPass(string userName) { return userName == "admin"; } } public interface IOrderService { string Us 阅读全文
posted @ 2011-03-26 21:03 似水流年-johnhuo 阅读(162) 评论(0) 推荐(0) 编辑
摘要:AOP即面向切面编程(Aspect Oriented Programming的缩写),是OOP(面向对象编程)的一种延续形式。是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,它从一个不同于OOP的角度来看待程序的结构:OOP将应用程序分解为一系列表现为继承关系的对象;AOP 则把程序分解为一系列方面(aspects)或者关注点(concerns)。AOP将诸如事务管理等本来横向分布在多个对象中的关注点进行了模块化处理(这些关注点也常称为横切(crosscutting)关注点)。在Spring.NET中提供了面向切面编程的丰富支持,允许通过分离应用的业 阅读全文
posted @ 2011-03-26 21:00 似水流年-johnhuo 阅读(217) 评论(0) 推荐(0) 编辑
摘要:Spring.NET通过几个专门的接口来控制容器中对象的行为。说到对象的行为无非就要提到对象的生命周期控制。类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispose方法为Form的销毁方法。Spring.NET都能完美的实现这些需求。 一、生命周期接口 在使用Spring.NET框架的时候通常遇到怎样初始化和销毁非托管资源(如数据库连接)的麻烦,下面的解决方案可能对您有所帮助。 1.初始化行为 继承Spring.Objects.Factory.IInitializingObject接口或者配置object节点的init-method属性,Spring.NE 阅读全文
posted @ 2011-03-26 20:59 似水流年-johnhuo 阅读(205) 评论(0) 推荐(0) 编辑
摘要:多数用户都会将容器中的大部分对象布署为singleton模式。当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协作时,Spring.NET都能很好的处理它们的依赖关系。但是,如果对象的生存周期不同,就可能会产生问题。例如,假设一个singleton对象A要使用一个非singleton(原型)对象B,A中的每个方法都会用到B的新实例。由于A是singleton对象,容器只有会创建它一次,也就是说只有一次给A的属性赋值的机会,所以不可能在每次A需要的时候都给它注入一个新的B。有一种解决的办法有点违背控制反转原则 阅读全文
posted @ 2011-03-26 20:57 似水流年-johnhuo 阅读(166) 评论(0) 推荐(0) 编辑
摘要:我们在第三篇中学习里一个简易的IoC框架。今天我们接着上次的程序,实现带参数构造函数对象的实例和属性的注入 。 我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法);可以获取属性和属性的类型(GetProperties方法)。通过Activator的CreateInstance(Type type, params object[] args)方法可以创建带参数构造函数的实例。通过SetValue方法可以给属性赋值,这样一来,我们就上次的代码稍加改造就可以实现属性的注入了。 下面是完成的代码:Domain public class Person { public st 阅读全文
posted @ 2011-03-26 20:55 似水流年-johnhuo 阅读(186) 评论(0) 推荐(0) 编辑
摘要:一、属性注入 上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="SpringNetIoC.ModernPerson, SpringNetIoC"> <property name="Too 阅读全文
posted @ 2011-03-26 20:53 似水流年-johnhuo 阅读(162) 评论(0) 推荐(0) 编辑
摘要:谈到高级语言编程,我们就会联想到设计模式;谈到设计模式,我们就会说道怎么样解耦合。而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny Injection)简称DI,目前DI是最优秀的解耦方式之一。下面我就来谈谈依赖注入的应用场景。 我模拟了三种不同的场景,可以一起学习使用依赖注入的重要性。 下面是应用场景的条件:人类使用工具劳动。 /**//// <summary> /// 抽象人类 /// </summary> public abstract class Person { /**//// <summary 阅读全文
posted @ 2011-03-26 20:51 似水流年-johnhuo 阅读(231) 评论(0) 推荐(0) 编辑
摘要:一、属性注入 上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="SpringNetIoC.ModernPerson, SpringNetIoC"> <property name="Too 阅读全文
posted @ 2011-03-26 20:49 似水流年-johnhuo 阅读(196) 评论(0) 推荐(0) 编辑
摘要:学过了前面的课程,我们来一起学习Spring.NET的IoC容器对象的创建。 创建对象一般有3种方式:1.构造器创建,2.静态工厂创建,3.实例工厂创建 多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,容器也可以调用工厂方法来创建对象,这时type属性的值就应该是包含工厂方法的类型(按:而不是要创建的类型,但通过该对象定义的名称获取的则是由工厂方法所创建的对象)。工厂方法的产品对象可以是工厂方法所在的类型,也可以是其它类型(按:很多情况下工厂方法位于单独的类型中),这无关紧要。(摘自Spring.NET中文手册) 一、通过构造器创建对象通过构造器创建对象需 阅读全文
posted @ 2011-03-26 20:45 似水流年-johnhuo 阅读(182) 评论(0) 推荐(0) 编辑
摘要:讲了这么多理论,我们来手动实现一个简易的IoC框架的,这样可以加深IoC的理论知识。 一、思路在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象。通过这一点就可以告诉我们制作IoC容器需要写一个获取 XML文件内容的方法和申明一个Dictionary<string, object>来存放IoC容器中的对象,还需要写一个能从Dictionary<string, object>中获取对象的方法。 二、分析要获取XML文件的内容,在3.5的语法中,我自然 阅读全文
posted @ 2011-03-26 20:43 似水流年-johnhuo 阅读(273) 评论(1) 推荐(0) 编辑
摘要:我们先来一起学习一下怎样使用Spring.NET。一、环境下载及安装 到Spring的官方网站下载Spring.NET框架的安装文件(Spring.NET-1.3.0-RC1.exe)。目前Spring.NET最新的版本是1.3。下载并解压后就可以了。我们使用Spring.NET框架经常用到的一下几个文件:Common.Logging.dll(必要)Spring.Core.dll(必要)Spring.Data.dllSpring.Aop.dll(可选)Spring.Data.NHibernate21.dllSpring.Web.dll在以后的博客里我们会学习一些与NHibernate和Asp. 阅读全文
posted @ 2011-03-26 20:31 似水流年-johnhuo 阅读(258) 评论(0) 推荐(0) 编辑
摘要:在学习Spring.NET这个控制反转(IoC)和面向切面(AOP)的容器框架之前,我们先来看一下什么是控制反转(IoC)。 控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象发生改变,由最初的类本身来管理依赖对象改变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从而实现松耦合。我们先来看一段代码 namespace Dao{ public interface IPersonDao { void Save(); } public class PersonDao : IPer 阅读全文
posted @ 2011-03-26 20:19 似水流年-johnhuo 阅读(228) 评论(0) 推荐(0) 编辑
摘要:在 Asp.net MVC 2 中解决页面提交数据并发问题 通过本篇,你能了解到 Asp.net MVC 模型绑定处理过程,一种解决并发颗粒度到一条数据的方法. * 如何解决互联网中某条数据的并发问题 在一个页面提交数据库前把从数据库取出的数据和提交时数据库中的数据比较,不同则给出提示. 在和其他童鞋的讨论中,都明确的指出了采用HashCode的方案,HashCode作为区分对象不同的一种方案,确实可行,但也有反对的声音.采用HashCode难免会涉及到对于实体对象的HashCode生成的问题,而实体对象的Hash又是根据自身属性生成,而属性又包含了其他关系,这种连带作用十分可观,也想过采用对 阅读全文
posted @ 2011-03-26 20:13 似水流年-johnhuo 阅读(370) 评论(0) 推荐(0) 编辑
摘要:大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。 上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。1、HTML静态化 其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁 阅读全文
posted @ 2011-03-26 18:55 似水流年-johnhuo 阅读(166) 评论(0) 推荐(0) 编辑
摘要:ASP.NET并发处理讲到并发处理,我们一般会分为两个方面来说:a)服务器级别的并发控制; b)程序级别的并发控制。服务器级别的并发控制:Ø 调整服务器应用程序池中的最大连接数。对于Web 服务器,dudu在优化博客园的服务器的时候写过以下的文章。dudu 写过让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求http://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535。 IIS Manager > Appli 阅读全文
posted @ 2011-03-26 18:30 似水流年-johnhuo 阅读(1666) 评论(0) 推荐(0) 编辑
摘要:HttpModule的认识 HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。1、asp.net的HTTP请 阅读全文
posted @ 2011-03-19 13:25 似水流年-johnhuo 阅读(1641) 评论(4) 推荐(6) 编辑

点击右上角即可分享
微信分享提示