PetShop4.0架构分析

 
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
 
 
 
暂时只看了这么多,以后有时间继续分解,如果你有不同的见解或经验,也请写下来,好让大家来共同学习,共同探讨,共同进步。
 
(作者:李天平    转载请注明)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关键是系统架构和代码学习两方面,对初学和提高有很大帮助 petshop5.0比较大,代码已经解压出来 4.0和3.0没有解压出来,自行安装解压(需要SqlServer数据做连接或者在安装到数据库连接时直接拷贝出来) petshop5.0 基于.NET Framework 3.5 ------------ 使用LINQ to SQL改进数据访问层 PetShop.Model.DataContext.MSPetShop4DataContext 继承System.Data.Linq.DataContext PetShop.Model.ProductInfo与PetShop.Model.CategoryInfo实体类分别映射数据库PetShop.Model.ProductInfo其中的Category属性存在一对一的关系 PetShop.Model.CategoryInfo中的Products属性存在一对多的关系 使用WCF来提供RSS, web/FeedService.svc目录下 PetShop.SyndicationFeeds 并在UI层上做一些改进,如使用ASP.NET AJAX,ListView控件等。 在PetShop 5.0中引入了异步处理机制。 插入订单的策略可以分为同步和异步,两者的插入策略明显不同,但对于调用者而言,插入订单的接口是完全一样的,所以PetShop 5.0中设计了IBLLStrategy模块。 虽然在IBLLStrategy模块中,仅仅是简单的IOrderStategy,但同时也给出了一个范例和信息,那就是在业务逻辑的处理中,如果存在业务操作的多样化,或者是今后可能的变化,均应利用抽象的原理。或者使用接口,或者使用抽象类,从而脱离对具体业务的依赖。 不过在PetShop中,由于业务逻辑相对简单,这种思想体现得不够明显。 也正因为此,PetShop将核心的业务逻辑都放到了一个模块BLL中,并没有将具体的实现和抽象严格的按照模块分开。所以表示层和业务逻辑层之间的调用关系,其耦合度相对较高: PetShop4.0源代码 .NET Pet Shop4 应用程序的设计说明了构建企业 n 层 .NET 2.0 应用程序的最佳做法,这种应用程序可能需要支持各种数据库平台和部署方案。 .NET Pet Shop 4 项目的目标是: 工作效率:减少了 .NET Pet Shop 3 的代码数量 - 我们减少了近 25% 的代码。 利用 ASP.NET 2.0 的新功能 - 我们利用母版页、成员身份和配置文件,并设计出一个新的、吸引人的用户界面。 企业体系结构:构建一个灵活的最佳做法应用程序 - 我们实现了设计模式,以及表示层、业务层和数据层的分离。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值