1.项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。
日前微软推出了基于.NET Framework 2.0开发的Petshop 4。新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.NET 2.0附带的特性,构建了一个灵活的最佳实践的应用程序。
 
他们利用了Project Conversion Wizard把项目从ASP.NET 1.1移植到了ASP.NET 2.0,然后做了以下改动:
1.用System.Transactions代替了原来的Serviced Components提供的事务功能
代码实现:PetShop.BLL.OrderSynchronous 的 public void Insert(PetShop.Model.OrderInfo order)。
2.用强类型的范型集合代替了原来的弱类型集合
        public IList<ProductInfo> GetProductsByCategory(string category)
        {
            // Return new if the string is empty
            if (string.IsNullOrEmpty(category))
                return new List<ProductInfo>();
 
            // Run a search against the data store
            return dal.GetProductsByCategory(category);
        }
3.采用ASP.NET 2.0 Membership来做认证和授权
4.创建了针对Oracle 10g的Custom ASP.NET 2.0 Membership Provider
5.利用ASP.NET 2.0的Custom Oracle 和 SQL Server Profile Providers 做用户状态管理,包括购物车等
6.采用了Master Pages,取代了原来的用户控件,来实现统一的界面效果
7.使用了ASP.NET 2.0 Wizard控件实现check-out
8.使用了SqlCacheDependency来实现数据库层次的缓存更新(cache invalidation)功能
9.使用了消息队列来实现异时订单处理。
 
2.整体架构:

数据库:(暂略)
项目列表:从整体可以看出,Pet Shop 4的项目体系已经很庞大,考虑的方面也较3.0更全面复杂。
 
序号
项目名称
描述
1
BLL
业务逻辑层
2
CacheDependencyFactory
缓存依赖类的工厂类
3
WEB
表示层
4
DALFactory
数据层的抽象工厂
5
DBUtility
数据访问类组件
6
IBLLStrategy
同步/异步策略接口
7
ICacheDependency
缓存依赖类接口
8
IDAL
数据访问层接口定义
9
IMessaging
异时处理消息队列接口定义
10
IProfileDAL
Profile的数据访问层接口定义
11
Membership
Membership认证和授权管理
12
MessagingFactory
异时处理消息队列的抽象工厂
13
Model
业务实体
14
MSMQMessaging
异时处理消息队列的实现
15
OracleDAL
Oracle数据访问层
16
OracleProfileDAL
Oracle的Profile Providers
做用户状态管理,包括购物车等
17
OrderProcessor
后台处理进程,处理订单队列
18
Profile
Profile的数据访问层
19
ProfileDALFactory
ProfileDAL的工厂类(反射创建ProfileDAL)
20
SQLProfileDAL
SQL Server 的Profile Providers
做用户状态管理,包括购物车等
21
SQLServerDAL
SQLServer数据访问层
22
TableCacheDependency
缓存依赖实现类
 
项目分解
由于整体已经有22个项目,所以,对于初学者一看就晕了,所以,我做了分解,可以大体上分几块去理解。
序号
项目名称
描述
1
WEB
表示层
2
Model
业务实体
3
BLL
业务逻辑层
4
DALFactory
数据层的抽象工厂
5
IDAL
数据访问层接口定义
6
SQLServerDAL
SQLServer数据访问层
7
OracleDAL
Oracle数据访问层
8
DBUtility
数据库访问组件基础类
9
CacheDependencyFactory
缓存依赖类的工厂类
10
ICacheDependency
缓存依赖类接口
11
TableCacheDependency
缓存依赖实现类
12
IBLLStrategy
同步/异步处理策略接口(实现在bll根据配置反射选择)
13
MessagingFactory
异时处理消息队列的抽象工厂
14
IMessaging
异时处理消息队列接口定义
15
MSMQMessaging
异时处理消息队列的实现
16
Profile
Profile的数据访问层
17
ProfileDALFactory
ProfileDAL的工厂类(反射创建ProfileDAL)
18
IProfileDAL
Profile的数据访问层接口定义
19
OracleProfileDAL
Oracle的Profile Providers
做用户状态管理
20
SQLProfileDAL
SQL Server 的Profile Providers
做用户状态管理
21
Membership
Membership认证和授权管理
22
OrderProcessor
后台处理进程,处理订单队列
 
 
 
3.Petshop 4中的设计模式
工厂模式:
首当其冲的就是工厂模式,很容易就可以看出来,也是应用最多的。
DALFactory:数据访问层的抽象工厂(决定创建哪种数据库类型的数据访问层。可以选择:SQLServer,Oracle)
CacheDependencyFactory:缓存依赖类的工厂类。(创建具体表的缓存依赖)
MessagingFactory :异时处理消息队列的抽象工厂(反射创建具体的异时处理类)
ProfileDALFactory:ProfileDAL的工厂类(反射选择创建Oracle 和SQL Server的 ProfileDAL)
 
策略模式: IorderStrategy
 
 
 
中介模式
CategoryDataProxy ItemDataProxy  ProductDataProxy
 
 
 
暂时只看了这么多,以后有时间继续分解,如果你有不同的见解或经验,也请写下来,好让大家来共同学习,共同探讨,共同进步。
 
具体介绍可以参看MSDN
.NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp
 
下载
http://download.microsoft.com/download/8/0/1/801ff297-aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi

Microsoft .NET Pet Shop 4 架构与技术分析相关推荐

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

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

  2. Microsoft .NET PetShop 4.0 架构与技术分析(七)

    六 PetShop之表示层设计 表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心.正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的.一件交付给客户使用 ...

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

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

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

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

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

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

  6. Microsoft .NET Pet Shop 4

    msdn http://msdn.microsoft.com/zh-cn/library/aa479070.aspx csdn http://blog.csdn.net/younther/articl ...

  7. Microsoft.NET Pet Shop 4.0各个模块之间的联系

    第一部份:工厂模式 一.项目名称及描述:(实现步骤为:4-3-6-5-2-1) 1.WEB=表示层 2.BLL=业务逻辑层 3.IDAL=数据访问层接口定义 4.Model=业务实体 5.DALFac ...

  8. 阿里云、Amazon、Google云数据库方案架构与技术分析

    http://www.infoq.com/cn/articles/cloud-database-schema-and-technical-analysis 一切都会运行在云端」. 云时代早已来临,本文 ...

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

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

最新文章

  1. 机器学习简单代码示例
  2. SQL Case when 的使用方法
  3. FPGA之道(73)设计方法学与FPGA程序设计的境界
  4. 两个超长正整数的加法c语言,二个超长正整数的相加
  5. 【一起去大厂系列】针对left join以及limit的两条优化小技巧
  6. mysql中字符查询与替换
  7. 如何在 C#9 中使用 static 匿名函数
  8. 微软Hololens学院教程- Holograms 101: Introduction with Device【微软教程已经更新,本文是老版本】...
  9. 怎么发现RAC环境中#39;library cache pin#39;等待事件的堵塞者(Blocker)?
  10. oracle过程包保存乱码_这些火遍网络的哆啦A梦表情包,你知道出处吗?
  11. Actor 模型及Akka简介
  12. 前端界面根据条件动态显示图片
  13. 数字图像中高频噪声的滤波
  14. kindle看pdf不清楚_Kindle 对 PDF 的支持真的很糟糕吗?
  15. c语言 m文件是什么,M文件扩展名 - 什么是.m以及如何打开? - ReviverSoft
  16. 字节跳动校招前端面经(2021.03.16)
  17. 看了一遍蝴蝶效应1,在看到了一篇很好的《蝴蝶效应1》影评
  18. 日本语研究法1-10合集
  19. 利用python进行数据分析_第二章_案例2_movielens_电影评分分析
  20. Summit Wireless全新低成本空间音频模块现已震撼上市

热门文章

  1. java封装对象实体类_Java 接口自动化系列--实体类之entity封装
  2. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)
  3. C指针4:数组指针(指向数组的指针)
  4. knn 进行手写数字识别
  5. Linux那些事儿 之 戏说USB(33)字符串描述符
  6. Hololens开发示例(不断补充)
  7. 【汇总】细数VSCode中那些能够真正意义提升开发效率、鲜为人知的快捷键
  8. Node.js实现本地客户端上传单个或者多个文件Excel文件(xls格式、xlsx格式文件)到服务器端,并且解析对应的Excel内容反馈到请求报文中
  9. Python for虚幻引擎编辑器工具脚本学习教程
  10. Linux多线程与同步