偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺析Tier和Layer的區(qū)別

開(kāi)發(fā) 架構(gòu)
Tier和Layer這兩個(gè)架構(gòu)概念經(jīng)常會(huì)造成混淆。本文分析了tier與layer的四個(gè)分別,對(duì)一些常見(jiàn)的誤區(qū)做出了解答。

有關(guān)Tier和Layer的區(qū)別,這里詳細(xì)論述一下,大家共同探討。

1. 橫向與縱向

有一種說(shuō)法是“Layer是水平方向的,tier是垂直方向的”。這種說(shuō)法首先容易給人造成下面這樣的誤解:

|||| <-- Layer

--
-- <-- tier
--

其實(shí)兩者表示起來(lái)恰恰相反:

|||| <-- Tier

--
-- <-- Layer
--

這種說(shuō)法的確切含義是“Layer是水平方向<切割>的,tier是垂直方向<切割>的”。但是水平與垂直不過(guò)是個(gè)觀察角度的問(wèn)題,所以這種說(shuō)法并沒(méi)有揭示本質(zhì)。

2. 物理與邏輯

另外一種說(shuō)法是“Tier表示物理分布,layer表示邏輯分布”。

可是在很多書(shū)籍里卻把3-tier的層分別叫做“表示layer”,“業(yè)務(wù)邏輯layer”和“數(shù)據(jù)存儲(chǔ)layer”。卻又分明在暗示tier和layer是沒(méi)有區(qū)別的。

的確,簡(jiǎn)單來(lái)說(shuō)Tier表示物理上的層次劃分,Layer表示邏輯上的層次劃分,這一點(diǎn)是很多人都同意的。但是邏輯上的東西終有一天需要映射到物理分布上,當(dāng)一個(gè)Layer恰好占據(jù)了一個(gè)Tier時(shí),應(yīng)該叫它什么呢?

這就是混亂的來(lái)源。N-tier就是這種混亂的典型代表。

從邏輯上來(lái)講,你永遠(yuǎn)可以把一個(gè)應(yīng)用系統(tǒng)劃分為“表示layer”,“業(yè)務(wù)邏輯layer”和“數(shù)據(jù)存儲(chǔ)layer”。但是在映射到物理分布的時(shí)候,最早的方案只能把三者放到一臺(tái)機(jī)器上,比如用sql直接查詢數(shù)據(jù)庫(kù)。

再后來(lái),可以把“表示layer”和“業(yè)務(wù)邏輯layer”放到一臺(tái)機(jī)器上,數(shù)據(jù)庫(kù)單獨(dú)放,這就是所謂的c/s結(jié)構(gòu)。

到了應(yīng)用服務(wù)器的年代,終于可以把三者分別放到三臺(tái)機(jī)器上了??蛻舳藱C(jī)器放表示layer,應(yīng)用服務(wù)器放業(yè)務(wù)邏輯layer,數(shù)據(jù)庫(kù)機(jī)器放數(shù)據(jù)存儲(chǔ)layer。這樣從物理上看,我們就有了3個(gè)tier,只不過(guò)恰好每個(gè)tier都host了一個(gè)layer。更加有意思的是,每個(gè)物理上的tier可以不是1臺(tái)機(jī)器,而是一組完成同樣功能的機(jī)器,從這個(gè)角度來(lái)說(shuō),tier也是一個(gè)邏輯上的概念。

更加有趣的問(wèn)題是,“可以放到3個(gè)tier上”和“一定要放到3個(gè)tier上”還不是一回事,如果把我們的三個(gè)邏輯層次都放到1臺(tái)(組)機(jī)器上時(shí),這是個(gè)幾tier的架構(gòu)呢?當(dāng)然還是3tier,因?yàn)槟阌心芰﹄S時(shí)把3者分布出去,而不會(huì)被一定限制在一臺(tái)(組)機(jī)器上。這樣看來(lái),對(duì)3tier架構(gòu)里的層使用layer的稱呼總是很保險(xiǎn)的。因?yàn)樗粫?huì)暗示分布性。

除了物理與邏輯上的區(qū)別外,layer一般還暗示了“下面的layer一般要為上面的layer提供服務(wù)”,而tier這種暗示的意味很弱??梢钥匆幌耲ava的體系結(jié)構(gòu)圖來(lái)理解這一點(diǎn)。

3. c/s與b/s

經(jīng)??吹竭@樣的說(shuō)法“c/s結(jié)構(gòu)是2-tier的,b/s結(jié)構(gòu)是3-tier或者N-tier的”。我覺(jué)得這里面存在著一個(gè)對(duì)c/s重大的誤解。

首先c/s的出現(xiàn)是對(duì)直接操作數(shù)據(jù)庫(kù)的一次顛覆,客戶端與服務(wù)器終于可以分開(kāi)了,它僅僅是做了一個(gè)最大范圍的劃分,把機(jī)器的世界分為了客戶端與服務(wù)器,并沒(méi)有暗示客戶端與服務(wù)器只能各自是一個(gè)tier,只不過(guò)在這個(gè)名詞出現(xiàn)的年代,還不可能分出更多的層。

b/s結(jié)構(gòu)突出的特點(diǎn)是客戶端使用了瀏覽器,從大范圍上來(lái)講,也是客戶端與服務(wù)器兩個(gè)層次,只不過(guò)由于瀏覽器這個(gè)客戶端的功能實(shí)在是太弱了,不可能直接操作數(shù)據(jù)庫(kù),直接導(dǎo)致了b/s結(jié)構(gòu)至少是3-tier的。

因此,說(shuō)c/s結(jié)構(gòu)是2-tier的,至少是不準(zhǔn)確的,一個(gè)swing的客戶端調(diào)用EJB,EJB訪問(wèn)數(shù)據(jù)庫(kù),這樣的結(jié)構(gòu)當(dāng)然是3-Tier的,偏偏它怎么講都是一個(gè)c/s結(jié)構(gòu)。

因此,b/s結(jié)構(gòu)不過(guò)是c/s結(jié)構(gòu)的一個(gè)特例而已,與tier無(wú)關(guān)。

4. N-tier與N-layer

我們也經(jīng)??吹絅-tier這樣的說(shuō)法,但是實(shí)際鉆研下去卻發(fā)現(xiàn),分的不是tier而是layer。

前面說(shuō)過(guò),嚴(yán)格tier的定義是一個(gè)tier是完成同樣功能的一組機(jī)器,按照這樣的定義,實(shí)際上我們能做到物理分布的tier實(shí)在是不多??蛻魴C(jī)->web服務(wù)器->應(yīng)用服務(wù)器->數(shù)據(jù)庫(kù),如此而已,如果想要更多的tier,只能自己寫(xiě)服務(wù)了,或者把應(yīng)用服務(wù)器這個(gè)層次分為若干的tier。

更多的時(shí)候,也是更有意義的是做好layer的劃分,這樣在必要的時(shí)候才有可能把layer分布到tier上去。除了1個(gè)tier可以host多個(gè)layer外,某些layer也可能會(huì)分布到很多個(gè)tier上,比如提供基礎(chǔ)公共服務(wù)的layer。對(duì)于rich client的應(yīng)用來(lái)說(shuō),JDK這個(gè)layer需要同時(shí)分布在客戶端與服務(wù)器上。

責(zé)任編輯:yangsai 來(lái)源: IT168
相關(guān)推薦

2009-07-08 17:59:51

JDK JRE

2013-05-03 10:21:53

CentOSRedHat Linu

2009-07-22 18:03:00

ASP.NET ASP

2009-07-14 15:12:36

SwingSWT和AWT

2010-08-17 16:27:40

UPSEPS

2012-06-07 10:22:48

架構(gòu)設(shè)計(jì)邏輯層物理層

2009-08-13 14:06:37

C#結(jié)構(gòu)體結(jié)構(gòu)體和類(lèi)的區(qū)別

2022-09-13 08:40:51

DTOVOPO

2009-08-21 11:31:59

異步和多線程的區(qū)別

2009-08-17 18:04:49

C# 枚舉

2021-12-03 18:03:06

算法場(chǎng)景Rsa

2009-11-17 10:47:14

Silverlight

2010-04-16 11:32:29

PGA和UGA

2009-09-16 09:23:14

LINQ To SQL

2017-10-26 14:59:47

MybatisHibernate數(shù)據(jù)庫(kù)

2010-07-05 17:44:31

ER圖與UML圖

2009-09-24 13:39:06

Hibernate VHibernate P

2009-08-26 15:04:35

C#轉(zhuǎn)換

2010-05-17 16:23:22

IIS 6.0

2009-09-14 19:58:47

DataSet和Dat
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)