成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Tier和Layer的區別

開發 架構
Tier和Layer這兩個架構概念經常會造成混淆。本文分析了tier與layer的四個分別,對一些常見的誤區做出了解答。

有關Tier和Layer的區別,這里詳細論述一下,大家共同探討。

1. 橫向與縱向

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

|||| <-- Layer

--
-- <-- tier
--

其實兩者表示起來恰恰相反:

|||| <-- Tier

--
-- <-- Layer
--

這種說法的確切含義是“Layer是水平方向<切割>的,tier是垂直方向<切割>的”。但是水平與垂直不過是個觀察角度的問題,所以這種說法并沒有揭示本質。

2. 物理與邏輯

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

可是在很多書籍里卻把3-tier的層分別叫做“表示layer”,“業務邏輯layer”和“數據存儲layer”。卻又分明在暗示tier和layer是沒有區別的。

的確,簡單來說Tier表示物理上的層次劃分,Layer表示邏輯上的層次劃分,這一點是很多人都同意的。但是邏輯上的東西終有一天需要映射到物理分布上,當一個Layer恰好占據了一個Tier時,應該叫它什么呢?

這就是混亂的來源。N-tier就是這種混亂的典型代表。

從邏輯上來講,你永遠可以把一個應用系統劃分為“表示layer”,“業務邏輯layer”和“數據存儲layer”。但是在映射到物理分布的時候,最早的方案只能把三者放到一臺機器上,比如用sql直接查詢數據庫。

再后來,可以把“表示layer”和“業務邏輯layer”放到一臺機器上,數據庫單獨放,這就是所謂的c/s結構。

到了應用服務器的年代,終于可以把三者分別放到三臺機器上了??蛻舳藱C器放表示layer,應用服務器放業務邏輯layer,數據庫機器放數據存儲layer。這樣從物理上看,我們就有了3個tier,只不過恰好每個tier都host了一個layer。更加有意思的是,每個物理上的tier可以不是1臺機器,而是一組完成同樣功能的機器,從這個角度來說,tier也是一個邏輯上的概念。

更加有趣的問題是,“可以放到3個tier上”和“一定要放到3個tier上”還不是一回事,如果把我們的三個邏輯層次都放到1臺(組)機器上時,這是個幾tier的架構呢?當然還是3tier,因為你有能力隨時把3者分布出去,而不會被一定限制在一臺(組)機器上。這樣看來,對3tier架構里的層使用layer的稱呼總是很保險的。因為它不會暗示分布性。

除了物理與邏輯上的區別外,layer一般還暗示了“下面的layer一般要為上面的layer提供服務”,而tier這種暗示的意味很弱??梢钥匆幌耲ava的體系結構圖來理解這一點。

3. c/s與b/s

經常看到這樣的說法“c/s結構是2-tier的,b/s結構是3-tier或者N-tier的”。我覺得這里面存在著一個對c/s重大的誤解。

首先c/s的出現是對直接操作數據庫的一次顛覆,客戶端與服務器終于可以分開了,它僅僅是做了一個最大范圍的劃分,把機器的世界分為了客戶端與服務器,并沒有暗示客戶端與服務器只能各自是一個tier,只不過在這個名詞出現的年代,還不可能分出更多的層。

b/s結構突出的特點是客戶端使用了瀏覽器,從大范圍上來講,也是客戶端與服務器兩個層次,只不過由于瀏覽器這個客戶端的功能實在是太弱了,不可能直接操作數據庫,直接導致了b/s結構至少是3-tier的。

因此,說c/s結構是2-tier的,至少是不準確的,一個swing的客戶端調用EJB,EJB訪問數據庫,這樣的結構當然是3-Tier的,偏偏它怎么講都是一個c/s結構。

因此,b/s結構不過是c/s結構的一個特例而已,與tier無關。

4. N-tier與N-layer

我們也經??吹絅-tier這樣的說法,但是實際鉆研下去卻發現,分的不是tier而是layer。

前面說過,嚴格tier的定義是一個tier是完成同樣功能的一組機器,按照這樣的定義,實際上我們能做到物理分布的tier實在是不多??蛻魴C->web服務器->應用服務器->數據庫,如此而已,如果想要更多的tier,只能自己寫服務了,或者把應用服務器這個層次分為若干的tier。

更多的時候,也是更有意義的是做好layer的劃分,這樣在必要的時候才有可能把layer分布到tier上去。除了1個tier可以host多個layer外,某些layer也可能會分布到很多個tier上,比如提供基礎公共服務的layer。對于rich client的應用來說,JDK這個layer需要同時分布在客戶端與服務器上。

責任編輯:yangsai 來源: IT168
相關推薦

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

架構設計邏輯層物理層

2009-08-13 14:06:37

C#結構體結構體和類的區別

2022-09-13 08:40:51

DTOVOPO

2009-08-21 11:31:59

異步和多線程的區別

2009-08-17 18:04:49

C# 枚舉

2021-12-03 18:03:06

算法場景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

2010-07-05 17:44:31

ER圖與UML圖

2017-10-26 14:59:47

MybatisHibernate數據庫

2009-09-24 13:39:06

Hibernate VHibernate P

2010-05-17 16:23:22

IIS 6.0

2009-08-26 15:04:35

C#轉換

2009-09-14 19:58:47

DataSet和Dat
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久观看 | 亚洲一区二区久久久 | 欧美精品久久久久 | 日本精品久久久久久久 | 久久久久久久久久久久久9999 | 午夜精品久久久久久久久久久久久 | 一区二区三区四区不卡视频 | 国产一区二区黑人欧美xxxx | 亚洲性视频网站 | 日韩精品久久久久久 | 天天躁日日躁狠狠的躁天龙影院 | 在线视频日韩 | 国产三区精品 | 亚洲成av人片在线观看 | 欧美色性 | 成人精品国产免费网站 | 精品视频一区二区三区四区 | 国产色网站 | 一二三四在线视频观看社区 | 亚洲第一天堂 | 美女天堂 | 亚洲精品天堂 | 亚洲国产中文字幕 | 中文在线视频 | 亚洲中午字幕 | 97精品超碰一区二区三区 | 精品综合久久久 | 粉嫩高清一区二区三区 | h视频在线观看免费 | 免费同性女女aaa免费网站 | 99精品国产一区二区三区 | 中文在线视频观看 | 美女视频三区 | 国产一级黄色网 | 精品国产欧美一区二区三区成人 | 日韩欧美视频网站 | 久草在线中文888 | 国产精品色婷婷久久58 | 精品视频一区二区在线观看 | 成人黄色在线观看 | 91精品国产一区二区三区蜜臀 |