自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

SqlCacheDependency

SqlCacheDependencyweb页面代码片段:web页面代码<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<b...

2011-03-27 00:08:00 61

PetShop的系统架构第三篇

前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又很多可以借鉴之处。Pet...

2011-03-26 22:49:00 234

pet shop 4.0架构解析另

1.框架的概要介绍微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户做比较的这个项目就是Petshop。正因...

2011-03-26 22:41:00 56

pet shop 4.0架构解析

PetShop数据库解读PetShop数据访问层之数据库访问设计PetShop的工厂模式PetShop之业务逻辑层设计PetShop数据库解读PetShop 4.0使用了四个数据库,分别为:MSPetShop4 、MSPetShop4Orders 、MSPetShop4Profile 、MSPetShop4Services   一、MSPetShop4其中MSPetS...

2011-03-26 22:13:00 176

BlogEngine.Net架构与源代码分析系列part5:对象搜索——IPublishable与Search

从这篇文章开始我会引入一些领域上的知识或者给出一些参考文章来供大家阅读,我们对这些领域上的知识没有必要深挖,只要大概了解一下就可以了,这对于我们分析BlogEngine.Net会有很大的帮助。在这篇文章中我主要向大家介绍一下BlogEngine.Net的搜索部分的实现以及支持的相应标准等。先用自己的话解释一下什么是开放搜索 开放搜索应该也是一种标准了,现在它越来越流行起来,记得我第一次见到这个东...

2011-03-26 21:52:00 62

BlogEngine.Net架构与源代码分析系列part4:Blog全局设置——BlogSettings

在这篇文章中我们将对BlogEngine.Net的全局配置进行一下分析与探讨。关于配置这一部分单独拿出来做一篇文章实在有些牵强,但是我总觉得这个配置部分比较独立,而且BlogEngine.Net的设计和实现都有很多可以参考的地方。在一个企业级应用系统中,对一些系统全局参数进行配置是必不可少的,那么我们是怎么处理这些配置的呢? 一般都有以下三步:1.在业务模块开发的过程中将一些可变的参量提取出来。...

2011-03-26 21:50:00 77

BlogEngine.Net架构与源代码分析系列part3:数据存储——基于Provider模式的实现

在上一篇文章中,我们主要分析了一下BlogEngine.Net的整体设计,在后半部分我们又对BusinessBase业务对象的状态维护做了一些比较深入的探讨。在这篇文章中我将引领大家完成对BlogEngine.Net中业务对象数据存储的设计思路与实现细节的分析。BlogEngine.Net中的数据存储主要是应用Provider模式实现的,那么首先让我们认识一下Provider模式。 Provid...

2011-03-26 21:49:00 62

BlogEngine.Net架构与源代码分析系列part2:业务对象——共同的父类BusinessBase

上篇文章朋友的评论给了我很大的动力写这个系列的文章,看来大家都比较关注这个系列。为了后续文章做一个铺垫,我在这篇文章的前半部分讲解一下BlogEngine.Net的整体架构,后半部分主要是对于BusinessBase类的分析。下载源代码以后打开解决方案,我们发现从项目的组织结构上BlogEngine.Net分成两个项目:一个是BlogEngine.Core,顾名思意,它就是BlogEngine.N...

2011-03-26 21:47:00 59

BlogEngine.Net架构与源代码分析系列part1:开篇介绍

近我要开始这个系列了,这是我的第一个系列。关于BlogEngine.Net我想说的是,它设计的真的很棒,代码简洁但是功能很多,真是麻雀虽小,五脏俱全啊,而且具有了很多Web2.0的特征,甚至它的每一行代码都值得我们去研究一下,它的开发团队很棒。实际上很多国外的个人Blog都是采用BlogEngine.Net加上自定义皮肤实现的,如果您是一个Blog的开发者,这更是您的必备参考!  很多兄弟都推荐B...

2011-03-26 21:45:00 109

基于.NET平台的分层架构实战(十一)——表示层的实现

在这篇文章中,将讨论一下表示层的实现方法。 表示层是一个系统的“门脸”,不论你的系统设计的多么优秀,代码多么漂亮,系统的可扩展性多么高,但是最终用户接触到的大多是表示层的东西。所以,表示层的优劣对于用户最终对系统的评价至关重要。一般来说,表示层的优劣有一下两个评价指标: 1.美观。即外观设计漂亮,能给人美的感觉。 2.易用。即具有良好的用户体验,用户用起来舒服、顺手。 表示层的设计...

2011-03-26 21:41:00 89

基于.NET平台的分层架构实战(十)——业务逻辑层的实现

在这一篇文章中,将实现一个NGuestBook的业务逻辑层。 在实际应用中,业务逻辑层是至关重要的,他承载着整个系统最核心的部分,也是客户最关注的部分。这一部分的实现,通常需要技术专家和领域专家通力合作。当然,在本文章系列的Demo中,由于业务逻辑的简单性,这里看的可能还不是很明显。 在本篇文章的业务逻辑层实现中,业务逻辑层主要承担了以下职责: 1.对不同数据访问层的封装。使得表示层可...

2011-03-26 21:40:00 97

基于.NET平台的分层架构实战(九)——数据访问层的第三种实现:基于NBear框架的ORM实现...

前面的文章讨论了使用SQL语句和存储过程两种数据访问层的实现方式,这一篇里,将讨论使用ORM方式实现数据访问层的方法。 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形...

2011-03-26 21:39:00 112

基于.NET平台的分层架构实战(八)——数据访问层的第二种实现:SQLServer+存储过程...

在上一篇(基于.NET平台的分层架构实战(七-外一篇)——对数据访问层第一种实现(Access+SQL)的重构)中,讨论了使用SQL构建数据访问层的方法,并且针对的是Access数据库。而这一篇中,将要创建一个针对SQLServer数据库的数据访问层,并且配合存储过程实现。 曾经有朋友问我使用SQL和存储过程在效率上的差别,惭愧的是我对这方面没有研究,也没有实际做过测试。通过查阅资料,发现在一...

2011-03-26 21:34:00 73

基于.NET平台的分层架构实战(七-外一篇)——对数据访问层第一种实现(Access+SQL)的重构...

昨天的文章 基于.NET平台的分层架构实战(七)——数据访问层的第一种实现:Access+SQL 发布后,很多朋友对我的程序提出了意见和建议,在这里先谢谢你们!!!尤其是 金色海洋(jyk),对我的程序提出了很多建设性的意见。 我大体总结了一下,昨天程序的主要缺点有: 1.Connection对象没有关闭 2.DataReader对象没有关闭 3.相似代码太多,造成代码冗余。 ...

2011-03-26 21:31:00 91

基于.NET平台的分层架构实战(七)——数据访问层的第一种实现:Access+SQL

经过上面篇文章的介绍,整个系统的框架算是基本搭建完了,下面,我们要具体实现各个层次。关于数据访问层的实现,我准备讨论三种实现方式,这一篇文章讨论第一种:Access+动态生成SQL。 顾名思义,这种实现将使用Access作为后台数据库,而操作方式也是最基本的使用SQL命令。 在具体编写实现代码之前,我们需要做一些准备工作: 第一步,我们要将Access数据库搭建完成,具体做法如下。 ...

2011-03-26 21:23:00 61

基于.NET平台的分层架构实战(六)——依赖注入机制及IoC的设计与实现

我们设计的分层架构,层与层之间应该是松散耦合的。因为是单向单一调用,所以,这里的“松散耦合”实际是指上层类不能具体依赖于下层类,而应该依赖于下层提供的一个接口。这样,上层类不能直接实例化下层中的类,而只持有接口,至于接口所指变量最终究竟是哪一个类,则由依赖注入机制决定。 之所以这样做,是为了实现层与层之间的“可替换”式设计,例如,现在需要换一种方式实现数据访问层,只要这个实现遵循了前面定义的数...

2011-03-26 21:16:00 58

基于.NET平台的分层架构实战(五)——接口的设计与实现

接下来,将进行接口的设计。这里包括数据访问层接口和业务逻辑层接口。在分层架构中,接口扮演着非常重要的角色,它不但直接决定了各层中的各个操作类需要实现何种操作,而且它明确了各个层次的职责。接口也是系统实现依赖注入机制不可缺少的部分。 本项目的接口设计将按如下顺序进行: 1.首先由前文的需求分析,列出主要的UI部分。 2.分析各个UI需要什么业务逻辑支持,从而确定业务逻辑层接口。 3....

2011-03-26 21:15:00 53

基于.NET平台的分层架构实战(四)——实体类的设计与实现

实体类是现实实体在计算机中的表示。它贯穿于整个架构,负担着在各层次及模块间传递数据的职责。一般来说,实体类可以分为“贫血实体类”和“充血实体类”,前者仅仅保存实体的属性,而后者还包含一些实体间的关系与逻辑。我们在这个Demo中用的实体类将是“贫血实体类”。 大多情况下,实体类和数据库中的表(这里指实体表,不包括表示多对多对应的关系表)是一一对应的,但这并不是一个限制,在复杂的数据库设计中,有可...

2011-03-26 21:11:00 63

基于.NET平台的分层架构实战(三)——架构概要设计

本文主要是对将要实现的架构进行一个总体的描述,使朋友们对这个架构有个宏观上的认识。这篇文章理论性的东西会偏多一点,从下篇开始,将进行实际项目的开发。这篇文章的许多内容摘自我的毕业论文。架构基本原则: 这里,将描述一些在这个架构设计中的基本原则,其中很多都是经典的设计原则,不过针对分层架构的特点,用我自己的语言进行了描述。其中也有我自己提出的原则。 逐层调用原则及单向调用原则 现在约定将...

2011-03-26 21:09:00 52

基于.NET平台的分层架构实战(二)——需求分析与数据库设计

在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影响项目的开发过程和质量。实际中,这个环节不但需要系统分析师、软件工程师等计算机方面的专家,还需要相关领域的领域专家参与才能完成。 但是,在这个文章系列中,所要使用的Demo仅仅是一个例子,而且其业务极为简单,因此,这里并不是真正的需求分析和数据库设计,而是将Demo的需求和数据库罗列至此,使朋友们对Demo有一个大体的了...

2011-03-26 21:08:00 66

基于.NET平台的分层架构实战(一)——综述

通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫“基于.NET平台的分层架构与设计模式应用研究”)。通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,详述一下分层架构。然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论...

2011-03-26 21:06:00 71

Spring.NET学习笔记13——AOP的概念(基础篇)

上篇我们简单的了解了AOP的应用场景,知道AOP编程的重要性。这篇我们先看一段代码,来开始今天的学习。  回顾与上篇类似的代码:SecurityService类的IsPass判断用户名为“admin”则有权限保存数据。OrderService为保存数据的类,实现IOrderService接口。 public class SecurityService { public...

2011-03-26 21:03:00 44

Spring.NET学习笔记12——面向切面编程(基础篇)

AOP即面向切面编程(Aspect Oriented Programming的缩写),是OOP(面向对象编程)的一种延续形式。是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,它从一个不同于OOP的角度来看待程序的结构:OOP将应用程序分解为一系列表现为继承关系的对象;AOP 则把程序分解为一系列方面(aspects)或者关注点(concerns)。AOP...

2011-03-26 21:00:00 64

Spring.NET学习笔记11——自定义对象行为(基础篇)

Spring.NET通过几个专门的接口来控制容器中对象的行为。说到对象的行为无非就要提到对象的生命周期控制。类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispose方法为Form的销毁方法。Spring.NET都能完美的实现这些需求。      一、生命周期接口  在使用Spring.NET框架的时候通常遇到怎样初始化和销毁非托管资源(如数据库连接)的麻烦,下...

2011-03-26 20:59:00 37

Spring.NET学习笔记10——方法的注入(基础篇)

多数用户都会将容器中的大部分对象布署为singleton模式。当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协作时,Spring.NET都能很好的处理它们的依赖关系。但是,如果对象的生存周期不同,就可能会产生问题。例如,假设一个singleton对象A要使用一个非singleton(原型)对象B,A中的每个方...

2011-03-26 20:57:00 54

Spring.NET学习笔记8——集合类型的注入(基础篇)

我们在第三篇中学习里一个简易的IoC框架。今天我们接着上次的程序,实现带参数构造函数对象的实例和属性的注入 。  我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法);可以获取属性和属性的类型(GetProperties方法)。通过Activator的CreateInstance(Type type, params object[] args)方法可以创建带参数构造函数...

2011-03-26 20:55:00 78

Spring.NET学习笔记8——集合类型的注入(基础篇)

Spring.NET还支持集合类型的注入。而且使用起来也比较方便。  一、ILIst类型  使用<list>元素作为ILIst的标签,value为集合中元素的值。也可以注入对象,甚至关联其它对象,使用 <ref/>元素表示关联的对象,object 属性为所关联对象的id或name。集合可以为空,用<null/>元素来标记。  在<list>元素中设置...

2011-03-26 20:54:00 59

Spring.NET学习笔记7——依赖对象的注入(基础篇)

一、属性注入  上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="Spring...

2011-03-26 20:53:00 43

Spring.NET学习笔记6——依赖注入(应用篇)

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

2011-03-26 20:51:00 51

Spring.NET学习笔记5——容器中对象的作用域(基础篇)

一、属性注入  上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="Spring...

2011-03-26 20:49:00 78

Spring.NET学习笔记4——对象的创建(基础篇)

学过了前面的课程,我们来一起学习Spring.NET的IoC容器对象的创建。  创建对象一般有3种方式:1.构造器创建,2.静态工厂创建,3.实例工厂创建  多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,容器也可以调用工厂方法来创建对象,这时type属性的值就应该是包含工厂方法的类型(按:而不是要创建的类型,但通过该对象定义的名称获取的则是由工厂方法所创建的...

2011-03-26 20:45:00 48

Spring.NET学习笔记3——实现一个简易的IoC框架(练习篇)

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

2011-03-26 20:43:00 46

Spring.NET学习笔记2——环境搭建(基础篇)

我们先来一起学习一下怎样使用Spring.NET。一、环境下载及安装  到Spring的官方网站下载Spring.NET框架的安装文件(Spring.NET-1.3.0-RC1.exe)。目前Spring.NET最新的版本是1.3。下载并解压后就可以了。我们使用Spring.NET框架经常用到的一下几个文件:Common.Logging.dll(必要)Spring.Core.dll(必要)Spri...

2011-03-26 20:31:00 49

Spring.NET学习笔记1——控制反转(基础篇)

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

2011-03-26 20:19:00 56

Asp.net MVC 2 中解决页面提交数据并发问题

在 Asp.net MVC 2 中解决页面提交数据并发问题 通过本篇,你能了解到 Asp.net MVC 模型绑定处理过程,一种解决并发颗粒度到一条数据的方法. * 如何解决互联网中某条数据的并发问题 在一个页面提交数据库前把从数据库取出的数据和提交时数据库中的数据比较,不同则给出提示. 在和其他童鞋的讨论中,都明确的指出了采用HashCode的方案,HashCode作为...

2011-03-26 20:13:00 109

还是并发

大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。  上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验...

2011-03-26 18:55:00 59

asp.net 并发处理

ASP.NET并发处理讲到并发处理,我们一般会分为两个方面来说:a)服务器级别的并发控制; b)程序级别的并发控制。服务器级别的并发控制:Ø 调整服务器应用程序池中的最大连接数。对于Web 服务器,dudu在优化博客园的服务器的时候写过以下的文章。dudu 写过让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求http://...

2011-03-26 18:30:00 61

报错: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' ...

报错信息:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext大概看一下错误信息:BeanFactory没有实例化或者已经关闭,原因很简单:App...

2011-03-25 22:41:00 90

IHttpModule

HttpModule的认识 HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些...

2011-03-19 13:25:00 51

IHttpModule

HttpModule的认识 HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些...

2011-03-19 13:25:00 71

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除