什么是n-tier(層)架構(gòu)理論

n-tier(層)架構(gòu)
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
馬克-to-win:在軟件公司工作的一個常態(tài)就是需求經(jīng)常變動。這是迭代開發(fā)的一個主要特征。為了節(jié)約成本和生存問題,軟件公司一般都采取迭代開發(fā)的模式。三個星期為一個周期,推出一個版本,給客戶看??蛻籼岢鲆欢岩庖姡a(chǎn)品經(jīng)理根據(jù)客戶意見和市場競品分析和自己公司總經(jīng)理意見及各路考量,再出一版產(chǎn)品需求,之后逼著技術(shù)部門以火箭一般的速度,完成他的需求。馬克-to-win:作為技術(shù)負責(zé)人的我,深知他的需求今天是朝東,明天可能就是朝南,后天也許還朝西,沒辦法,都是客戶需要的,領(lǐng)導(dǎo)需要的和市場需要的,還得去干。不但得干,而且還得以最快的速度干。這里看出來沒有,就是兩點。一,不斷要去改。二來還得快。結(jié)論就是必須要用n-tier(層)模式開發(fā)。這樣我就可以把分工分得很細。需要改動時,可以一步到位,找到需要改動的地方,而且還可以非常快。剛才其實提了一點n-tier架構(gòu),把model細化分成了幾層?,F(xiàn)在繼續(xù)把其中的服務(wù)層(service)細化,變成 service層調(diào)用BO(Business Object)層,BO層調(diào)用DO(domain object)層。馬克-to-win:這里首先說為什么叫層?比如說:DO層里包含了很多的DO,而不是一個。什么是DO?DO是domain object,又叫領(lǐng)域?qū)ο?。就是?shù)據(jù)庫中每個有現(xiàn)實意義的表都對應(yīng)一個DO。比如多對多關(guān)系表在現(xiàn)實就沒有意義(TeacherStudentRelation),DO有自己的業(yè)務(wù)方法。BO (Business Object)就是現(xiàn)實中個別一個復(fù)雜對象或一堆有密切關(guān)系的DO對象所代表的抽象無形的有現(xiàn)實意義的概念對象。比如“手”和“ 腳”數(shù)據(jù)庫中有實體表,所以“手”和“腳”都是DO。而“四肢 ”只是概念,沒有表對應(yīng),是BO。BO也有業(yè)務(wù)方法。service當(dāng)中可能有些發(fā)Email的方法,或安全編碼的方法,這些不涉及數(shù)據(jù)庫,和BO不同(BO涉及數(shù)據(jù)庫)。當(dāng)涉及到“手腳并用”時,就調(diào)用“四肢”這個BO當(dāng)中的方法。這個方法當(dāng)中涉及到“腳”的方法時,就調(diào)用“腳”這個DO的方法。 “腳”這個DO里的業(yè)務(wù)方法涉及到數(shù)據(jù)庫時,就調(diào)用Dao中的方法。

馬克-to-win:最后就剩下一點簡單的知識。1)delegate層即代理層,在Service層前面,很有可能和Controller層在不同的機器上和Tomcat上,等待著不同的Conrtroller的訪問。小項目沒有,比如你的項目可能有asp或c#訪問,這樣你的Model就真正成了跨平臺的Model了。 delegate再調(diào)用service層。2)Controller層:控制層,也叫domain主控制層。負責(zé)jsp表單提交的處理,調(diào)用Service層或delegate層,將 Service層的數(shù)據(jù)對象返回到視圖層。3)web層主要是客戶端網(wǎng)頁,就是所謂的View。

馬克-to-win:n-tier架構(gòu)到底多少層?要根據(jù)實際情況而定,所以叫n層架構(gòu),而不是8層架構(gòu)或9層架構(gòu)。其實我介紹的,一般的情況基本夠使了。如果你的項目特殊,比如涉及圖像,安全,加密等,也許更多。