婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 《解剖PetShop》之一:PetShop的系統(tǒng)架構設計

《解剖PetShop》之一:PetShop的系統(tǒng)架構設計

熱門標簽:地圖標注軟件免費下載 蘇州如何辦理400電話 百應電話機器人外呼系統(tǒng) 外呼電話機器人成本 西寧呼叫中心外呼系統(tǒng)線路商 聯(lián)通官網(wǎng)400電話辦理 臨沂智能電話機器人加盟 400電話辦理怎么樣 網(wǎng)絡電話外呼系統(tǒng)上海

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

一、PetShop的系統(tǒng)架構設計

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


圖一:三層的分層式結構

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

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

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

分層式結構究竟其優(yōu)勢何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一書中給出了答案:

1、開發(fā)人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現(xiàn)來替換原有層次的實現(xiàn);
3、可以降低層與層之間的依賴;
4、有利于標準化;
5、利于各層邏輯的復用。

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

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

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

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

“金無足赤,人無完人”,分層式結構也不可避免具有一些缺陷:

1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結構,很多業(yè)務可以直接造訪數(shù)據(jù)庫,以此獲取相應的數(shù)據(jù),如今卻必須通過中間層來完成。
2、有時會導致級聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業(yè)務邏輯層和數(shù)據(jù)訪問層中都增加相應的代碼。

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


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

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


圖三:PetShop 2.0的體系架構

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

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


圖四:PetShop 3.0的體系架構

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


圖五:PetShop 4.0的體系架構

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


圖六:數(shù)據(jù)訪問層的模塊結構圖

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

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


圖七:業(yè)務邏輯層的模塊結構圖

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

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


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

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

  以上就是PetShop系統(tǒng)架構的全部內容,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 學會sql數(shù)據(jù)庫關系圖(Petshop)
  • 《解剖PetShop》之二:PetShop數(shù)據(jù)訪問層數(shù)之據(jù)庫訪問設計
  • 《解剖PetShop》之三:PetShop數(shù)據(jù)訪問層之消息處理
  • 《解剖PetShop》之四:PetShop之ASP.NET緩存
  • 《解剖PetShop》之五:PetShop之業(yè)務邏輯層設計
  • 《解剖PetShop》之六:PetShop之表示層設計

標簽:聊城 海西 慶陽 臨夏 甘肅 中衛(wèi) 清遠

巨人網(wǎng)絡通訊聲明:本文標題《《解剖PetShop》之一:PetShop的系統(tǒng)架構設計》,本文關鍵詞  解剖PetShop,之一,PetShop,的,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《《解剖PetShop》之一:PetShop的系統(tǒng)架構設計》相關的同類信息!
  • 本頁收集關于《解剖PetShop》之一:PetShop的系統(tǒng)架構設計的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久蜜桃精品| 欧美日韩一区二区不卡| 日本欧美一区二区在线观看| 亚洲国产精品久久久久秋霞影院| 亚洲另类在线制服丝袜| 亚洲欧美二区三区| 一区二区三区视频在线看| 一区二区三区免费观看| 亚洲国产一区二区a毛片| 91小视频免费看| 色综合天天综合狠狠| 欧美午夜电影一区| 欧美一区二区三区不卡| 精品粉嫩aⅴ一区二区三区四区| 亚洲精品在线观看视频| 欧美国产日韩在线观看| 国产精品免费久久久久| 亚洲综合在线免费观看| 亚洲成人tv网| 国产麻豆精品视频| 成人免费av资源| 欧美日韩色一区| 精品国产成人在线影院| 国产欧美日韩视频一区二区| 亚洲欧美一区二区不卡| 日本成人在线一区| 成人免费视频app| 欧美剧情片在线观看| 久久一二三国产| 亚洲国产中文字幕在线视频综合| 久久99国产精品久久99| 色综合久久久久久久久久久| 69堂成人精品免费视频| 国产精品美女一区二区在线观看| 亚洲一区二区三区自拍| 国产美女视频一区| 欧美男生操女生| 国产精品麻豆欧美日韩ww| 亚洲成在线观看| 成人app在线| 亚洲精品一线二线三线无人区| 一区二区三区高清| 国产揄拍国内精品对白| 欧美精品亚洲二区| 亚洲欧美日韩中文播放| 国产在线精品一区二区| 日本精品一区二区三区高清| 久久综合久色欧美综合狠狠| 偷拍日韩校园综合在线| 日本精品视频一区二区| 国产日韩欧美一区二区三区综合| 天堂久久一区二区三区| 99精品久久99久久久久| 中文字幕精品一区二区精品绿巨人 | 精品福利二区三区| 香港成人在线视频| 欧美在线你懂的| 亚洲视频免费观看| aaa欧美日韩| 国产亚洲成aⅴ人片在线观看| 美女看a上一区| 777奇米四色成人影色区| 成人免费不卡视频| 亚洲国产精品t66y| 国产精品一区二区果冻传媒| 69堂亚洲精品首页| 天天综合网 天天综合色| 欧美午夜精品一区二区三区| 一区二区三区日本| 欧美性xxxxxx少妇| 丝袜诱惑亚洲看片| 91精品国产免费久久综合| 人人精品人人爱| 日韩免费视频一区| 韩国精品一区二区| 国产欧美精品一区二区色综合朱莉 | 538prom精品视频线放| 午夜欧美视频在线观看| 欧美一区二区三区视频免费播放| 水野朝阳av一区二区三区| 欧美人伦禁忌dvd放荡欲情| 午夜精品久久久久久久久久| 欧美日韩三级在线| 蜜桃视频免费观看一区| 2020国产精品自拍| 波多野结衣中文一区| 亚洲一区二区在线播放相泽| 91精品国产综合久久精品| 免费观看一级欧美片| 久久久一区二区三区捆绑**| 成人免费毛片高清视频| 一区二区三区在线视频观看58| 欧美日韩亚洲另类| 激情六月婷婷综合| 亚洲免费观看在线视频| 欧美日本一区二区在线观看| 国产一区二区精品久久| 亚洲欧洲精品天堂一级| 欧美人狂配大交3d怪物一区| 国产精品亚洲专一区二区三区 | 成人精品免费视频| 亚洲乱码国产乱码精品精的特点 | 国产剧情在线观看一区二区| 国产精品婷婷午夜在线观看| 欧美日韩一区二区三区四区五区| 九一久久久久久| 亚洲日本成人在线观看| 日韩免费观看2025年上映的电影| 成人激情av网| 蜜臀va亚洲va欧美va天堂| 中文字幕不卡的av| 欧美一区二区黄| 99国产一区二区三精品乱码| 欧美性生活久久| 国产福利电影一区二区三区| 亚洲大片精品永久免费| 中文字幕一区av| 欧美精品一区二区高清在线观看| 一本大道久久a久久精二百| 国内精品久久久久影院一蜜桃| 亚洲一区自拍偷拍| 国产精品人成在线观看免费| 欧美成人猛片aaaaaaa| 91高清在线观看| jlzzjlzz欧美大全| 国产精品一级在线| 日本vs亚洲vs韩国一区三区| 亚洲最色的网站| 亚洲蜜臀av乱码久久精品 | 天堂va蜜桃一区二区三区漫画版| 国产欧美一区二区精品婷婷| 欧美sm极限捆绑bd| 日韩一区二区免费在线观看| 欧美色精品天天在线观看视频| 99精品一区二区三区| 白白色 亚洲乱淫| 成人国产亚洲欧美成人综合网 | 日本成人在线视频网站| 亚洲一区二区三区不卡国产欧美 | 国产午夜一区二区三区| 欧美v日韩v国产v| 日韩精品在线一区二区| 91麻豆精品国产91久久久使用方法 | 91麻豆精品91久久久久同性| 欧美制服丝袜第一页| 日本乱人伦aⅴ精品| 色噜噜狠狠成人网p站| 在线观看精品一区| 欧美少妇性性性| 宅男在线国产精品| 日韩欧美黄色影院| 91精品国产乱| 欧美zozozo| 欧美韩国日本不卡| 中文字幕一区二区三区不卡| 亚洲日本va午夜在线电影| 亚洲男人的天堂网| 日日夜夜免费精品视频| 日韩激情在线观看| 国产成人在线观看| 91在线精品一区二区| 欧美日韩免费电影| 欧美变态凌虐bdsm| 日本一区二区三区四区| 亚洲乱码中文字幕| 免费高清在线一区| 国产精品66部| 欧美影院一区二区| 欧美不卡视频一区| 1区2区3区欧美| 日韩电影免费在线看| 国产高清视频一区| 色综合天天在线| 日韩精品一区二区三区四区 | 欧美一区二区三区思思人| 精品国产a毛片| 亚洲黄色小说网站| 精品亚洲成a人| 色综合一个色综合亚洲| 56国语精品自产拍在线观看| 国产精品午夜在线| 日韩电影在线免费看| 国产成人一区二区精品非洲| 欧美午夜精品一区二区三区| 26uuu精品一区二区 | 91精品国产综合久久蜜臀 | 精品sm捆绑视频| 亚洲精品第1页| 国产一区免费电影| 欧美精品丝袜中出| 亚洲人成人一区二区在线观看 | 精品免费一区二区三区| 亚洲欧美日韩在线播放| 国产呦精品一区二区三区网站| 色妹子一区二区| 中文字幕精品综合| 国内精品在线播放| 欧美一区二区三区婷婷月色| 一区二区三区免费看视频| 国产成a人亚洲精|