PetShop 4.0学习--体系架构

转载 2007年10月11日 14:01:00
 

PetShop 4.0学习--体系架构

完成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所示的体系架构中难以区分数据存储和对象模型属于哪个层,但是通常认为,数据存储隶属于数据访问层,对象模型隶属于业务逻辑层。


<script type="text/javascript"><!-- google_ad_client = "pub-9367073976621515"; google_ad_width = 728; google_ad_height = 15; google_ad_format = "728x15_0ads_al_s"; //2007-09-20: 页面内容低部广告 google_ad_channel = "7130072136"; google_color_border = "F7F7F4"; google_color_bg = "F7F7F4"; google_color_link = "0000FF"; google_color_text = "0000FF"; google_color_url = "0000FF"; //--> </script> 从以上体系架构可以看出,PetShop 4.0具有很好的高内聚、低耦合特征,同时,易于实现扩展和维护。也比较适合于多人并行开发,有助于提高开发效率。 <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <iframe width="728" scrolling="no" height="15" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9367073976621515&amp;dt=1192082267046&amp;lmt=1192082247&amp;prev_fmts=336x280_as&amp;format=728x15_0ads_al_s&amp;output=html&amp;correlator=1192082266796&amp;channel=7130072136&amp;url=http%3A%2F%2Fwww.pconcool.com%2Farticle.aspx%3Fid%3D6640&amp;color_bg=F7F7F4&amp;color_text=0000FF&amp;color_link=0000FF&amp;color_url=0000FF&amp;color_border=F7F7F4&amp;ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fcomplete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26client%3Dfirefox%26rls%3Dorg.mozilla%3Azh-CN%3Aofficial%26q%3Dpetshop%2B4.0%25E6%2595%2599%25E7%25A8%258B%26suggest%3D0%26sa%3DX%26oi%3Dcjkrefinements%26ct%3Dresult%26cd%3D1&amp;cc=100&amp;ga_vid=1997012257.1192082267&amp;ga_sid=1192082267&amp;ga_hid=974465868&amp;flash=9&amp;u_h=1024&amp;u_w=1280&amp;u_ah=1024&amp;u_aw=1227&amp;u_cd=32&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;u_nplug=11&amp;u_nmime=25" name="google_ads_frame"></iframe>

.NET Framework的结构体系

因为工作需要使用到.net,也学习了一段时间,但是对于整体的体系不是太清楚,在网上找到2个比较好理解的结构图 这是.net的体系图,从这个图上可以看到,ASP.NET,Windows For...
  • csharpwys
  • csharpwys
  • 2017年04月27日 09:37
  • 251

基于PetShop的数据可视化网站(一):基本结构

项目需要制作一个数据可视化网站,本人从零基础开始进行学习以及实现,这篇BLOG对所学的内容进行简单的总结。...
  • maoyushiren
  • maoyushiren
  • 2016年02月04日 16:29
  • 190

如何学习才能快速成为ios开发高手--ios知识架构全方位探讨

学习ios开发,从哪儿学起?都要学哪些知识?如何才算掌握或精通ios开发?要全面掌握ios开发技术,需要学习和掌握下列几方面的知识和技巧: 1.开发语言:Objective-C或Swift。...
  • xotty
  • xotty
  • 2016年09月22日 11:03
  • 829

高等数学体系结构

说实话,知道这些没有任何用处。难不难也看个人的喜欢和思维习惯,有的人学代数就是很难但学分析会觉得简单,有的人又正好相反。简单地说一下;数学中有“三低三高”之说,也就是指分析、代数和几何三个分支,其中三...
  • zhang11wu4
  • zhang11wu4
  • 2015年09月30日 08:57
  • 1621

J2EE的体系架构——J2EE

J2EE是Java2平台企业版(Java 2 Platform,Enterprise Edition),核心是一组技术规范与指南,提供基于组件的方式来设计、开发、组装和部署企业应用。J2EE使用多层分...
  • dandanzmc
  • dandanzmc
  • 2014年06月01日 07:40
  • 35878

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

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

架构师成长之路(5)--如何获取知识(方法)

要成为优秀合格的架构师,必须具备前瞻性的眼光和系统性的思考能力。而拥有这些能力的前提是你必须完善自己的知识体系。...
  • hguisu
  • hguisu
  • 2015年12月24日 11:00
  • 43551

JavaEE体系架构概述

闲的蛋痛,复习下。 1.java web应用的缺陷 2.什么是企业级应用 3.javaee体系平台核心思想 4.ejb组件和容器 5.pojo与轻量级框架 javaweb应用的缺陷...
  • www19940501a
  • www19940501a
  • 2014年03月09日 23:15
  • 1931

【笔记】JAVA整体体系结构

温春水视频笔记 Web基础 html: 共享信息。    只要看到信息,不用拷贝过来-->贝尔实验室发明 javaScript:使html中动态元素更具有规则,验证 CSS(Cascading Sty...
  • Angiexia
  • Angiexia
  • 2014年03月12日 09:44
  • 2802

基于ADMEMS的软件体系架构设计

发现距离上一篇博文之后,沉寂了不少时日,好久没写文章了;这段时间以来一直比较忙,为着工作、面试(其实也没面几家)、试用期、新技术新业务;本打算写写就移动互联网方面的开发写写心得、总结,但碍于周末还要上...
  • webwalker
  • webwalker
  • 2013年04月14日 09:37
  • 1145
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PetShop 4.0学习--体系架构
举报原因:
原因补充:

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