PetShop4架构与技术分析
2010-03-31 13:06
369 查看
2006-4-17 22:20:17 (被阅读7246次)
1[/b].项目概述与架构分析
[/b]微软刚推出了基于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.用强类型的范型集合代替了原来的弱类型集合
[align=left] public IList<ProductInfo> GetProductsByCategory(string category)[/align]
[align=left] {[/align]
[align=left] // Return new if the string is empty[/align]
[align=left] if (string.IsNullOrEmpty(category))[/align]
[align=left] return new List<ProductInfo>();[/align]
[align=left] [/align]
[align=left] // Run a search against the data store[/align]
[align=left] return dal.GetProductsByCategory(category);[/align]
}
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.使用了消息队列来实现异时订单处理。
[/b]
2.[/b]整体架构:[/b]
数据库:(暂略)
项目列表:从整体可以看出,Pet Shop 4的项目体系已经很庞大,考虑的方面也较3.0更全面复杂。
项目分解[/b]:
由于整体已经有22个项目,所以,对于初学者一看就晕了,所以,我做了分解,可以大体上分几块去理解。
[/b]
3[/b].Petshop 4中的设计模式[/b]:
工厂模式[/b]:
首当其冲的就是工厂模式,很容易就可以看出来,也是应用最多的。
DALFactory:数据访问层的抽象工厂(决定创建哪种数据库类型的数据访问层。可以选择:SQLServer,Oracle)
CacheDependencyFactory:缓存依赖类的工厂类。(创建具体表的缓存依赖)
MessagingFactory :异时处理消息队列的抽象工厂(反射创建具体的异时处理类)
ProfileDALFactory:ProfileDAL的工厂类(反射选择创建Oracle 和SQL Server的 ProfileDAL)
策略模式: [/b]IorderStrategy[/b]
[align=center][/align]
[align=center]
[/align]
中介模式[/b]
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
1[/b].项目概述与架构分析
[/b]微软刚推出了基于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.用强类型的范型集合代替了原来的弱类型集合
[align=left] public IList<ProductInfo> GetProductsByCategory(string category)[/align]
[align=left] {[/align]
[align=left] // Return new if the string is empty[/align]
[align=left] if (string.IsNullOrEmpty(category))[/align]
[align=left] return new List<ProductInfo>();[/align]
[align=left] [/align]
[align=left] // Run a search against the data store[/align]
[align=left] return dal.GetProductsByCategory(category);[/align]
}
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.使用了消息队列来实现异时订单处理。
[/b]
2.[/b]整体架构:[/b]
数据库:(暂略)
项目列表:从整体可以看出,Pet Shop 4的项目体系已经很庞大,考虑的方面也较3.0更全面复杂。
[align=center]序号[/b][/align] | [align=center]项目名称[/b][/align] | [align=center]描述[/b][/align] |
[align=center]1[/align] | BLL | 业务逻辑层 |
[align=center]2[/align] | CacheDependencyFactory | 缓存依赖类的工厂类 |
[align=center]3[/align] | WEB | 表示层 |
[align=center]4[/align] | DALFactory | 数据层的抽象工厂 |
[align=center]5[/align] | DBUtility | 数据访问类组件 |
[align=center]6[/align] | IBLLStrategy | 同步/异步策略接口 |
[align=center]7[/align] | ICacheDependency | 缓存依赖类接口 |
[align=center]8[/align] | IDAL | 数据访问层接口定义 |
[align=center]9[/align] | IMessaging | 异时处理消息队列接口定义 |
[align=center]10[/align] | IProfileDAL | Profile的数据访问层接口定义 |
[align=center]11[/align] | Membership | Membership认证和授权管理 |
[align=center]12[/align] | MessagingFactory | 异时处理消息队列的抽象工厂 |
[align=center]13[/align] | Model | 业务实体 |
[align=center]14[/align] | MSMQMessaging | 异时处理消息队列的实现 |
[align=center]15[/align] | OracleDAL | Oracle数据访问层 |
[align=center]16[/align] | OracleProfileDAL | Oracle的Profile Providers 做用户状态管理,包括购物车等 |
[align=center]17[/align] | OrderProcessor | 后台处理进程,处理订单队列 |
[align=center]18[/align] | Profile | Profile的数据访问层 |
[align=center]19[/align] | ProfileDALFactory | ProfileDAL的工厂类(反射创建ProfileDAL) |
[align=center]20[/align] | SQLProfileDAL | SQL Server 的Profile Providers 做用户状态管理,包括购物车等 |
[align=center]21[/align] | SQLServerDAL | SQLServer数据访问层 |
[align=center]22[/align] | TableCacheDependency | 缓存依赖实现类 |
由于整体已经有22个项目,所以,对于初学者一看就晕了,所以,我做了分解,可以大体上分几块去理解。
[align=center]序号[/b][/align] | [align=center]项目名称[/b][/align] | [align=center]描述[/b][/align] |
[align=center]1[/align] | WEB | 表示层 |
[align=center]2[/align] | Model | 业务实体 |
[align=center]3[/align] | BLL | 业务逻辑层 |
[align=center]4[/align] | DALFactory | 数据层的抽象工厂 |
[align=center]5[/align] | IDAL | 数据访问层接口定义 |
[align=center]6[/align] | SQLServerDAL | SQLServer数据访问层 |
[align=center]7[/align] | OracleDAL | Oracle数据访问层 |
[align=center]8[/align] | DBUtility | 数据库访问组件基础类 |
[align=center]9[/align] | CacheDependencyFactory | 缓存依赖类的工厂类 |
[align=center]10[/align] | ICacheDependency | 缓存依赖类接口 |
[align=center]11[/align] | TableCacheDependency | 缓存依赖实现类 |
[align=center]12[/align] | IBLLStrategy | 同步/异步处理策略接口(实现在bll根据配置反射选择) |
[align=center]13[/align] | MessagingFactory | 异时处理消息队列的抽象工厂 |
[align=center]14[/align] | IMessaging | 异时处理消息队列接口定义 |
[align=center]15[/align] | MSMQMessaging | 异时处理消息队列的实现 |
[align=center]16[/align] | Profile | Profile的数据访问层 |
[align=center]17[/align] | ProfileDALFactory | ProfileDAL的工厂类(反射创建ProfileDAL) |
[align=center]18[/align] | IProfileDAL | Profile的数据访问层接口定义 |
[align=center]19[/align] | OracleProfileDAL | Oracle的Profile Providers 做用户状态管理 |
[align=center]20[/align] | SQLProfileDAL | SQL Server 的Profile Providers 做用户状态管理 |
[align=center]21[/align] | Membership | Membership认证和授权管理 |
[align=center]22[/align] | OrderProcessor | 后台处理进程,处理订单队列 |
[/b]
3[/b].Petshop 4中的设计模式[/b]:
工厂模式[/b]:
首当其冲的就是工厂模式,很容易就可以看出来,也是应用最多的。
DALFactory:数据访问层的抽象工厂(决定创建哪种数据库类型的数据访问层。可以选择:SQLServer,Oracle)
CacheDependencyFactory:缓存依赖类的工厂类。(创建具体表的缓存依赖)
MessagingFactory :异时处理消息队列的抽象工厂(反射创建具体的异时处理类)
ProfileDALFactory:ProfileDAL的工厂类(反射选择创建Oracle 和SQL Server的 ProfileDAL)
策略模式: [/b]IorderStrategy[/b]
[align=center][/align]
[align=center]
[/align]
中介模式[/b]
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 PetShop4架构与技术分析
- Microsoft.NET PetShop4架构与技术分析
- Microsoft.NET PetShop4架构与技术分析
- 大型网站技术架构-核心原理与案例分析之缓存01
- 读书笔记之 大型网站技术架构(核心原理与案例分析)
- <<App研发录:架构设计、Crash分析和竞品技术分析>>读书笔记
- Microsoft .NET PetShop 4.0 架构与技术分析(四)
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析(zhuan)
- Microsoft .NET Pet Shop 4 架构与技术分析
- 读-李智慧-大型网站技术架构:核心原理与案例分析
- Microsoft .NET Pet Shop 4 架构与技术分析
- 学习笔记5:《大型网站技术架构 核心原理与案例分析》之 瞬时响应:网站的高性能架构
- 淘宝,京东,苏宁易购技术架构(路线)分析和比较
- 学习笔记8:《大型网站技术架构 核心原理与案例分析》之 随需应变:网站的可扩展架构
- 把书读薄:大型网站技术架构-核心原理与案例分析(第四篇 架构师)
- [笔记] 大型网站技术架构——核心原理与案例分析 [三]
- PetShop4架构设计分析(二)
- PetShop4架构设计分析(六)
- Microsoft .NET Pet Shop 4 架构与技术分析