前言

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

关于.Net Pet Shop

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

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

.Net Pet Shop 4的下载

http://download.microsoft.com/download/8/0/1/801ff297-aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi

这是来自于MS官方的下载链接.文件是一个MSI的标准安装格式,大小只有2.3M.

我的安装环境

操作系统 WINDOWS XP PRO SP3 CHS
浏览器 IE6
.NET Framework .NET Framework 3.5
开发工具 Visual Studio 2008
网络服务器 IIS6
DBMS SQL Server 2005 Dev

.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库,这是一个订单管理数据库,包括订单基本信息及订单的详细项目信息等内容,其包含的表格信息如下表:

表名称 功能描述 包含内容
LineItem 订单明细表 每个订单所订的具体商品的数量和单价
Orders 订单表 所有订单的基本信息
OrderStatus 订单状态表 记录每个订单的当前状态及状态变更时间

表间关系图:

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

表名称 功能描述 包含内容
Profiles 客户个人配置信息表 活动日期,更新日期等信息
Account 客户账号信息表 客户基本账户信息
Cart 客户购物篮信息表 客户选择的产品,数量等信息及购物篮类型

表间关系图:

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

表名称 功能描述 包含内容
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个项目,如下:

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

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

项目名称后缀(层) 说明 内容
BLL 业务逻辑层 与具体业务相关的类
DAL 数据访问层 所有与数据库访问相关的操作
Factory 工厂模式 (暂时不很明白)
Strategy 策略模式 (暂时不很明白)
Web 界面UI层 所能界面与用户控件

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

转载于:https://www.cnblogs.com/luckeryin/archive/2008/12/16/1356179.html

.Net Pet Shop 4 初探之一:初识PetShop4相关推荐

  1. Microsoft .NET Pet Shop 4 架构与技术分析

    1.项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面.是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java ...

  2. Microsoft .NET Pet Shop 4 架构与技术分析(转)

    Microsoft .NET Pet Shop 4 架构与技术分析 1.项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面.是研究ASP. ...

  3. Microsoft .NET Pet Shop 4.0 学习之旅(三) - 项目的引用关系2

    Microsoft .NET Pet Shop 4.0 学习之旅(三) 项目的引用关系2 <?xml:namespace prefix = o ns = "urn:schemas-mi ...

  4. .NET Pet Shop 4.0案例研究预览篇

    概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 随着.NE ...

  5. 手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译)

    手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译) 原文地址 : http://truffleframework.com/tutorials/pet-shop 译者:luci ...

  6. Microsoft .NET Pet Shop 4.0 学习之旅(二) - 项目的引用关系1

    Microsoft .NET Pet Shop 4.0 学习之旅(二) 项目的引用关系1 <?xml:namespace prefix = o ns = "urn:schemas-mi ...

  7. ASP.NET---- Microsoft .NET Pet Shop 3.x(-)

    Microsoft .NET Pet Shop 3.x: .NET Pet Shop 的设计模式与体系结构 摘自微软MSDNhttp://www.microsoft.com/china/MSDN/li ...

  8. ETHEREUM PET SHOP

    ETHEREUM PET SHOP 个人博客:sulenn 本文翻译至:https://truffleframework.com/tutorials/pet-shop 版本为:2017-07-20 本 ...

  9. 一步一步安装 Microsoft .NET Pet Shop 4.0

    安装的前提条件 安装了 IIS 5.1/6/7(可选), SQL Server 2000/SQL Server 2005 /Oracle 10g,  Visual Studio 2005/2008/2 ...

  10. pet shop 4.0架构信息-转

    Petshop5.0 详解之一(系统架构设计)   前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun ...

最新文章

  1. 合并两个有序链表分析
  2. Genome-scale de novo assembly using ALGA 使用ALGA进行 基因组规模的从头组装
  3. bind日志配置详解
  4. 【渝粤教育】电大中专电商运营实操12作业 题库
  5. python学习第三十二节(进程间通信、进程池、协程)
  6. vs python opencv_VsCode+Anaconda+OpenCV开发环境搭建
  7. python大神推荐_大神推荐!!!高评分书籍轻松带你入门Python
  8. winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
  9. 百度地图设置显示定位服务器,百度地图后台持续定位
  10. 批处理命令调用InstallShield生成安装包
  11. make[1]: *** [storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/all] 错误 2 解决方法...
  12. 设计一个具有大纯时延时间的一阶惯性环节的计算机控制系统,一阶惯性环节的计算机控制课程设计【参考】.doc...
  13. cJSON使用详细教程 | 一个轻量级C语言JSON解析器
  14. vr全景拍摄教程,怎样拍摄vr全景照片?
  15. Java数据结构树实验报告总结_20172302 《Java软件结构与数据结构》实验二:树实验报告...
  16. nltk中文分句_利用NLTK进行分句分词
  17. 机器人教育对孩子们的作用
  18. 使用MIT JWI(Java WordNet Interface)查询WordNet反义词
  19. C#实现在CAD图纸中插入另一个DWG图块的代码
  20. 计算机网络2:get和post的区别

热门文章

  1. Largest Submatrix SPOJ - MINSUB (单调栈)
  2. (转载)排序六 堆排序
  3. linux man指令问题
  4. 用Vue.js递归组件构建一个可折叠的树形菜单
  5. FJUT 2351 T^T的图论(并查集)
  6. jQuery操作DOM元素
  7. 全文索引--海量数据模糊查询
  8. Java获取字符串信息
  9. 08.存储Cinder→5.场景学习→12.Ceph Volume Provider→5.Detach Volume
  10. ES6躬行记(3)——解构