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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

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

交互的三層綜述

?

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

圖1 .NET Petshop 架構

?

從這個情景中,我們可以很清晰的了解到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中列出了這些表之間的關系和主鍵信息。

?

?

?

圖2petshop數據庫物理設計模式

?

技巧:其實對于從事過數據庫建模和設計的人都知道,得到上面的數據庫模型圖形并不是一件很困難的事情。正如我們前面提到的一樣,我們可以用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就說到這里了,在后面的文章我會就一個數據訪問的實例再次解說存儲過程的執行。接下來我將就中間層做介紹了。

轉載于:https://www.cnblogs.com/xoray007/archive/2010/05/22/1741789.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。