Microsoft .NET Pet Shop 4 架构与技术分析(转)
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
转载于:https://www.cnblogs.com/erichzhou/archive/2007/03/29/693182.html
Microsoft .NET Pet Shop 4 架构与技术分析(转)相关推荐
- Microsoft .NET Pet Shop 4 架构与技术分析
1.项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面.是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java ...
- Microsoft .NET PetShop 4.0 架构与技术分析(七)
六 PetShop之表示层设计 表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心.正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的.一件交付给客户使用 ...
- Microsoft .NET Pet Shop 4.0 学习之旅(三) - 项目的引用关系2
Microsoft .NET Pet Shop 4.0 学习之旅(三) 项目的引用关系2 <?xml:namespace prefix = o ns = "urn:schemas-mi ...
- Microsoft .NET Pet Shop 4.0 学习之旅(二) - 项目的引用关系1
Microsoft .NET Pet Shop 4.0 学习之旅(二) 项目的引用关系1 <?xml:namespace prefix = o ns = "urn:schemas-mi ...
- 一步一步安装 Microsoft .NET Pet Shop 4.0
安装的前提条件 安装了 IIS 5.1/6/7(可选), SQL Server 2000/SQL Server 2005 /Oracle 10g, Visual Studio 2005/2008/2 ...
- Microsoft .NET Pet Shop 4
msdn http://msdn.microsoft.com/zh-cn/library/aa479070.aspx csdn http://blog.csdn.net/younther/articl ...
- Microsoft.NET Pet Shop 4.0各个模块之间的联系
第一部份:工厂模式 一.项目名称及描述:(实现步骤为:4-3-6-5-2-1) 1.WEB=表示层 2.BLL=业务逻辑层 3.IDAL=数据访问层接口定义 4.Model=业务实体 5.DALFac ...
- 阿里云、Amazon、Google云数据库方案架构与技术分析
http://www.infoq.com/cn/articles/cloud-database-schema-and-technical-analysis 一切都会运行在云端」. 云时代早已来临,本文 ...
- ASP.NET---- Microsoft .NET Pet Shop 3.x(-)
Microsoft .NET Pet Shop 3.x: .NET Pet Shop 的设计模式与体系结构 摘自微软MSDNhttp://www.microsoft.com/china/MSDN/li ...
最新文章
- 【建站系列教程】1、前言
- C 语言编程 — 结构化程序流的汇编代码与 CPU 指令集
- 微信小程序设置云函数使用的环境
- 标题要在3~5字之间-三年总结
- OpenCV级联识别器cascade recognizer的实例(附完整代码)
- 分享百度文库提交成功的八大因素
- Linux 给Qt应用软件创建图标启动
- java光标位置无效_java - java.sql.SQLException:无效的光标位置 - 堆栈内存溢出
- html 链接 id属性_HTML id属性
- 数据库:mysql内置功能-函数
- 安川机器人位置变量要素_安川机器人变量分配(维修)
- 力扣题目——103. 二叉树的锯齿形层序遍历
- Eclipse JEE Mars 2 配置 WSO2 ESB 5.0.0 环境
- OpenCV4学习笔记(27)——轮廓的最大内接圆
- 【HAVENT原创】Firebase 相关操作及代码示例
- 从《达芬奇的人生密码》看艺工交叉
- win10无法识别的usb设备前一个设备不正常的解决方法
- 《超算竞赛导引》笔记
- mac 备份android 手机,Mac怎么备份_Windows怎么备份_iOS怎么备份_安卓怎么备份-太平洋IT百科手机版...
- Flooded! UVA - 815(简单计算 -洪水)
热门文章
- Mysql: SQL JOIN 子句详解
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)
- java channelexec_java-使用SSH exec通道调用Shell脚本,但忽略对其他Shell脚本的调用
- c++ 代码_C代码对汇编代码中声明的全局符号的访问方式详解
- oracle 数据库问题,ORACLE数据库常见问题汇总,oracle常见问题汇总
- ios markdown 解析_Shortcuts 教程:正则表达式修改 Markdown 链接
- Qt 图形视图框架中的事件处理和传播
- 和搜狗输入法快捷键冲突_电脑输入法怎么设置成搜狗双拼?
- c++ properties_Java怎么从这四个位置读取配置文件Properties(普通文件系统-classpath-jar-URL)
- 洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes