日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

發(fā)布時間:2025/3/13 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net Petshop详解(二):petshop三层结构之DataTier 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

交互的三層綜述

?

在前面的文章中,我們叢整個系統(tǒng)的角度了解了petshop的三層部署結(jié)構(gòu)物理上的一個概貌,沒有從應(yīng)用程序的角度來說明是如何劃分的,也不清楚數(shù)據(jù)展示層,中間層,數(shù)據(jù)層是如何交互的。為了更好的說明這個三層的結(jié)構(gòu)以及每一層的具體細(xì)節(jié)問題,也讓大家對整個應(yīng)用有一個walkthrough,在這里我將說明從系統(tǒng)的角度來看(見參考圖1),顧客在購物的過程中,系統(tǒng)的三層是如何的工作以及如何的交互。這個東西有點象UML里面的實例情景故事,對需求和分析的進一步是大有幫助的。

圖1 .NET Petshop 架構(gòu)

?

從這個情景中,我們可以很清晰的了解到Internet Customer在購物時系統(tǒng)的運作情形。首先通過數(shù)據(jù)展示層的用戶交互界面Cart.aspx頁面輸入顧客購買的商品以及數(shù)量,然后這些購物清單由后臺的應(yīng)用程序(cart.aspx.cs)做相應(yīng)的預(yù)處理(如安全驗證,校驗,數(shù)據(jù)的格式化等等),接著調(diào)用中間件(在程序結(jié)構(gòu)里面就是一些.NET Assembly,封裝了購物的商業(yè)邏輯),最后通過數(shù)據(jù)訪問接口來更新數(shù)據(jù)庫里面的數(shù)據(jù)(數(shù)據(jù)層)。

?

數(shù)據(jù)層(Database)

?

.NET Petshop的數(shù)據(jù)庫并不是十分的龐大,總共有12個用戶表和23個存儲過程。Petshop數(shù)據(jù)庫里面存儲的是用戶數(shù)據(jù),帳號數(shù)據(jù),產(chǎn)品數(shù)據(jù),用戶配置數(shù)據(jù),訂單數(shù)據(jù),庫存數(shù)據(jù)以及供應(yīng)商的數(shù)據(jù)。應(yīng)用程序訪問數(shù)據(jù)庫的數(shù)據(jù)并不是直接的與數(shù)據(jù)庫表打交道,而是通過存儲過程的運行來獲取所需要的數(shù)據(jù)。這樣的設(shè)計有一個好處就是,避免了頻繁的表操作,而通過運行在服務(wù)器端的存儲過程可以極大的提高運作效率和提升訪問數(shù)據(jù)的速度,同時也很好的屏蔽了數(shù)據(jù)庫表的邏輯,使得數(shù)據(jù)庫訪問變成了數(shù)據(jù)庫提供的服務(wù)訪問。當(dāng)然,也有人指責(zé)說這些存儲過程遷移性是值得懷疑的。

下面我將通過表格把這些數(shù)據(jù)庫的基本表列出來(見表1),并一一做說明,希望對大家深入的理解有幫助。

表名稱

備注信息

Account

基本用戶信息。

BannerData

存儲的是系統(tǒng)界面的banner圖片的設(shè)置信息。

Category

寵物的類別目錄表(比如魚類,狗類等等)。

Inventory

寵物產(chǎn)品的存貨信息。

Item

單個產(chǎn)品的詳細(xì)信息。

LineItem

訂單的每一項的詳細(xì)信息,包括產(chǎn)品名稱和數(shù)量,價格等。

Orders

用戶購物的訂單,一個訂單可以包括多項LineItem

OrderStatus

訂單的狀態(tài)

Product

寵物的產(chǎn)品列表,一條Product可能包括多個Item

Profile

用戶配置表,用于記錄他們的favorites

Signon

用戶帳號登陸表,因為常用,故從Account獨立出來。

Supplier

供應(yīng)商信息。

?

通過上表我們知道了petshop數(shù)據(jù)庫的數(shù)據(jù)庫表的一些信息,但是這些表之間到底是一種什么樣的關(guān)系呢?關(guān)心數(shù)據(jù)庫建模和設(shè)計的人可能對這個問題比較感興趣。在這里,我將給出圖表(圖2)說明這些數(shù)據(jù)庫表之間的關(guān)系。圖2中列出了這些表之間的關(guān)系和主鍵信息。

?

?

?

圖2petshop數(shù)據(jù)庫物理設(shè)計模式

?

技巧:其實對于從事過數(shù)據(jù)庫建模和設(shè)計的人都知道,得到上面的數(shù)據(jù)庫模型圖形并不是一件很困難的事情。正如我們前面提到的一樣,我們可以用Visio做工程反轉(zhuǎn)就可以得到上面這么美觀的設(shè)計模型圖了。同時,我們也可以在模型圖中做修改設(shè)計,可以馬上應(yīng)用到你的物理數(shù)據(jù)庫,使其保持同步。

?

說完了基本的數(shù)據(jù)庫表,接下來我們看看存儲過程。用微軟的話說,只有設(shè)計稱存儲過程,才算是”cleaner separation of code from the middle-tier”,我個人覺得這樣做是很好的。同樣的,我把它列在一個表格里(表2)。

?

存儲過程名稱

備注信息

upAccountAdd

增加一個帳號。

upAccountGetAddress

獲取用戶的地址,主要用于下訂單時注冊地址與送貨地址不一。

upAccountGetDetails

獲取帳號的詳細(xì)信息。

upAccountLogin

用戶登陸驗證。

upAccountUpdate

更新用戶帳號。

upCategoryGetList

獲取某個類別的產(chǎn)品列表。

upInventoryAdd

增加指定的項到存活信息。

upInventoryGetList

獲取存貨列表。

upItemAdd

增加一項產(chǎn)品。

upItemGetDetails

獲取指定產(chǎn)品項的詳細(xì)信息。

upItemGetList

獲取某一特定類別的產(chǎn)品的具體項目列表。

upItemGetList_ListByPage

功能與上同,但是分頁獲取數(shù)據(jù)。

upOrdersAdd

增加一項訂單。

upOrdersGet

獲取某一訂單的信息。

upOrdersGetDetails

獲取某一訂單的詳細(xì)信息。

upOrderStatusGet

獲取訂單的狀態(tài)。

upProductAdd

增加一類別產(chǎn)品。

upProductGetList

返回某類產(chǎn)品的列表。

upProductGetList_ListByPage

與上同,但是分頁獲取結(jié)果數(shù)據(jù)。。

upProductSearch

產(chǎn)品搜索。

upProductSearch_ListByPage

與上同,但是翻頁獲取結(jié)果數(shù)據(jù)。

upProfileGetBannerOption

Banner的配置信息。

upProfileGetListOption

獲取用戶配置信息。

?

2petshop存儲過程列表

?

在這些存儲過程里面使用了SQL Server2000OpenXML的特性來代替?zhèn)鹘y(tǒng)的行集結(jié)果,使用在非常頻繁的數(shù)據(jù)訪問操作,可以減輕系統(tǒng)的負(fù)擔(dān)。

好了,petshopDatatier就說到這里了,在后面的文章我會就一個數(shù)據(jù)訪問的實例再次解說存儲過程的執(zhí)行。接下來我將就中間層做介紹了。

轉(zhuǎn)載于:https://www.cnblogs.com/xoray007/archive/2010/05/22/1741789.html

總結(jié)

以上是生活随笔為你收集整理的.Net Petshop详解(二):petshop三层结构之DataTier的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。