架構(gòu)設(shè)計(jì):邏輯層vs物理層
Layer 和Tier都是層,但是他們所表現(xiàn)的含義不同,Tier指的是軟件系統(tǒng)中物理上的軟件和硬件,具體指部署在某服務(wù)器上,而Layer(邏輯層)指軟件系統(tǒng)中完成特定功能的邏輯模塊,邏輯概念。
Layer是邏輯上 組織代碼的形式。比如邏輯分層中表現(xiàn)層,服務(wù)層,業(yè)務(wù)層,領(lǐng)域?qū)?,他們是軟件功能?lái)劃分的。并不指代部署在那臺(tái)具體的服務(wù)器上或者,物理位置。
Tier這指代碼運(yùn)行部署的具體位置,是一個(gè)物理層次上的劃為,Tier就是指邏輯層Layer具體的運(yùn)行位置。所以邏輯層可以部署或者遷移在不同物理層,一個(gè)物理層可以部署運(yùn)行多個(gè)邏輯層。
從Layer和Tier就會(huì)延伸到邏輯架構(gòu)和物理架構(gòu)。我們一個(gè)邏輯分層(N-Layer)的部署運(yùn)行環(huán)境可以在一臺(tái)或者是多臺(tái)服務(wù)器,由于物理環(huán)境的多樣性,邏輯層次的部署也具有多樣性。這就需要我們必須了解物理架構(gòu)和邏輯架構(gòu)。
大多數(shù)情況下我們所說(shuō)的N層應(yīng)用系統(tǒng)指的是物理模型,具體模塊的分布物理位置??蛻?hù)端,服務(wù)層,邏輯層,數(shù)據(jù)庫(kù)服務(wù)器,與我們的邏輯模型之間并不是一對(duì)一的關(guān)系。邏輯上的分層架構(gòu)與物理位置上的服務(wù)器數(shù)量和網(wǎng)絡(luò)邊界多少無(wú)關(guān),邏輯架構(gòu)層次只與我們的功能劃分相關(guān),是按照功能劃分。經(jīng)典的3-Layer架構(gòu):表現(xiàn)層,業(yè)務(wù)層,數(shù)據(jù)訪(fǎng)問(wèn)層,他們可能運(yùn)行在同一物理位置上。也可以是3臺(tái)計(jì)算機(jī)上,這并不是邏輯架構(gòu)所關(guān)注的。邏輯層次和物理分層數(shù)量關(guān)系為:邏輯層數(shù)必須不小于物理層數(shù),因?yàn)橐粋€(gè)物理層可以部署一個(gè)或者多個(gè)邏輯層次,邏輯層次只能遷移在不同的物理環(huán)境。
邏輯層次的架構(gòu)能幫助我們解決邏輯耦合,達(dá)到靈活配置,遷移。
一個(gè)良好的邏輯分層可以帶來(lái):
- 邏輯組織代碼
- 易于維護(hù)
- 代碼更好的重用
- 更好的團(tuán)隊(duì)開(kāi)發(fā)體驗(yàn)
- 代碼邏輯的清晰度
一個(gè)良好的物理架構(gòu)可以帶來(lái):
- 性能的提升
- 可伸縮性
- 容錯(cuò)性
- 安全性
邏輯層次越多會(huì)影響程序運(yùn)行的性能,但代碼層次的低耦合,松散化,是需要架構(gòu)師的權(quán)衡的,我覺(jué)得一般應(yīng)用程序的瓶頸并不在這里。
原文鏈接:http://www.cnblogs.com/whitewolf/archive/2012/05/09/2493458.html