【转】最近想研究下设计模式pet shop 是{zh0}的学习实例_fridayzz的空间 ...

zz from

.Net Pet Shop 4的下载

早就听说.Net Pet Shop是学习ASP.net三层架构体系的{zj0}实例教材,近日学习中不断接触到三层架构的实例,对这一设计模式一直一知半解的我,决定彻底研究一下.Net Pet Shop.

关于.Net Pet Shop

凡是对于搞JAVA的朋友们,肯定都知道Java Pet Shop的大名,想必朋友们也一定猜到了.Net Pet Shop和Java Pet Shop的关系了.是的,它就是MS模仿参照Java Pet Shop而搞出来的.Net版.Java平台和.Net平台的竞争从两都同时出现在这个世上的那{yt}起就一直不有停止过.可以说Java Pet Shop代表的Jave平台的{zxj}开发思想,强大开发能力和灵活开发架构.而MS当然也不甘示弱,自然要在.Net平台上用.Net Pet Shop与Java一决高下,于是就有了集.Net先进思想和强大能力的实用多层架构于一身的.Net Pet Shop.这里且不说两个平台的优劣,因为这也不是一两句话能说得清楚的,关键是要学到例程中的开发思想并将它们应用于今后的项目实战.这才是我们学习研究.Net Pet Shop的最终目的.

目前,(2008年底).Net Pet Shop的{zx1}版本是.Net Pet Shop 4,这是使用.net 2.0框架的网络实例.新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一.同时,在事务,数据缓存,安全方面使用了.NET 2.0附带的特性,构建了一个灵活的{zj0}实践的应用程序.关于.Net Pet Shop 4 的详细介绍,朋友们可以从以下网址看到MS官方的说明:

我的安装环境

.Net Pet Shop 4的安装

.Net Pet Shop 4是英文版的,其安装过程很简单,与一般的程序安装一样,一路"Next",直到出现"Installation Options"窗口时.默认选择的是只安装源代码,由于是首次安装,我选择了全部安装(包括源码与数据库).接着"Next"直到打开"DataBase Setup"窗口,选择使用数据库服务器的类型,服务器名以及登录验证模式,测试连接正常后继续.这样安装过程就完成了.

需要说明的是,在安装数据库的时候,我选择采用SQL Server认证模式,并输入正确的用户名和密码(用它登录SQL Server 2005 Management Studio 没有问题)时提示"验证无效",只好改用Windows验认模式了.

安装完成以后.安装程序会将源代码复制到你指定的目录下,并将用到的四个数据库自动附加到SQL Server中,由于.Net Pet Shop 4中采用的登录用户是mspetshop,所以,安装程序还会自动配置该用户,包括登录密码和映射的数据库对象等.

.Net Pet Shop 4数据库初步分析

.Net Pet Shop 4数据库共有4个,分别如下

1,MSPetShop4库,这是一个基本信息数据库,包括商品类别,商品详情,供应商信息等内容,其包含的表格信息如下表:

表名称 功能描述 包含内容
AspNet_SqlCacheTableForChangeNotification 数据库缓存依赖信息表 记录该库内各表之间的约束关系
Category 商品目录表(大类) 商品类别信息
Inventory 商品数量信息表 商品库存数量清单
Item 商品详细信息表(具体商品) 具体商品名称,价格,图片等信息
Product 商品基本信息表(小类) 商品的所属类别,名称及简单描述等信息
Supplier 供应商信息表 供应商基本信息数据

表间关系图:

2,MSPetShop4Orders库,这是一个订单管理数据库,包括订单基本信息及订单的详细项目信息等内容,其包含的表格信息如下表:

表间关系图:

3,MSPetShop4Profile库,这是一个客户配置数据库,包括客户个人配置信息等内容,其包含的表格信息如下表:

表间关系图:


表名称 功能描述 包含内容
aspnet_Applications 应用程序基本信息表 程序名,程序描述等
aspnet_MembersShip 用户信息表 用户名,邮箱等用户用户基本信息
aspnet_Paths 应用程序路径信息表 应用程序路径信息
aspnet_PersonalizationPerUser 用户个性化信息表 所有用户的共同个性化信息
aspnet_Profile 个性化配置内容表 用户个性化配置的内容
aspnet_Roles 角色表 系统角色列表
aspnet_SchemaVersions 版本信息表 各部分的版本信息
aspnet_Users 用户表 系统用户列表
aspnet_UsersInRoles 用户角色关系表 用户与角色的关系
aspnet_WebEvent_Events 事件日志表 事件日志信息

表间关系图:


以上罗列了.Net Pet Shop 4 系统中的所以数据库和数据库中的表,并对各表的作用作了简单的说明,其实,对于数据库部分,还可以有很多更加深入的研究.比如:

  • 为什么不用1个数据库来存入所有的表?这样的做的好处是显而易见的:首先,4个数据库可以分布在不同的服务器上,可以达到负载平衡的目的;其次,当其中某数据库繁忙时,不至于影响到别的库为客户正常提供其它服务.提高了各功能之间的独立性.当然,MS可能还基于其它方面的考虑,朋友们可以就这一问题展开讨论.
  • 为什么不把MSPetShop4Services库中的aspnet_Users,aspnet_MembersShip,aspnet_Profile三个表合成一个?它们之间都是一对一的关系.我想:这可能是基于性能方面的考虑吧.
  • MSPetShop4Services库中的用户表和角色表之间本来是一种多对多的关系,即一个用户可以对应多种角色,一种角色也可是包含多个用户,为了表示这种多对多的关系,在数据库中通常是把它拆分成两个一对多的关系,生成一个关系表,即用户角色关系表.这种处理多对多关系的方法在数据库设计方面应用很常见.

Web.config文件加解密

Asp.net程序都有一个Web.config文件,它是应用程序的配置文件.细心的朋友可能早就发现,.Net Pet Shop 4 中的配置文件中的数据库连接字符串居然是一连串杂乱无章的字符,显然,它们已经被加密了.我们可以运行.Net Pet Shop 4 程序安装目录下的"DecryptWebConfig.bat"来对其进行解密,同样也可以运行旁边的"EncryptWebConfig.bat"来再次加密Web.config文件.

用记事本打开"DecryptWebConfig.bat"和"EncryptWebConfig.bat",,这是两个批处理文件,内容如下:

@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "E:\Lucker Develop Library(LDL)\Tech Tutorial\.NET Pet Shop 4.0\Web"
PAUSE

@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "E:\Lucker Develop Library(LDL)\Tech Tutorial\.NET Pet Shop 4.0\Web"
PAUSE

原来,采用aspnet_regiis.exe -pdf 对文件的connectionStrings节进行了解密操作.用aspnet_regiis.exe -pef 对文件的connectionStrings节进行了加密操作.

项目内容概览

从整体可以看出,Pet Shop 4的项目体系已经很庞大,一共含有22个项目,如下:


查询网上相关文章,得到各项目的描述及功能分块列表(以字体着色区分)如下:


对于一名初学者来说,这么多的项目本身就是一种负担,但是,我们可以根据项目的命名来大致的区分出该项目的分层及功能,因为系统中项目的命名采用了形如"名称+层名"的形式,一般的:

再深入一步,网络上还可以找到以上项目相互之间的关系和调用图:


4,MSPetShop4Services库,这是一个系统服务数据库,所有的表都是以"aspnet_"开头的,这些表是在ASP.Net 2.0中自动生成的,可以通过MemberShip等操作类直接读取数据库中的数据,其包含的表格信息如下表:


郑重声明:资讯 【【转】最近想研究下设计模式pet shop 是{zh0}的学习实例_fridayzz的空间 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——