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
附带的特性,构建了一个灵活的最佳实践的应用程序。
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_bdasamppet401.gif)
他们利用了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.
整体架构:
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_bdasamppet409L.gif)
数据库
:(暂略)
项目列表
:从整体可以看出,Pet Shop 4
的项目体系已经很庞大,考虑的方面也较3.0
更全面复杂。
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_petshop.JPG)
项目分解
:
由于整体已经有22
个项目,所以,对于初学者一看就晕了,所以,我做了分解,可以大体上分几块去理解。
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_bdasamppet406.gif)
3
.Petshop 4
中的设计模式
:
工厂模式
:
首当其冲的就是工厂模式,很容易就可以看出来,也是应用最多的。
DALFactory
:数据访问层的抽象工厂(决定创建哪种数据库类型的数据访问层。可以选择:SQLServer
,Oracle
)
CacheDependencyFactory
:
缓存依赖类的
工厂类。(创建具体表的缓存依赖)
MessagingFactory
:
异时处理消息队列的
抽象工厂(反射创建具体的
异时处理类
)
ProfileDALFactory
:
ProfileDAL
的工厂类(
反射
选择
创建Oracle
和SQL Server
的 ProfileDAL)
策略模式:
IorderStrategy
![](http://images.cnblogs.com/cnblogs_com/ltp/1.JPG)
中介模式
CategoryDataProxy ItemDataProxy
ProductDataProxy
![](http://images.cnblogs.com/cnblogs_com/ltp/2.JPG)
具体介绍可以参看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
微软刚推出了基于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
附带的特性,构建了一个灵活的最佳实践的应用程序。
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_bdasamppet401.gif)
他们利用了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.
整体架构:
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_bdasamppet409L.gif)
数据库
:(暂略)
项目列表
:从整体可以看出,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 | 后台处理进程,处理订单队列 |
![](http://images.cnblogs.com/cnblogs_com/ltp/46234/o_bdasamppet406.gif)
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
相关文章推荐
- Microsoft .NET PetShop 4.0 架构与技术分析(七)
- Microsoft .NET PetShop 4.0 架构与技术分析(六)
- Microsoft .NET PetShop 4.0 架构与技术分析(五)
- Microsoft .NET PetShop 4.0 架构与技术分析(四)
- Microsoft .NET PetShop 4.0 架构与技术分析(二)
- Microsoft .NET Pet Shop 4.0 架构与技术分析
- Microsoft .NET PetShop 4.0 架构与技术分析(三)
- Microsoft .NET PetShop 4.0 架构与技术分析(一)
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析(转:李天平)
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析 (转,作者:李天平)
- Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析(转)
- 转载 Microsoft .NET Pet Shop 4 架构与技术分析
- Microsoft .NET Pet Shop 4 架构与技术分析