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

Microsoft .NET PetShop 4.0 架构与技术分析

2011-01-16 19:48 585 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: