架構(gòu)和改善程序復(fù)用性設(shè)計1:面向?qū)ο笮?/h1>
非常抱歉讓大家等了這么久,這個系列的第一講才開始,呵呵,目錄寫出來后,就是按著目錄一個一個的講出來,與大家一起分享我的開發(fā)經(jīng)驗了,呵呵。
今天主要說一下“系統(tǒng)的復(fù)用性離不開系統(tǒng)的面向?qū)ο笮?rdquo;,我們可能有一種感覺,那就是在開發(fā)一個項目時用到了一段代碼塊,在另一個項目中也用到了,我們通常的作法就是ctrl+C,然后ctrl+V,呵呵,這樣做的好處就是省事,不好的地方也是“不省事”,為什么這樣說呢?
省事:因為它不需要考慮什么,只是為了實現(xiàn)而去實現(xiàn),而這肯定是不提倡這種方式的,因為使用這種方式編程的人,永遠不會體會到其中的樂趣,可能只是為了工資而去工作。
不省事:在程序的測試階段,工程師們突然發(fā)現(xiàn)了你復(fù)制的那塊代碼出現(xiàn)問題了,可能是性能問題,也可能是業(yè)務(wù)問題,也可能是。。。,反正是出問題了,那你作為一個負責(zé)的程序員,會怎么樣,當然是一個一個的去改了,同樣是ctrl+C,ctrl+V,但此時你的一定再后悔,不如把塊代碼,或者那個方法,再或者那個類,再或者那個項目給抽象了。
今天我就來說一下系統(tǒng)要想得到復(fù)用,必須把系統(tǒng)先進行抽象,也就是你的系統(tǒng)代碼要符合面向?qū)ο蟮奶匦裕@個系列我將會用最近開發(fā)的“通用后臺系統(tǒng)”做為實例,講給大家
這個系統(tǒng)中,用到了4個解決方案文件夾,我下面來分別說一下它們
一 Project.Common文件夾:它為所有項目提供一個公用的,不依賴于其它項目的項目集合,如圖:
OnlinePayment:支付功能模塊相關(guān)
Standard:服務(wù)端和端戶端持久化相關(guān)
VCommons:公用功能類庫相關(guān)
VConfig:全局公用配置信息相關(guān)
二 Project.Core文件夾:它是對N層模型的抽象,將Web(UI),Entity(Model),Data(DAL)等各層的核心公用代碼抽象出來,形成一個與領(lǐng)域無關(guān)的項目集合,如圖:
Data.Commons:對數(shù)據(jù)層的抽象,本例中使用了Linq To SQL做為底層ORM,它同樣適用于Entity Frameworks
Entity.Commons:對實體層的抽象,本例中的實體全部是對linq to sql原生實體的擴展,這也多謝微軟的partial關(guān)鍵字,并對實體賦值進行了跟蹤
Web.Commons:對WEB層的抽象,本例是標準的MVC模式的風(fēng)格,對controller進行了抽象,以極對公用特性的抽象,如登陸驗證等
三 Common.Background文件夾:它是對標準的后臺管理系統(tǒng)的抽象,包括最基礎(chǔ)的后臺基礎(chǔ),有對用戶,菜單,權(quán)限,部門等模塊的管理,它適用于所有后臺項目,如圖:
Common.Background.Data:對后臺數(shù)據(jù)層的實現(xiàn),它繼承自Data.Commons
Common.Background.Entity:對后臺實體層的實現(xiàn),它繼承自Entity.Commons
Common.Background.Service:后臺業(yè)務(wù)層的實現(xiàn),它處理最基礎(chǔ)的業(yè)務(wù)邏輯
Common.Background.Web.Controllers:后臺UI層的實現(xiàn),它繼承自Web.Commons
四 個性化項目文件夾,這個就是和領(lǐng)域有關(guān)的真正的項目了,它有自己的架構(gòu)標準,如圖
我們可以看到,它也是標準的三層架構(gòu),前臺和后臺公用Data和Entity層,項目比較簡單,沒有使用Service層。
通過一個真正項目的解說,您是否對如何提高程序的復(fù)用性有一個比較清晰的認識了呢?
原文鏈接:http://www.cnblogs.com/lori/archive/2012/04/27/2473698.html


2011-07-05 16:05:43
2011-07-05 15:22:04




