架(jia)構,改善程序(xu)復用性的設計~第二講 什么(me)應該(gai)提(ti)取(qu)出(chu)來,什么(me)應該(gai)保留(liu)
在進行項目(mu)整(zheng)體架構設計時,我(wo)們應該(gai)(gai)明確知道哪些(xie)項目(mu)是可以被重復再利用的,而哪些(xie)項目(mu)是與(yu)領域模(mo)塊關系密切的,對于后(hou)者我(wo)們是應該(gai)(gai)在解決(jue)方案中保(bao)留的,而前者則(ze)是應該(gai)(gai)提取出(chu)來的。
在一個(ge)(ge)完整的解決方案中,應該是由“公用的類庫(ku)”,“核心的項目基礎(chu)層”和“與業務領域(yu)關系密切(qie)個(ge)(ge)性項目組”組成的,對于我開會的那個(ge)(ge)項目來(lai)說(shuo),也是遵循這樣一個(ge)(ge)原則:
將與領域和項(xiang)目無關的(de)項(xiang)目進行抽象,形成一個最(zui)基礎的(de)層,稱為(wei)Project.Common
將(jiang)與架構(gou)模(mo)式(shi)有(you)關(guan),而(er)與領域無(wu)關(guan)的項目,形成一個架構(gou)模(mo)式(shi)核心層,稱為(wei)Project.Core
將與指定領域有關的(de),個性化業(ye)務組成(cheng)的(de)代碼,叫做領域層,它的(de)名(ming)稱由項(xiang)目含(han)義(yi)確定
在(zai)這篇文章里,我們主要是(shi)(shi)(shi)找(zhao)到(dao)一(yi)(yi)個項(xiang)(xiang)目中,可(ke)以(yi)(yi)被抽象和被重(zhong)復(fu)再(zai)利(li)用的點,它可(ke)以(yi)(yi)是(shi)(shi)(shi)個方法,也可(ke)能(neng)是(shi)(shi)(shi)個類,再(zai)可(ke)以(yi)(yi)是(shi)(shi)(shi)個接口,一(yi)(yi)個項(xiang)(xiang)目等,在(zai)架構領域時,在(zai)代碼重(zhong)復(fu)再(zai)利(li)用方法,我認為應該是(shi)(shi)(shi)以(yi)(yi)一(yi)(yi)個項(xiang)(xiang)目為單位(wei)的,一(yi)(yi)個項(xiang)(xiang)目里,可(ke)能(neng)包括(kuo)的是(shi)(shi)(shi)一(yi)(yi)些可(ke)以(yi)(yi)被再(zai)利(li)用的類的集合。恩,就是(shi)(shi)(shi)這樣(yang)的。
對于電子商(shang)務網站,它的解決(jue)方案架構可能(neng)是:
ABC公司(si)的電子商備平臺架構
ABC_WEB (MVC or WebForm)
ABC_Service
ABC_Data
ABC_Entity
使(shi)用(yong)所(suo)有電子商務類(lei)網站(zhan)的核心(xin)代碼:
EC_Web
EC_Entity
EC_Service
EC_Data(可以被多個(ge)數據(ju)庫公(gong)用(yong)的一些dbml模塊)
使用通用核心代碼:
WEB.Commons
Entity.Commons
Data.Commons
最底層才是公用類庫
VCommons
Standard
VLogs
等等