但分層是系統(tǒng)擴(kuò)展性的一個(gè)必要條件,樓主有興趣看看我的SPL(SmartPersistenceLayer),或許會(huì)有興趣吧。http://tintown.cnblogs.com/category/12787.html 回復(fù) 更多評(píng)論
|
早上吃早點(diǎn)的時(shí)候,突發(fā)靈感,結(jié)合吃的小籠包和日常的開(kāi)發(fā)經(jīng)驗(yàn)來(lái)說(shuō)一下分層的應(yīng)用。
首先,談一下什么是三層架構(gòu),所謂的三層開(kāi)發(fā)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分為表示層-業(yè)務(wù)邏輯層―數(shù)據(jù)訪(fǎng)問(wèn)層-數(shù)據(jù)庫(kù)等,有的還要細(xì)一些,明確地將客戶(hù)端的表示層、業(yè)務(wù)邏輯訪(fǎng)問(wèn)、和數(shù)據(jù)訪(fǎng)問(wèn)及數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)劃分出來(lái),十分有利于系統(tǒng)的開(kāi)發(fā),維護(hù)、部署和擴(kuò)展。
軟件要分層,其實(shí)總結(jié)一句話(huà),是為了實(shí)現(xiàn)“高內(nèi)聚、低耦合”。采用“分而治之”的思想,把問(wèn)題劃分開(kāi)來(lái)各個(gè)解決,易于控制,易于延展,易于分配資源。
這種三層結(jié)構(gòu)有什么優(yōu)勢(shì)呢?
1. 通過(guò)將整個(gè)系統(tǒng)分為不同的邏輯塊,大大降低了應(yīng)用系統(tǒng)開(kāi)發(fā)和維護(hù)的成本。
三層結(jié)構(gòu)將表示部分和業(yè)務(wù)邏輯部分按照客戶(hù)層和應(yīng)用服務(wù)器相分離,客戶(hù)端和應(yīng)用服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間的通信以及異構(gòu)平臺(tái)之間的數(shù)據(jù)交換等都可以通過(guò)中間件或者相關(guān)程序來(lái)實(shí)現(xiàn)。當(dāng)數(shù)據(jù)庫(kù)或者應(yīng)用服務(wù)器的業(yè)務(wù)邏輯改變時(shí),客戶(hù)端并不需要改變,反之亦然,從而大大提高了系統(tǒng)模塊的復(fù)用性,縮短了開(kāi)發(fā)周期,降低了維護(hù)費(fèi)用。
趣味理解:
假設(shè)飯店這樣來(lái)做小籠包:
一層蒸餃,
一層肉包,
一層素包。
首先這種方式我們可以讓做包子的分成不同的小組,來(lái)負(fù)責(zé)做不同的包子。當(dāng)做好了每一種包子,他們可以很方便的知道,該放到哪個(gè)籠里,不至于挨個(gè)去查看該放在哪里,我們也很容易地將籠屜放到火上面去,而不會(huì)影響其他籠的加熱。當(dāng)我們要吃肉包或蒸餃時(shí),我們也很容易就能找到我們所需要的,非常節(jié)省時(shí)間和體力。把肉包或蒸餃拿走或者增加,并不影響素包的加熱。
如果我們把這些都放在一個(gè)大籠里,你覺(jué)得會(huì)怎么樣?會(huì)不會(huì)很亂,維護(hù)起來(lái)很浪費(fèi)時(shí)間,不但找起來(lái)麻煩,而其每次揭開(kāi)鍋都會(huì)對(duì)其他的有影響。
2. 將數(shù)據(jù)訪(fǎng)問(wèn)和邏輯操作都集中到組件中,增強(qiáng)了系統(tǒng)的復(fù)用性。
如:將數(shù)據(jù)訪(fǎng)問(wèn)集中到數(shù)據(jù)訪(fǎng)問(wèn)層的組件中,從而減少了應(yīng)用程序中的重復(fù)代碼,每個(gè)需要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)、表的窗體都使用相同的組件。
如:一些共性的邏輯操作都集中封裝在邏輯層的組件中,每一個(gè)使用該方法的操作,可以共享來(lái)訪(fǎng)問(wèn)該組件。
趣味理解:
簡(jiǎn)單的理解,籠屜本身就是一個(gè)重用的例子,如果我們使用一次性的籠(像一次性筷子一樣理解),會(huì)浪費(fèi)多少人工來(lái)做啊(重復(fù)編寫(xiě)麻煩),并且會(huì)有很大的資源浪費(fèi)(代碼冗余),最后還要進(jìn)行垃圾處理(后期維護(hù))。并且,如果籠屜和爐火的鍋按一種規(guī)范和標(biāo)準(zhǔn)(接口)來(lái)做,這樣的籠屜不但可以在這里用,也可以拿到別的地方用。(雖然這樣理解不太確切,簡(jiǎn)單的這樣理解好了)
3. 系統(tǒng)的擴(kuò)展性大大增強(qiáng)。
模塊化使得系統(tǒng)很容易在縱向和水平兩個(gè)方向拓展:一方面可以將系統(tǒng)升級(jí)為更大、更有力的平臺(tái),同時(shí)也可以適當(dāng)增加規(guī)模來(lái)增強(qiáng)系統(tǒng)的網(wǎng)絡(luò)應(yīng)用。由于擺脫了系統(tǒng)同構(gòu)性的限制,使得分布數(shù)據(jù)處理成為可能。在擴(kuò)充或修改功能時(shí),基本不會(huì)破壞原有結(jié)構(gòu)的穩(wěn)定性。
趣味理解:
隨著顧客的需要,我們現(xiàn)在需要增加新品種,如蒸饅頭,蒸地瓜,那么直接可以增加一層籠就是了,對(duì)其他籠不會(huì)有什么影響。
三層結(jié)構(gòu)在營(yíng)造企業(yè)競(jìng)爭(zhēng)優(yōu)勢(shì)中的作用主要體現(xiàn)在模塊化設(shè)計(jì)使得用戶(hù)在現(xiàn)有結(jié)構(gòu)的基礎(chǔ)上實(shí)現(xiàn)了系統(tǒng)擴(kuò)展,從而提高企業(yè)信息化的速度和業(yè)務(wù)水平;同時(shí)三層結(jié)構(gòu)中中間件的出現(xiàn)使得用戶(hù)可以直接從市場(chǎng)上選擇合適的產(chǎn)品來(lái)構(gòu)建系統(tǒng),大大降低了開(kāi)發(fā)周期和開(kāi)發(fā)費(fèi)用。
但分層結(jié)構(gòu)也有缺點(diǎn)也不是越多越好,那樣管理很多層會(huì)比較麻煩,運(yùn)行效率可能比較低。所以,一個(gè)具備良好層次結(jié)構(gòu)的系統(tǒng),其層的數(shù)目要恰到好處才行。
(作者:李天平 轉(zhuǎn)載請(qǐng)注明)
posted on 2005-12-03 01:34 李天平 閱讀(7336) 評(píng)論(17) 編輯 收藏 引用 網(wǎng)摘 所屬分類(lèi): ASP.NET開(kāi)發(fā) 、系統(tǒng)分析與設(shè)計(jì) 、項(xiàng)目管理
評(píng)論非常支持樓主的意見(jiàn)。分層的撐握是需要視項(xiàng)目而定的。
但分層是系統(tǒng)擴(kuò)展性的一個(gè)必要條件,樓主有興趣看看我的SPL(SmartPersistenceLayer),或許會(huì)有興趣吧。http://tintown.cnblogs.com/category/12787.html 回復(fù) 更多評(píng)論 @李天平:
贊同你的說(shuō)法,項(xiàng)目的層次要視項(xiàng)目的規(guī)模和業(yè)務(wù)復(fù)雜程度而定。對(duì)于簡(jiǎn)單的項(xiàng)目,采用復(fù)雜的分層,是一種負(fù)擔(dān),簡(jiǎn)單的應(yīng)用因?yàn)榉謱佣鄬?xiě)很多的代碼,非常的不xp。 同時(shí),組件化、模塊化的思想也非常重要,代碼級(jí)別的復(fù)用或者reinvent the wheel的方式難以滿(mǎn)足快速構(gòu)建項(xiàng)目的要求,成熟、靈活和高度可復(fù)用的組件(還有種說(shuō)法是基礎(chǔ)框架)是IT企業(yè)的核心競(jìng)爭(zhēng)力。 回復(fù) 更多評(píng)論 目前在學(xué)軟件分層思想,
在學(xué)asp.net 分層架構(gòu),不知道樓主有沒(méi)有這方面的入門(mén)的資料介紹介紹. 看了樓主開(kāi)發(fā)的代碼自動(dòng)生成器.不過(guò)還不是很明朗^^ 回復(fù) 更多評(píng)論 http://ltp.cnblogs.com/archive/2005/12/28/306887.aspx
除了有代碼生成器外,還有一套基于分層思想開(kāi)發(fā)的系統(tǒng)示例源碼,你可以下來(lái)看看,自己學(xué)習(xí)一下。同時(shí),代碼生成器幫助里有一點(diǎn)介紹。 回復(fù) 本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。 來(lái)自: 昵稱(chēng)23428 > 《我的圖書(shū)館》 |