PetShop 4.0 详解(Word)(转)
PetShop是工厂模式三层架构的微软发布的例子,具有参考价值
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
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
posted on 2008-04-08 19:51 黄兆张's Blog 阅读(2587) 评论(2) 编辑 收藏 举报