Microsoft.NET PetShop4架构与技术分析

Microsoft.NET PetShop4架构与技术分析
1.项目概述与架构分析
微软刚推出了基于ASP.NET2.0下的PetShop4,该版本有了一个全新的用户界面。是研究ASP.NET2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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附带的特性,构建了一个灵活的最佳实践的应用程序。

 Microsoft.NET PetShop4架构与技术分析

他们利用了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.整体架构:

Microsoft.NET PetShop4架构与技术分析
数据库:(暂略)

项目列表:从整体可以看出,Pet Shop 4的项目体系已经很庞大,考虑的方面也较3.0更全面复杂。

Microsoft.NET PetShop4架构与技术分析

 

序号

项目名称

描述

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

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

 

Microsoft.NET PetShop4架构与技术分析

 

 

3.Petshop 4中的设计模式

工厂模式:

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

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

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

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

ProfileDALFactoryProfileDAL的工厂类(反射选择创建Oracle 和SQL Server的 ProfileDAL)

 

策略模式: IorderStrategy

 

Microsoft.NET PetShop4架构与技术分析 

 

中介模式

CategoryDataProxy ItemDataProxy  ProductDataProxy

 

 

 Microsoft.NET PetShop4架构与技术分析

 

暂时只看了这么多,以后有时间继续分解,如果你有不同的见解或经验,也请写下来,好让大家来共同学习,共同探讨,共同进步。

 

(作者:李天平  转载请注明)

 

具体介绍可以参看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://javaforall.net/181312.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言fsync函数,c – 如何在一个流上做fsync?

    c语言fsync函数,c – 如何在一个流上做fsync?不幸的是,查看标准没有提供basic_filebuf或任何basic_[io]?fstream类模板,以允许您提取底层的操作系统文件描述符(以fileno()为CstdioI/O的方式).也没有一个open()方法或构造函数将这样的文件描述符作为参数(这将允许您使用不同的机制打开文件并记录文件句柄).有basic_ostream::flush(),但是我怀疑这实际上并不调用fsyn…

    2022年5月23日
    41
  • 进程调度算法c语言实现_进程调度算法有哪些

    进程调度算法c语言实现_进程调度算法有哪些对一个非抢占式多道批处理系统采用以下算法的任意两种,实现进程调度,并计算进程的开始执行时间,周转时间,带权周转时间,平均周转时间,平均带权周转时间1.先来先服务算法2.短进程优先算法*3.高响应比优先算法三、设计思想每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间…

    2022年9月29日
    2
  • ORACLE数据库数据的备份与恢复

    ORACLE数据库数据的备份与恢复数据备份恢复在数据库管理中至关重要,今天,总结一下数据库备份与恢复的方案,需要注意的方面和实际操作!、

    2022年7月1日
    24
  • Oracle函数——TO_DATE[通俗易懂]

    Oracle函数——TO_DATE[通俗易懂]TO_DATE含义:将具有固定格式的字符串类型的数据转化为相对应的Date类型数据,官网解释如下图使用方法TO_DATE("需要转换的字符串","日期格式&quot

    2022年7月3日
    40
  • html实现滑动解锁_js滑动解锁(原创)

    html实现滑动解锁_js滑动解锁(原创)varbox=document.querySelector(“#box”);varcontent=document.querySelector(“#content”);varshadow=document.querySelector(“#shadow”);vartip=document.querySelector(“#tip”);varblock=document.q…

    2022年6月18日
    21
  • 张耀阳[通俗易懂]

    张耀阳[通俗易懂]2006.9.17 18:39500)this.style.width=500;”> 张耀阳——杀出个恶名  在他演过的五十几部电影中,有四十多部他扮演了古惑仔,仅在[古惑仔]系列中,张耀阳就“死去活来,阴魂不散”。“乌鸦”丧命后,他又借尸还魂摇身变做“东兴耀阳”,演反派演的把自己名字也搭进去,这真是连他本人都始料未及的

    2025年11月15日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号