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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

PetShop的系统架构设计[转]

發布時間:2025/6/17 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PetShop的系统架构设计[转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《解剖PetShop》系列之一

前言:PetShop是一個范例,微軟用它來展示.Net企業系統開發的能力。業界有許多.Net與J2EE之爭,許多數據是從微軟的PetShop和Sun的PetStore而來。這種爭論不可避免帶有濃厚的商業色彩,對于我們開發人員而言,沒有必要過多關注。然而PetShop隨著版本的不斷更新,至現在基于.Net 2.0的PetShop4.0為止,整個設計逐漸變得成熟而優雅,卻又很多可以借鑒之處。PetShop是一個小型的項目,系統架構與代碼都比較簡單,卻也凸現了許多頗有價值的設計與開發理念。本系列試圖對PetShop作一個全方位的解剖,依據的代碼是PetShop4.0,可以從鏈接http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp中獲得。

一、PetShop的系統架構設計

在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。微軟推薦的分層式結構一般分為三層,從下至上分別為:數據訪問層、業務邏輯層(又或成為領域層)、表示層,如圖所示:


圖一:三層的分層式結構

數據訪問層:有時候也稱為是持久層,其功能主要是負責數據庫的訪問。簡單的說法就是實現對數據表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就會包括對象和數據表之間的mapping,以及對象實體的持久化。在PetShop的數據訪問層中,并沒有使用ORM,從而導致了代碼量的增加,可以看作是整個設計實現中的一大敗筆。

業務邏輯層:是整個系統的核心,它與這個系統的業務(領域)有關。以PetShop為例,業務邏輯層的相關設計,均和網上寵物店特有的邏輯相關,例如查詢寵物,下訂單,添加寵物到購物車等等。如果涉及到數據庫的訪問,則調用數據訪問層。

表示層:是系統的UI部分,負責使用者與整個系統的交互。在這一層中,理想的狀態是不應包括系統的業務邏輯。表示層中的邏輯代碼,僅與界面元素有關。在PetShop中,是利用ASP.Net來設計的,因此包含了許多Web控件和相關邏輯。

分層式結構究竟其優勢何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一書中給出了答案:
1、開發人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利于標準化;
5、利于各層邏輯的復用。

概括來說,分層式設計可以達至如下目的:分散關注、松散耦合、邏輯復用、標準定義。

一個好的分層式結構,可以使得開發人員的分工更加明確。一旦定義好各層次之間的接口,負責不同邏輯設計的開發人員就可以分散關注,齊頭并進。例如UI人員只需考慮用戶界面的體驗與操作,領域的設計人員可以僅關注業務邏輯的設計,而數據庫設計人員也不必為繁瑣的用戶交互而頭疼了。每個開發人員的任務得到了確認,開發進度就可以迅速的提高。

松散耦合的好處是顯而易見的。如果一個系統沒有分層,那么各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰都是不可替換的。一旦發生改變,則牽一發而動全身,對項目的影響極為嚴重。降低層與層間的依賴性,既可以良好地保證未來的可擴展,在復用性上也是優勢明顯。每個功能模塊一旦定義好統一的接口,就可以被各個模塊所調用,而不用為相同的功能進行重復地開發。

進行好的分層式結構設計,標準也是必不可少的。只有在一定程度的標準化基礎上,這個系統才是可擴展的,可替換的。而層與層之間的通信也必然保證了接口的標準化。

“金無足赤,人無完人”,分層式結構也不可避免具有一些缺陷:
1、降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼。

前面提到,PetShop的表示層是用ASP.Net設計的,也就是說,它應是一個BS系統。在.Net中,標準的BS分層式結構如下圖所示:


圖二:.Net中標準的BS分層式結構

隨著PetShop版本的更新,其分層式結構也在不斷的完善,例如PetShop2.0,就沒有采用標準的三層式結構,如圖三:


圖三:PetShop 2.0的體系架構

從圖中我們可以看到,并沒有明顯的數據訪問層設計。這樣的設計雖然提高了數據訪問的性能,但也同時導致了業務邏輯層與數據訪問的職責混亂。一旦要求支持的數據庫發生變化,或者需要修改數據訪問的邏輯,由于沒有清晰的分層,會導致項目作大的修改。而隨著硬件系統性能的提高,以及充分利用緩存、異步處理等機制,分層式結構所帶來的性能影響幾乎可以忽略不計。

PetShop3.0糾正了此前層次不明的問題,將數據訪問邏輯作為單獨的一層獨立出來:


圖四:PetShop 3.0的體系架構

PetShop4.0基本上延續了3.0的結構,但在性能上作了一定的改進,引入了緩存和異步處理機制,同時又充分利用了ASP.Net 2.0的新功能MemberShip,因此PetShop4.0的系統架構圖如下所示:


圖五:PetShop 4.0的體系架構

比較3.0和4.0的系統架構圖,其核心的內容并沒有發生變化。在數據訪問層(DAL)中,仍然采用DAL Interface抽象出數據訪問邏輯,并以DAL Factory作為數據訪問層對象的工廠模塊。對于DAL Interface而言,分別有支持MS-SQL的SQL Server DAL和支持Oracle的Oracle DAL具體實現。而Model模塊則包含了數據實體對象。其詳細的模塊結構圖如下所示:


圖六:數據訪問層的模塊結構圖

可以看到,在數據訪問層中,完全采用了“面向接口編程”思想。抽象出來的IDAL模塊,脫離了與具體數據庫的依賴,從而使得整個數據訪問層利于數據庫遷移。DALFactory模塊專門管理DAL對象的創建,便于業務邏輯層訪問。SQLServerDAL和OracleDAL模塊均實現IDAL模塊的接口,其中包含的邏輯就是對數據庫的Select,Insert,Update和Delete操作。因為數據庫類型的不同,對數據庫的操作也有所不同,代碼也會因此有所區別。

此外,抽象出來的IDAL模塊,除了解除了向下的依賴之外,對于其上的業務邏輯層,同樣僅存在弱依賴關系,如下圖所示:


圖七:業務邏輯層的模塊結構圖

圖七中BLL是業務邏輯層的核心模塊,它包含了整個系統的核心業務。在業務邏輯層中,不能直接訪問數據庫,而必須通過數據訪問層。注意圖中對數據訪問業務的調用,是通過接口模塊IDAL來完成的。既然與具體的數據訪問邏輯無關,則層與層之間的關系就是松散耦合的。如果此時需要修改數據訪問層的具體實現,只要不涉及到IDAL的接口定義,那么業務邏輯層就不會受到任何影響。畢竟,具體實現的SQLServerDAL和OracalDAL根本就與業務邏輯層沒有半點關系。

因為在PetShop 4.0中引入了異步處理機制。插入訂單的策略可以分為同步和異步,兩者的插入策略明顯不同,但對于調用者而言,插入訂單的接口是完全一樣的,所以PetShop 4.0中設計了IBLLStrategy模塊。雖然在IBLLStrategy模塊中,僅僅是簡單的IOrderStategy,但同時也給出了一個范例和信息,那就是在業務邏輯的處理中,如果存在業務操作的多樣化,或者是今后可能的變化,均應利用抽象的原理。或者使用接口,或者使用抽象類,從而脫離對具體業務的依賴。不過在PetShop中,由于業務邏輯相對簡單,這種思想體現得不夠明顯。也正因為此,PetShop將核心的業務邏輯都放到了一個模塊BLL中,并沒有將具體的實現和抽象嚴格的按照模塊分開。所以表示層和業務邏輯層之間的調用關系,其耦合度相對較高:


圖八:表示層的模塊結構圖

在圖五中,各個層次中還引入了輔助的模塊,如數據訪問層的Messaging模塊,是為異步插入訂單的功能提供,采用了MSMQ(Microsoft Messaging Queue)技術。而表示層的CacheDependency則提供緩存功能。這些特殊的模塊,我會在此后的文章中詳細介紹。

文章出處:http://www.cnblogs.com/wayfarer/archive/2006/04/14/375382.html

?

轉載于:https://www.cnblogs.com/zhangzt/archive/2010/09/17/1829445.html

總結

以上是生活随笔為你收集整理的PetShop的系统架构设计[转]的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成人动漫av | 九九热re | 亚洲av日韩av在线观看 | 日韩欧美成人网 | 日韩视频免费在线观看 | 日本夫妻性生活视频 | 欧美日韩亚洲国产 | 天堂在线视频免费 | 九九热av| 亚洲美女屁股眼交3 | 波多野结衣办公室33分钟 | 免费毛片播放 | 激情插插 | 黑人操白妞| 四虎影库永久在线 | 九色国产在线 | 色眯眯av | 日本精品一区二区三区四区的功能 | 亚洲第一av网站 | 精品一区二区三区毛片 | 天天玩天天干 | 欧美爽爽 | av高清免费 | 可以看黄色的网站 | 国产资源精品 | 全毛片| 欧美插插视频 | 国产又猛又黄又爽 | mm视频在线观看 | 国产高潮自拍 | 丝袜制服中文字幕 | 国产ts人妖调教重口男 | 久久久久亚洲av片无码v | 亚洲一区免费在线观看 | 97超碰免费在线 | 啪啪av| 精品无码久久久久 | 成人免费高清视频 | 免费视频www在线观看网站 | 91激情| 金瓶狂野欧美性猛交xxxx | 久久久久97| 久久国产免费 | 波多野一区二区三区 | 国产女主播一区二区 | 樱花影院最新免费观看攻略 | 日韩欧美在线视频观看 | 国模无码大尺度一区二区三区 | 亚洲图片综合网 | 激情av| 91口爆一区二区三区在线 | 成人综合网址 | 欧美高h| 丝袜制服一区 | 亚洲日本韩国在线 | 国产美女在线观看 | 色噜噜综合网 | 国产理伦 | 91精品一区二区三 | 奇米av在线 | 美女让男人捅 | 午夜污污| 欧美人体视频一区二区三区 | av免费一区 | 欧美性做爰免费观看 | 久操视频在线 | 久久精品国产亚洲av久一一区 | 亚洲精品国产精品乱码视色 | 中文字幕在线一区二区三区 | 黑丝美女av| 诱惑の诱惑筱田优在线播放 | 波多野吉衣一区二区三区 | 俄罗斯一级片 | 亚洲欧美日韩精品久久亚洲区 | 自拍偷拍第2页 | 一级日韩毛片 | 国产性爱精品视频 | 福利电影一区 | 久久久久久人妻一区二区三区 | 麻豆av免费在线观看 | 国产区精品区 | 成人免费视频网站在线观看 | 91蜜桃视频在线观看 | 亚洲高清网 | 色老大影院 | 国产三级久久 | 色一区二区三区四区 | av在线最新| 一级特黄aaaaaa大片 | 中日韩黄色大片 | 在线超碰av| 青青草成人影视 | 日韩一区二区三区久久 | 国产成人自拍视频在线 | 国产一区二区 | 日本人jizz | 顶级毛片 | 亚洲不卡影院 | 亚洲综合天堂 |