君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

2011年3月14日 #

摘要: 《解剖PetShop》系列之二 二、PetShop数据访问层之数据库访问设计在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的概念。从本部分开 始,我将依次对各层进行代码级的分析,以求获得更加细致而深入的理解。在PetShop 4.0中,由于引入了ASP.Net 2.0的一些新特色,所以数据层的内容也更加的广泛和复杂,包括:数据库访问、Messaging、MemberShip、Profile四部分。在系列 二中,我将介绍有关数据库访问的设计。 在PetShop中,系统需要处理的数据库对象分为两类:一是数据实体,对应数据库中相应的数据表。它们没有行为,仅用于表现对象的数据。这些 阅读全文
posted @ 2011-03-14 01:44 刺猬的温驯 阅读(218) 评论(0) 推荐(0) 编辑

摘要: 《解剖PetShop》系列之一 前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的 PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着 版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又很多可以借鉴之处。PetShop是一个小型的项目,系统架构与代码都比较简单,却 也凸现了许多颇有价值的设计与开发理念。本系列试图对PetShop作一个全方位的解剖,依据的代码是PetShop4 阅读全文
posted @ 2011-03-14 01:43 刺猬的温驯 阅读(465) 评论(0) 推荐(0) 编辑

摘要: 由于最近忙于一些琐事,近半个月都没有写新的专题,今天忙里抽闲赶紧补上,实在是抱歉。 设计做多了就会发现,用户权限管理是一个永恒的话题,几乎没有什么项目不需要权限和角色管理的,可能会无数次去写角色管理的代码,而且会根据项目的不同粒度也会有所不同。在CS中,采用了MemberRole.dll中的RoleManager进行角色管理,该角色管理机制同样在asp.net 2.0 beta2 中得到应用。在分析代码之前先看看数据库中的角色的关系表: 表分两种前缀,一种是“aspnet_”另一种是“cs_”,“aspnet_”是采用MemberRole.dll组件所必需的一些表,包括过程和视图等都是这样命名 阅读全文
posted @ 2011-03-14 01:18 刺猬的温驯 阅读(417) 评论(0) 推荐(0) 编辑

摘要: 请用批判的眼光来看下面的文字: 线程和进程(Threads and Processes), 简单说,你启动一个程序,就启动了一个进程,早期win3.x的系统以进程为单位(嘿嘿,其实我没有用过win3.x),win98后每个进程还可以启动几个线程,因此以线程为单位。在如今的操作系统下线程间是独立运行的,但是他们共享一些内存中的片断,如:全局变量等。 问题来了:CS在服务器上运行是多线程的吗?每个用户的Http请求CS做了什么?CS系统在被第一次访问的时候由asp.net运行机制启动一个CS进程,启动进程是需要给该进程分配独立的内存地址的,该地址不受其他的进程影响和操作。也就是说如果你还有其他的W 阅读全文
posted @ 2011-03-14 01:18 刺猬的温驯 阅读(232) 评论(0) 推荐(0) 编辑

摘要: 上个专题我们讲到了Membership,了解了Membership可以让我们轻松的实现用户注册、登录、删除用户、用户更改密码等等一系列关于用户的基本操作,但是对于一个面向多用户的web程序,为了满足用户在访问站点时能够根据自己的喜好定制web站点的一些页面布局、皮肤,语言等等一些信息,Membership是不能满足要求的,因此,在CS中引入了Profile,Profile并不是为了实现用户个性化的机制,只是实现了个性化信息存储(在asp.net 2.0 beat2.0中页面的个性化可以用webpart实现的),目前CS的版本中还没有实现这个功能。但是我想,CS实现页面布局的个性化是迟早的事情, 阅读全文
posted @ 2011-03-14 01:17 刺猬的温驯 阅读(283) 评论(0) 推荐(0) 编辑

摘要: 专题八的上篇大致讨论了MemberRole中的Membership实现,对于运用Membership进行web开发足够,但是对于想更深入了解Membership实现机理的朋友那是远远不够的,这个专题我们更深入一下了解Membership。 其实MemberRole是一个非常好的资源包,借住Reflector这个优秀的工具,你可以对其进行代码分析。它无论是在组建的构架、代码的设计、数据库表的建立、存储过程的使用等都是非常优秀的,你是程序员也好构架师也罢,其中可以学习的真的很多很多,我在整个分析的过程中也深深受益。 由于MemberRole中的Membership只实现了对SQL Server的操 阅读全文
posted @ 2011-03-14 01:16 刺猬的温驯 阅读(250) 评论(0) 推荐(0) 编辑

摘要: MemberRole是一个在asp.net 1.1下实现用户管理、角色管理、用户特性信息存储(profile)等的一个组件,该组件被ASP.NET 2.0 Beta 2所采用,也就是ASP.NET 2.0 Beta 2中所说的Membership and Roles。如果你在asp.net 1.1下采用了MemberRole,那么你的web程序将会很容易的过渡到asp.net 2.0,另外多个采取MemberRole进行用户管理的web程序需要整合时也非常容易。我将分4个专题来分析MemberRole,探索一下MemberRole到底是如何工作的,无论对CS的构架还是对了解asp.net 2. 阅读全文
posted @ 2011-03-14 01:15 刺猬的温驯 阅读(205) 评论(0) 推荐(0) 编辑

摘要: 在CSHttpModule.cs文件中的Init方法下有这样一行: 接着在Dispose方法中还有这么一行: Job?什么是Job,在CS运行过程中有什么用途,又是如何运行的?这篇专题将叙述Job的工作流程. 你可以这里理解CS中的Job:“干一些零碎事情的钟点工”。 讲解之前要先了解一个接口:IDisposable,MSDN是这样定义的:定义一种释放分配的非托管资源的方法。当托管对象不再使用时,垃圾回收器会自动释放分配给该对象的内存,不过,进行垃圾回收的时间不可预知。另外,垃圾回收器对窗口句柄、打开的文件和流等非托管资源一无所知。 将此接口的 Dispose 方法与垃圾回收器一起使用来显式释 阅读全文
posted @ 2011-03-14 01:10 刺猬的温驯 阅读(226) 评论(0) 推荐(0) 编辑

摘要: 对于CS的分析你可以能会从页面开始,其实那并不是一个很好的方法,因为CS采用了MasterPage和内建的Theme与Skins,页面一层嵌套一层,如果你对CS页面执行机制不了解,或者你是初学者,这个时候可能就会碰壁,接着就放弃了对CS更深入的了解。我希望我的专题能从CS的运行过程开始一步一步地讲解,同时把ASP.NET的运行机理也表述出来,因此学习了解CS的过程就是对ASP.NET深入了解得过程。当然,我个人的开发经验与水平也是有限的,如果在专题中表述有问题,或者有疑问可以直接在文章的评论中直接指出,我将万分感谢你。 在分析CSHttpModule.cs的时候,你会看到这样两句代码: CSE 阅读全文
posted @ 2011-03-14 01:09 刺猬的温驯 阅读(229) 评论(0) 推荐(0) 编辑

摘要: 如果你了解Factory设计模式,这篇文章可以不用看,只要会配置IHttpHandlerFactory就可以,不了解也没有关系,通过下面的文章你可以学会如何使用IHttpHandlerFactory,同时还会明白Factory设计模式的广义定义 在前一篇专题中讲解了HttpHandler在CS中的运用以及一些相关的话题。其实实现HttpHandler功能还有另外一个选择就是Handler Factory(CS 中没有用到Handler Factory),这是通过继承IHttpHandlerFactory接口来实现的。 IHttpHandlerFactory接口的定义如下: interfaceI 阅读全文
posted @ 2011-03-14 00:59 刺猬的温驯 阅读(244) 评论(0) 推荐(0) 编辑