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

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

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

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