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

1.项目概述与架构分析
微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NETJava之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NETJava的高下。用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。

日前微软推出了基于.NET Framework 2.0开发的Petshop 4。新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master PagesMembership,以及ProfileSqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.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.0Custom 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

OracleProfile 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

OracleProfile Providers

做用户状态管理

20

SQLProfileDAL

SQL Server Profile Providers

做用户状态管理

21

Membership

Membership认证和授权管理

22

OrderProcessor

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

 

 

 

3Petshop 4中的设计模式

工厂模式:

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

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

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

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

ProfileDALFactoryProfileDAL的工厂类(反射选择创建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

posted on 2006-04-17 21:21 【李天平】 阅读(1834) 评论(13)  编辑 收藏 收藏至365Key 所属分类: ASP.NET开发

评论

不错,学习的好资料!期待下篇  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-17 22:22 return_ff

嗯,写的通透明了。关注后续。  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-17 22:58 love coding

如果现在客户要加入统计的功能(用GRIDVIEW或其他列表控件显示出来),这些统计可能涉及到很多表。如果要天平兄在petshop下加入这些功能,你会怎么设计?  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 00:11 wind2

我在试着模拟PETSHOP的结构重定我以前的项目,有个不明白的地方就是,PETSHOP中大量使用了接口,这是为什么?是不是因为方便团队开发组件的使用。
  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 03:22 晓风残月

@wind2
OOP
中接口好处非常多,
一方面通过接口可以定义一种契约、协定关系,实现盖接口的类就必须实现这些协定,同时也对外界提供了具体类调用的统一接口,Petshop3/4数据访问层使用抽象工厂模式实现多数据库支持里面利用时,就是利用了接口这一特性,这样业务层只需要关心接口定义,不需要关心数据层具体实现是SQLServer还是Oracle
同时接口确实简化了开发复杂性,特别是团队开发时候,因为接口比具体类简单,一般只有行为和属性的定义,而没有实现细节,而且通过接口就可以实现同一个契约下的多个具体实现独立开发;
另外,有人说过,GoF23个设计模式,通篇都在讲面向接口编程,因此从某种程度上看,接口是设计模式的实现基础
......  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 09:04 Hurry

配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 未能使用提供程序“RsaProtectedConfigurationProvider”进行解密。提供程序返回错误信息为: 打不开 RSA 密钥容器。

源错误:


2: <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
3: <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
4: <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
5: <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
6: <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">


源文件: D:/Program Files/Microsoft/.NET Pet Shop 4.0/PrecompiledWeb/Web/web.config : 4

这啥意思  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 11:19 Stanley.P.H

请教:为什么petshop里面用了4DataBase,这样做的好处是什么?如何处理数据同步的问题呢?  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 12:35 zxWraith

貌似楼主安装petshop4.0过程不正常啊,怎么还有个空文件夹?
  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 17:34 高海东

  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-18 17:46 Terrylee

PetShop4.0很不错,值得去研究

还有外观模式的运用、依赖注入等  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-19 10:11 yekedong@gmail.com

我们几乎所有的项目都用petshop模式,现在出来4.0了,真是兴奋!
希望LTP兄继续深入,我每天都在关注。  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-21 01:18 tom8251

请教:对于"Profile的数据访问层"有点不解,profile项目里的PetShopProfileProvider.cs并不是对IProfileDAL项目里的IPetShopProfileProvider.cs,为何又叫Profile项目为"Profile的数据访问层"  回复
  

 

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-29 08:59 姚伟程

大哥 太谢谢你了
如果你在继续写细点 我就爱死你啦  回复

# re: Microsoft .NET Pet Shop 4 架构与技术分析 2006-04-17 22:07 Frank

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值