您的位置:首页 > 运维架构

PetShop 4.0 详解(Word)(转)

2008-04-08 19:51 281 查看
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 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

后台处理进程,处理订单队列



3Petshop 4中的设计模式

工厂模式:

首当其冲的就是工厂模式,很容易就可以看出来,也是应用最多的。

DALFactory:数据访问层的抽象工厂(决定创建哪种数据库类型的数据访问层。可以选择:SQLServer,Oracle)

CacheDependencyFactory:缓存依赖类的工厂类。(创建具体表的缓存依赖)

MessagingFactory :异时处理消息队列的抽象工厂(反射创建具体的异时处理类)

ProfileDALFactory:ProfileDAL 的工厂类(反射选择创建 Oracle 和 SQL Server 的 ProfileDAL)

策略模式:
IorderStrategy




中介模式

CategoryDataProxy ItemDataProxy ProductDataProxy

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: