PetShop 4.0学习--体系架构

转载 2011年01月16日 20:01:00

   完成PetShop 4.0应用程序安装之后,在系统程序菜单中将新增一个Microsoft .NET Pet Shop 4.0,其中包括指向PetShop 4.0解决方案文件PetShop.sln的快捷项。单击该项,使Visual Studio 2005加载PetShop 4.0解决方案。图18-13所示显示了加载后Visual Studio 2005解决方案资源管理器窗口的截图。

在解决方案资源管理器中共包括22个项目,其中一个Web站点项目,21个类库项目。表18-1所示对这些项目进行了简要介绍。

图18-13  解决方案资源管理器

 

表18-1                         解决方案PetShop中的项目说明列表

项 目 名 称

说    明

C:/../Web/

一个Web站点项目,其中包括ASP.NET文件、用户控件、图片、配置文件、主题文件等

ICacheDependency、CacheDependencyFactory和TableCacheDependency

这3个项目使用简单工厂模式实现SQL数据缓存依赖功能的应用。ICacheDependency项目中包括接口 IPetShopCacheDependency,实现简单工厂模式中的抽象接口。CacheDependencyFactory项目用于实现简单工厂模 式中的工厂类。TableCacheDependency项目用于实现工厂模式中的具体产品类,其实现了IPetShopCacheDependency 接口成员

IDAL、DALFactory、SQLServerDAL和OracleDAL

这些项目使用简化的抽象工厂模式和依赖注入技术实现了数据访问功能。IDAL项目中定义了多个接口,例 如,ICategory、IItem等。同时,每个接口定义了由应用需求而创建的成员方法。DALFactory项目用于实现工厂类。 SQLServerDAL项目用于实现当应用程序使用SQL Server数据库作为数据存储时,抽象工厂模式中的多个具体产品类,这些类均实现了IDAL中对应接口的成员方法。OracleDAL的实现与 SQLServerDAL类似,其仅当使用Oracle数据库作为数据存储时才调用

DBUtility

该项目中包括用于实现SQL Server和Oracle数据库访问功能的帮助类。其中SqlHelper类基于Microsoft Data Access Application Block for .NET

Model

该项目中的类用于实现业务实体,例如,表示宠物的ItemInfo、表示宠物类别的CategoryInfo等

IProfileDAL、ProfileDALFactory、SQLProfileDAL、和OracleProfileDAL

这些项目使用简化的抽象工厂模式和依赖注入技术实现了个性化用户配置功能的具体数据访问。IProfileDAL项目中包 括一个接口IPetShopProfileProvider,该接口中包括多个方法。ProfileDALFactory项目用于实现工厂类。 SQLProfileDAL项目用于实现当应用程序使用SQL Server数据库作为数据存储时,抽象工厂模式中的具体产品类,该类均实现了IProfileDAL中对应接口的成员方法。 OracleProfileDAL的实现与SQLProfileDAL类似,然而其仅当使用Oracle数据库作为数据存储时才调用

Profile

该项目实现了一个继承自ProfileProvider基类的用户配置提供程序PetShopProfileProvider

Membership

该项目实现了一个继承自MembershipProvider基类的成员资格提供程序OracleMembershipProvider,该类用于当应用程序使用Oracle数据库作为数据存储时,完成成员资格管理方面的数据访问

续表

项 目 名 称

说    明

IMessaging、MessagingFactory和MSMQMessaging

这些项目使用简化的抽象工厂模式实现订单的消息队列。IMessaging项目中实现了接口IOrder,其中包括 Receive、Send等方法。MessagingFactory用于实现工厂类。MSMQMessaging项目中实现一个类Order,该类实现了 接口IOrder中定义的成员方法,其用于从消息对列中接收和发送订单

BLL、

实现应用程序业务逻辑,例如,管理宠物类别、单个宠物、宠物列表、订单处理等

IBLLStrategy

为实现同步和异步订单处理功能而定义接口IOrderStrategy。该接口中定义了Insert方法。IOraderStrategy与BLL项目中的Order、OrderAsynchronous和OrderSynchronous类共同创建应用了策略模式

OrderProcessor

该项目实现了一个控制台应用程序,用于处理来自消息队列的异步订单

 

表18-1简要介绍了PetShop 4.0包括的22个项目。在PetShop 4.0创建过程中,大量应用了ASP.NET 2.0的新增功能,例如,用户配置、成员资格管理、主题、SQL数据缓存依赖、数据访问等。另外,还包括各种设计模式应用、消息队列、同步/异步处理等。

为帮助读者更快更好地了解PetShop 4.0应用程序的实现,下面首先从体系架构分析入手,以便对应用程序的实现建立概括性了解。

体系架构简介

   企业级应用程序功能都比较复杂,因此,多数采用分层方式进行开发。通常情况下,应用程序的逻辑功能可以分为外观内容表现、数据访问、自身功能逻辑等部分。 所谓“分层”是指根据这些逻辑功能,将应用程序划分为不同的模块加以实现。此处的“模块”就是指“层”。每个层实现应用程序一个方面的逻辑功能。通过层与 层之间的交互,形成应用程序体系架构,从而实现适应于企业级应用的,功能复杂的应用程序。

   最常见的体系架构将应用程序实现划分为以下3个层:表示层、业务逻辑层和数据访问层。有关三层体系架构的基本概念,读者可参考“10.5.1 N层应用程序概述”一节。除三层体系架构之外,还出现过其他N层(N>3)体系架构。无论体系架构如何变化,都离不开三层体系架构的指引,其他N层 开发都是基于三层架构的扩展形式。

   采用软件分层开发的核心目的是为适应企业级应用日益增长的复杂度和灵活性等要求。在此核心目的指引下,通过软件分层高内聚、低耦合原则,实现易于扩展、维 护和重用的要求,同时,必须有利于开发者分工,从而提高开发效率等。然而,这种方法也有不足,例如,开发难度增大,程序执行效率有所降低等。

   PetShop 4.0作为企业级应用开发经典范例,在以上这些方面都有所考虑。随着本章内容的逐渐深入,读者将慢慢对这些内容有所了解。下面具体探讨一下PetShop 4.0的体系架构。图18-14所示显示了该应用程序体系架构图。

PetShop 4.0采用了典型的三层体系架构,将应用程序实现分为表示层、业务逻辑层和数据访问层。

  表示层

      PetShop 4.0的表示层由以下几个部分组成:一是实现常见用户界面的部分,例如,宠物类别信息、单个宠物详细信息列表、搜索等。二是实现成员管理和用户配置的部 分,例如,用户登录/退出、注册新用户、维护用户信息、购物车、意向清单等。三是现SQL数据缓存依赖的部分。这主要是一些针对Category、 Item和Product表的缓存依赖内容。四是实现处理来自消息队列的异步订单,这部分实现包含在OrderProcessor控制台程序中。以上这些 内容的实现主要利用了ASP.NET窗体、用户控件、母版页、Wizard控件、登录系列控件、各种类等。

图18-14  PetShop 4.0体系架构

 

  业务逻辑层

      业务逻辑层包含宠物商店中与核心业务相关的逻辑。例如,Category、Product、Inventory、Items和Cart类。以Cart类为 例,该类实现购物车功能,其中包括获取购物车商品数量、设置单个宠物购买数量、计算总价、添加/删除宠物等多个方法。另外,业务逻辑层中还包括实现订单处 理的Order。实现订单处理有两种方式,一种是同步订单处理,另一种是异步订单处理。

  数据访问层

      数据访问层中包含与数据存储进行交互的多种组件。这些组件在功能上和业务逻辑层相互独立。PetShop 4.0的数据访问层包括以下几个部分:一是实现针对Oracle数据库的成员资格提供程序(针对SQL Server数据库的成员资格提供程序为ASP.NET 2.0内置)。二是实现自定义用户配置提供程序,包括针对Oracle和SQL Server两种类型。三是实现部分业务逻辑所需要的数据访问功能,例如,Item、Category、Order、Inventory、Product 类等。四是实现消息队列访问功能。

另外,PetShop 4.0应用程序体系架构中还包括数据存储和对象模型。

  数据存储

      PetShop 4.0支持多种数据存储方式,例如,SQL Server 2000/2005、Oracle 10g。如果需要将数据存储在其他类型数据源中,则必须自定义数据访问层。另外,为了实现异步订单处理,PetShop 4.0中使用了消息队列MSMQ。

  对象模型

      对象模型也称为业务实体。主要用于表示数据存储中的持久对象。简单地说,业务实体可以模拟为一个或多个逻辑表,内容可能来自于一个或者多个数据库中物理表 中的字段。利用业务实体提供的方便,PetShop 4.0的3个层能够以共享方式访问、表示数据库记录。在PetShop 4.0中建立了多个业务实体,它们都包含在Model项目中,例如,表示客户信息的AddressInfo类、表示单个宠物的ItemInfo类,还有 CartItemInfo、CategoryInfo、CustomProfileInfo等。

虽然从图18-14所示的体系架构中难以区分数据存储和对象模型属于哪个层,但是通常认为,数据存储隶属于数据访问层,对象模型隶属于业务逻辑层。

从以上体系架构可以看出,PetShop 4.0具有很好的高内聚、低耦合特征,同时,易于实现扩展和维护。也比较适合于多人并行开发,有助于提高开发效率。

PetShop 4.0学习--体系架构

 PetShop 4.0学习--体系架构完成PetShop 4.0应用程序安装之后,在系统程序菜单中将新增一个Microsoft .NET Pet Shop 4.0,其中包括指向PetShop 4.0...
  • laolaowhn
  • laolaowhn
  • 2007年10月11日 14:01
  • 1611

PetShop5.0官网源代码下载

转 http://www.52rs.net/ArticleView.aspx?gID=b96c547b-e93b-47f4-b694-279f27566aff 基于.NET Framework ...
  • huanglei0809
  • huanglei0809
  • 2013年09月30日 01:32
  • 2275

浅析对PetShop4.0的工厂模式的理解

最近几天在看被传为经典的PetShop4.0,感觉收获还是挺大
  • u013240481
  • u013240481
  • 2014年06月09日 17:37
  • 491

NBearLite PetShop 4.0示例源码

该示例使用NBearLite v1.0.1.2,基于.Net PetShop 4.0的源码修改。使用NBearLite重写了等价功能的BLL、Profile、Membership模块的数据访问部...
  • teddyma
  • teddyma
  • 2008年01月09日 14:31
  • 580

以PetShop为样本代码,阐述如何通过改造它实现一个更合理实用的三层架构。

原标题:.NET三层架构的改进以及通用数据库访问组件的实现 前言 微软的三层架构示例项目PetShop是很多.NET开发人员学习项目开发的经典样本代码,很多人都是直...
  • lishimin1012
  • lishimin1012
  • 2014年01月16日 16:26
  • 1095

你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们

一叶障目 .NET平台上的分层架构(很多朋友称其为“三层架构”),似乎是一个长盛不衰的话题。经常看到许多朋友对其进行分析、探讨、辩论甚至是抨击。笔者在仔细阅读了大量这方面文章后,认为许多朋友在分层架...
  • wgz_wlky
  • wgz_wlky
  • 2016年04月01日 01:19
  • 480

PetShop 4.0 体系结构学习

        PetShop4.0采用了多层应用程序体系结构,并且应用了“反射注入”技术,简间抽象工厂模式,策略模式和外观模式,从而构建了一个高内聚,低耦合的,易于扩展和维护的,适合于团队开发的小型...
  • lhtsimba
  • lhtsimba
  • 2008年10月13日 15:02
  • 292

.NET学习经典例子:.NET PetShop和Duwamish简单介绍

.NET PetShop和Duwamish简单介绍相信大家一定听说过有名的"宠物店大战",没错,本文的主角之一就是获胜方.NET PetShop,微软号称以27倍的速度和1/4的代码量遥遥领先于基于J...
  • lbh9158
  • lbh9158
  • 2006年11月21日 18:54
  • 1062

Petshop 4.0学习-MasterPage.master文件

虽然母版页和内容页功能强大,但是其创建和应用过程并不复杂。本节和下一节将以创建如图1所示示例为例,向读者详细介绍,使用Visual Stuido 2005创建母版页和内容页的方法以及相关知识。本节的重...
  • shanliwa
  • shanliwa
  • 2007年08月31日 14:51
  • 1270

PetShop 4.0

PetShop 4.0 The new version came out:http://msdn.microsoft.com/library/default.asp?url=/library/en-u...
  • sleeper520
  • sleeper520
  • 2007年07月12日 12:14
  • 260
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PetShop 4.0学习--体系架构
举报原因:
原因补充:

(最多只允许输入30个字)