.Net Petshop详解(二): petshop三层结构之DataTier

转载 2006年05月29日 10:54:00
交互的三层综述
 
在前面的文章中,我们丛整个系统的角度了解了petshop的三层部署结构物理上的一个概貌,没有从应用程序的角度来说明是如何划分的,也不清楚数据展示层,中间层,数据层是如何交互的。为了更好的说明这个三层的结构以及每一层的具体细节问题,也让大家对整个应用有一个walkthrough,在这里我将说明从系统的角度来看(见参考图1),顾客在购物的过程中,系统的三层是如何的工作以及如何的交互。这个东西有点象UML里面的实例情景故事,对需求和分析的进一步是大有帮助的。

 

从这个情景中,我们可以很清晰的了解到Internet Customer在购物时系统的运作情形。首先通过数据展示层的用户交互界面Cart.aspx页面输入顾客购买的商品以及数量,然后这些购物清单由后台的应用程序(cart.aspx.cs)做相应的预处理(如安全验证,校验,数据的格式化等等),接着调用中间件(在程序结构里面就是一些.NET Assembly,封装了购物的商业逻辑),最后通过数据访问接口来更新数据库里面的数据(数据层)。
 
数据层(Database)
 
.NET Petshop的数据库并不是十分的庞大,总共有12个用户表和23个存储过程。Petshop数据库里面存储的是用户数据,帐号数据,产品数据,用户配置数据,订单数据,库存数据以及供应商的数据。应用程序访问数据库的数据并不是直接的与数据库表打交道,而是通过存储过程的运行来获取所需要的数据。这样的设计有一个好处就是,避免了频繁的表操作,而通过运行在服务器端的存储过程可以极大的提高运作效率和提升访问数据的速度,同时也很好的屏蔽了数据库表的逻辑,使得数据库访问变成了数据库提供的服务访问。当然,也有人指责说这些存储过程迁移性是值得怀疑的。
下面我将通过表格把这些数据库的基本表列出来(见表1),并一一做说明,希望对大家深入的理解有帮助。

表名称
备注信息
Account
基本用户信息。
BannerData
存储的是系统界面的banner图片的设置信息。
Category
宠物的类别目录表(比如鱼类,狗类等等)。
Inventory
宠物产品的存货信息。
Item
单个产品的详细信息。
LineItem
订单的每一项的详细信息,包括产品名称和数量,价格等。
Orders
用户购物的订单,一个订单可以包括多项LineItem
OrderStatus
订单的状态
Product
宠物的产品列表,一条Product可能包括多个Item
Profile
用户配置表,用于记录他们的favorites
Signon
用户帐号登陆表,因为常用,故从Account独立出来。
Supplier
供应商信息。

 
通过上表我们知道了petshop数据库的数据库表的一些信息,但是这些表之间到底是一种什么样的关系呢?关心数据库建模和设计的人可能对这个问题比较感兴趣。在这里,我将给出图表(图2)说明这些数据库表之间的关系。图2中列出了这些表之间的关系和主键信息。

 

技巧:其实对于从事过数据库建模和设计的人都知道,得到上面的数据库模型图形并不是一件很困难的事情。正如我们前面提到的一样,我们可以用Visio做工程反转就可以得到上面这么美观的设计模型图了。同时,我们也可以在模型图中做修改设计,可以马上应用到你的物理数据库,使其保持同步。
 
说完了基本的数据库表,接下来我们看看存储过程。用微软的话说,只有设计称存储过程,才算是”cleaner separation of code from the middle-tier”,我个人觉得这样做是很好的。同样的,我把它列在一个表格里(表2)。
 

存储过程名称
备注信息
upAccountAdd
增加一个帐号。
upAccountGetAddress
获取用户的地址,主要用于下订单时注册地址与送货地址不一。
upAccountGetDetails
获取帐号的详细信息。
upAccountLogin
用户登陆验证。
upAccountUpdate
更新用户帐号。
upCategoryGetList
获取某个类别的产品列表。
upInventoryAdd
增加指定的项到存活信息。
upInventoryGetList
获取存货列表。
upItemAdd
增加一项产品。
upItemGetDetails
获取指定产品项的详细信息。
upItemGetList
获取某一特定类别的产品的具体项目列表。
upItemGetList_ListByPage
功能与上同,但是分页获取数据。
upOrdersAdd
增加一项订单。
upOrdersGet
获取某一订单的信息。
upOrdersGetDetails
获取某一订单的详细信息。
upOrderStatusGet
获取订单的状态。
upProductAdd
增加一类别产品。
upProductGetList
返回某类产品的列表。
upProductGetList_ListByPage
与上同,但是分页获取结果数据。。
upProductSearch
产品搜索。
upProductSearch_ListByPage
与上同,但是翻页获取结果数据。
upProfileGetBannerOption
Banner的配置信息。
upProfileGetListOption
获取用户配置信息。

 
2petshop存储过程列表
 
在这些存储过程里面使用了SQL Server2000OpenXML的特性来代替传统的行集结果,使用在非常频繁的数据访问操作,可以减轻系统的负担。
好了,petshopDatatier就说到这里了,在后面的文章我会就一个数据访问的实例再次解说存储过程的执行。接下来我将就中间层做介绍了。
 

相关文章推荐

在PetShop 4.0中ASP.NET缓存的实现详解

PetShop作为一个B2C的宠物网上商店,需要充分考虑访客的用户体验,如果因为数据量大而导致Web服务器的响应不及时,页面和查询数据迟迟得不到结果,会因此而破坏客户访问网站的心情,在耗尽耐心的等待后...

Microsoft .NET PetShop 4.0 架构与技术分析(七)

六 PetShop之表示层设计 表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心。正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的。一件交付给客户使...

J2EE Java Pet Store 与 .NET PetShop

[转]J2EE Java Pet Store 与 .NET PetShop 分类: 转载收藏 软件开发 2008-03-12 10:01 1695人阅读 评论(2) 收藏 举报 ...
  • lionzl
  • lionzl
  • 2012年05月23日 16:07
  • 972

结合高性能web站点构架话题在asp.net中petshop缓存的探究

缓存的方式在计算机 在高性能的web站点构中,缓存的方式

Microsoft .NET PetShop 4.0 架构与技术分析

1.框架的概要介绍微软刚推出了基于ASP.NET 2.0 下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0 的好范例啊,大家都知道,一直以来,在.NET ...

PetShop三层结构分析

  • 2008年03月05日 20:40
  • 20KB
  • 下载

仿petshop三层结构简单实现

  • 2009年04月30日 16:15
  • 147KB
  • 下载

petshop4.0 详解之二(数据访问层之数据库访问设计)

在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的概念。从本部分开始,我将依次对各层进行代码级的分析,以求获得更加细致而 深入的理解。在PetShop 4.0中,由于引入了ASP....

.net PetShop购物程序V1.5.2

  • 2006年02月23日 09:05
  • 682KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net Petshop详解(二): petshop三层结构之DataTier
举报原因:
原因补充:

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