Apptivity Java應(yīng)用服務(wù)器制造商、總部設(shè)在馬薩褚塞州貝德福德市的Progress軟件公司副總裁Dennis Moore建議,如果您想得到一層、二層和三層模式體系結(jié)構(gòu)的最恰當(dāng)?shù)谋扔?,那么就可以看一看食品的生產(chǎn)過程。在一層模式中,您自己采集食品。在二層模式中,您直接從當(dāng)?shù)剞r(nóng)場(chǎng)購買食品。而在三層模式中,您從超級(jí)市場(chǎng)購買食品,而超級(jí)市場(chǎng)從多家農(nóng)場(chǎng)采購食品。
初看起來,從荷蘭運(yùn)來西紅柿比直接從當(dāng)?shù)剞r(nóng)場(chǎng)購買效率更低,成本更高,而且還不如自己種。但我們都清楚事實(shí)恰恰與此相反。大型專業(yè)化農(nóng)場(chǎng)可以更高的效率生產(chǎn)食品,從而能夠彌補(bǔ)運(yùn)輸、貯存和分銷的附加成本。消費(fèi)者把食品的生產(chǎn)委托給若干專業(yè)化農(nóng)場(chǎng)后,最終不但能節(jié)省開支,還能獲得品種更多的食品,并確保在不發(fā)生全球性災(zāi)害的前提下總能有充足的食品供應(yīng)。如果大型企業(yè)教會(huì)我們新的方式,那么這就是規(guī)模經(jīng)濟(jì)的價(jià)值。
Progress公司的Moore先生認(rèn)為,客戶機(jī)/服務(wù)器的領(lǐng)域也是類似的道理。雖然二層客戶機(jī)/服務(wù)器模式在基于PC的一層應(yīng)用程序基礎(chǔ)上更進(jìn)了一步,但是。計(jì)算機(jī)系統(tǒng)開發(fā)公司的Herring先生說:"客戶機(jī)/服務(wù)器做出了很多承諾,但技術(shù)上卻達(dá)不到。"
客戶機(jī)/服務(wù)器向最終用戶做出的承諾之一就是,用戶可廣泛地訪問數(shù)據(jù)。在客戶機(jī)/服務(wù)器出現(xiàn)之前,對(duì)駐留在全球各地眾多數(shù)據(jù)庫中的龐大的數(shù)據(jù)存儲(chǔ)來說,最終用戶只具備有限的經(jīng)驗(yàn)。而保存這些數(shù)據(jù)的大型機(jī)的嚴(yán)密程度甚至超過了諾克斯堡。對(duì)那些為數(shù)極少的,能夠訪問數(shù)據(jù)倉庫的應(yīng)用程序---通常是3270終端上的應(yīng)用程序---它們實(shí)在太笨重和乏味,足以使最終用戶放棄整個(gè)想法。
與最終用戶缺乏經(jīng)驗(yàn)的情形一樣,我們也不能保證肯定能與數(shù)據(jù)進(jìn)行交互,并根據(jù)數(shù)據(jù)進(jìn)行交易。數(shù)據(jù)是一種神圣的東西,只有那些精通相應(yīng)工具的專家才會(huì)擺弄。
當(dāng)然,客戶機(jī)/服務(wù)器面臨的問題是,對(duì)每個(gè)希望使用應(yīng)用程序的用戶來說,您都得去他們的計(jì)算機(jī)上安裝軟件。從很多方面看,這種模式非常麻煩。首先,在每臺(tái)計(jì)算機(jī)上逐個(gè)安裝軟件非常耗費(fèi)時(shí)間,更不要說成本了。其次,在個(gè)人計(jì)算機(jī)的世界里,每臺(tái)計(jì)算機(jī)都不相同,要進(jìn)行維護(hù)就更麻煩了。例如,基于組件的應(yīng)用開發(fā)工具制造商、紐約州紐約市Jyacc公司旗下Prolific公司總裁Frank Vafier建議說:"有時(shí),您需要安裝的DDL (動(dòng)態(tài)鏈接庫)會(huì)與其它程序的DLL發(fā)生沖突。"
第三,Herring先生認(rèn)為,因?yàn)樵诙幽J较?,顯示和邏輯被封閉在一個(gè)層內(nèi),客戶機(jī)就會(huì)非常大,或者至少比較大,因而會(huì)消耗本機(jī)存儲(chǔ)空間和系統(tǒng)資源。
換句話說,Vafier先生說:"除非您需要大量使用應(yīng)用程序,否則就根本不值得安裝這些東西。對(duì)偶爾使用的用戶來說,應(yīng)用程序根本沒用。" Vafier先生舉例說明了向大眾市場(chǎng)推出的二層客戶機(jī)/服務(wù)器應(yīng)用程序在早期曾經(jīng)經(jīng)歷過的失敗,并專門談到最初的家庭銀行應(yīng)用程序和Federal Express Corp. (聯(lián)邦快遞公司)開發(fā)的軟件包跟蹤程序(不是基于Web的)。
第三層
近來,我們普遍認(rèn)為出現(xiàn)各種在線數(shù)據(jù)庫應(yīng)用程序是很自然的事情 ---但是這些應(yīng)用程序,不論其目的和用途為何,在幾年前甚至不可能出現(xiàn)。不論我們是制訂自己的旅行計(jì)劃,還是在線訂購圖書或光盤,乃至查閱雇員的401K記錄,用Vafier先生的話說,這種在"源頭進(jìn)行交易"的能力是任何新的應(yīng)用程序都必須具備的功能。
除了極少的幾個(gè)例外情況外,使這些應(yīng)用程序成為可能的是在客戶機(jī)與數(shù)據(jù)庫之間增加的一個(gè)層---即Progress公司的Moore先生所謂的"中間層",他說:"中間層對(duì)計(jì)算的作用是把會(huì)話、通信負(fù)載和工作本身打包,分成可以管理的塊,這樣就能進(jìn)行有效的處理。"
中間層(又稱邏輯層、應(yīng)用 服務(wù)器或信息代理)可執(zhí)行很多功能。這些功能中有一些曾經(jīng)是由客戶機(jī)或數(shù)據(jù)庫執(zhí)行的,但中間層所提供的很多功能都是全新的。
Sun Microsystems公司北美Java中心總經(jīng)理Stu Stern說,在基于Web的數(shù)據(jù)庫應(yīng)用程序領(lǐng)域,中間層所執(zhí)行的最基本任務(wù)可能就是提供安全性。中間層駐留在企業(yè)網(wǎng)絡(luò)內(nèi)防火墻以外,并以萬維網(wǎng)服務(wù)器的形式構(gòu)成客戶機(jī)與數(shù)據(jù)庫堡壘之間的可靠門戶。
在純粹的三層系統(tǒng)中,中間層的任務(wù)是提供應(yīng)用程序邏輯---程序的核心部分。Stern先生認(rèn)為,把應(yīng)用程序邏輯放置在客戶機(jī)層或數(shù)據(jù)層會(huì)產(chǎn)生很大麻煩,因?yàn)?前端和后端系統(tǒng)常隨需求的變化而有較大的變動(dòng)。"如果把應(yīng)用程序邏輯構(gòu)筑在起協(xié)調(diào)作用的中間層內(nèi),就能確保不論前端或后端如何變化,編碼的大部分都能保持不變。
最后,企業(yè)還依靠中間層確保應(yīng)用程序能被最終用戶所獲得。在大型系統(tǒng)中,這就會(huì)涉及在服務(wù)器之間保持負(fù)載平衡、管理客戶機(jī)的連接以及代理在客戶機(jī)和數(shù)據(jù)庫之間來回傳輸?shù)男畔⒌裙δ?。Prolific公司的Vafier先生認(rèn)為,對(duì)Web應(yīng)用尤為重要的是:能夠?qū)?yīng)用程序邏輯分布在多臺(tái)服務(wù)器上,從而提高其計(jì)算處理能力。他說:"如果二層客戶機(jī)/服務(wù)器應(yīng)用程序是成功的,那么希望使用它的用戶的數(shù)量會(huì)比您預(yù)想的多得多。如果是基于Web的應(yīng)用,這個(gè)數(shù)量可能是100倍或1000倍。"
為什么現(xiàn)在才采用三層體系結(jié)構(gòu)?為什么不早些采用呢? 如果每個(gè)人都認(rèn)為三層體系結(jié)構(gòu)更好,那么為什么直到現(xiàn)在它才出現(xiàn)呢?
實(shí)際上,三層體系結(jié)構(gòu)的想法并不新鮮。正在使用IBM公司的Customer Information Control System ( CICS ---客戶信息控制系統(tǒng))和BEA系統(tǒng)公司的Tuxeda事務(wù)處理(TP)監(jiān)視器等中間件的Progress公司的Moore先生說:"三層結(jié)構(gòu)早就是可能的。"實(shí)際上,如果您好好尋找的話,您就會(huì)在很多地方看到生產(chǎn)過程采用了三層應(yīng)用程序。
初看起來,從荷蘭運(yùn)來西紅柿比直接從當(dāng)?shù)剞r(nóng)場(chǎng)購買效率更低,成本更高,而且還不如自己種。但我們都清楚事實(shí)恰恰與此相反。大型專業(yè)化農(nóng)場(chǎng)可以更高的效率生產(chǎn)食品,從而能夠彌補(bǔ)運(yùn)輸、貯存和分銷的附加成本。消費(fèi)者把食品的生產(chǎn)委托給若干專業(yè)化農(nóng)場(chǎng)后,最終不但能節(jié)省開支,還能獲得品種更多的食品,并確保在不發(fā)生全球性災(zāi)害的前提下總能有充足的食品供應(yīng)。如果大型企業(yè)教會(huì)我們新的方式,那么這就是規(guī)模經(jīng)濟(jì)的價(jià)值。
Progress公司的Moore先生認(rèn)為,客戶機(jī)/服務(wù)器的領(lǐng)域也是類似的道理。雖然二層客戶機(jī)/服務(wù)器模式在基于PC的一層應(yīng)用程序基礎(chǔ)上更進(jìn)了一步,但是。計(jì)算機(jī)系統(tǒng)開發(fā)公司的Herring先生說:"客戶機(jī)/服務(wù)器做出了很多承諾,但技術(shù)上卻達(dá)不到。"
客戶機(jī)/服務(wù)器向最終用戶做出的承諾之一就是,用戶可廣泛地訪問數(shù)據(jù)。在客戶機(jī)/服務(wù)器出現(xiàn)之前,對(duì)駐留在全球各地眾多數(shù)據(jù)庫中的龐大的數(shù)據(jù)存儲(chǔ)來說,最終用戶只具備有限的經(jīng)驗(yàn)。而保存這些數(shù)據(jù)的大型機(jī)的嚴(yán)密程度甚至超過了諾克斯堡。對(duì)那些為數(shù)極少的,能夠訪問數(shù)據(jù)倉庫的應(yīng)用程序---通常是3270終端上的應(yīng)用程序---它們實(shí)在太笨重和乏味,足以使最終用戶放棄整個(gè)想法。
與最終用戶缺乏經(jīng)驗(yàn)的情形一樣,我們也不能保證肯定能與數(shù)據(jù)進(jìn)行交互,并根據(jù)數(shù)據(jù)進(jìn)行交易。數(shù)據(jù)是一種神圣的東西,只有那些精通相應(yīng)工具的專家才會(huì)擺弄。
當(dāng)然,客戶機(jī)/服務(wù)器面臨的問題是,對(duì)每個(gè)希望使用應(yīng)用程序的用戶來說,您都得去他們的計(jì)算機(jī)上安裝軟件。從很多方面看,這種模式非常麻煩。首先,在每臺(tái)計(jì)算機(jī)上逐個(gè)安裝軟件非常耗費(fèi)時(shí)間,更不要說成本了。其次,在個(gè)人計(jì)算機(jī)的世界里,每臺(tái)計(jì)算機(jī)都不相同,要進(jìn)行維護(hù)就更麻煩了。例如,基于組件的應(yīng)用開發(fā)工具制造商、紐約州紐約市Jyacc公司旗下Prolific公司總裁Frank Vafier建議說:"有時(shí),您需要安裝的DDL (動(dòng)態(tài)鏈接庫)會(huì)與其它程序的DLL發(fā)生沖突。"
第三,Herring先生認(rèn)為,因?yàn)樵诙幽J较?,顯示和邏輯被封閉在一個(gè)層內(nèi),客戶機(jī)就會(huì)非常大,或者至少比較大,因而會(huì)消耗本機(jī)存儲(chǔ)空間和系統(tǒng)資源。
換句話說,Vafier先生說:"除非您需要大量使用應(yīng)用程序,否則就根本不值得安裝這些東西。對(duì)偶爾使用的用戶來說,應(yīng)用程序根本沒用。" Vafier先生舉例說明了向大眾市場(chǎng)推出的二層客戶機(jī)/服務(wù)器應(yīng)用程序在早期曾經(jīng)經(jīng)歷過的失敗,并專門談到最初的家庭銀行應(yīng)用程序和Federal Express Corp. (聯(lián)邦快遞公司)開發(fā)的軟件包跟蹤程序(不是基于Web的)。
第三層
近來,我們普遍認(rèn)為出現(xiàn)各種在線數(shù)據(jù)庫應(yīng)用程序是很自然的事情 ---但是這些應(yīng)用程序,不論其目的和用途為何,在幾年前甚至不可能出現(xiàn)。不論我們是制訂自己的旅行計(jì)劃,還是在線訂購圖書或光盤,乃至查閱雇員的401K記錄,用Vafier先生的話說,這種在"源頭進(jìn)行交易"的能力是任何新的應(yīng)用程序都必須具備的功能。
除了極少的幾個(gè)例外情況外,使這些應(yīng)用程序成為可能的是在客戶機(jī)與數(shù)據(jù)庫之間增加的一個(gè)層---即Progress公司的Moore先生所謂的"中間層",他說:"中間層對(duì)計(jì)算的作用是把會(huì)話、通信負(fù)載和工作本身打包,分成可以管理的塊,這樣就能進(jìn)行有效的處理。"
中間層(又稱邏輯層、應(yīng)用 服務(wù)器或信息代理)可執(zhí)行很多功能。這些功能中有一些曾經(jīng)是由客戶機(jī)或數(shù)據(jù)庫執(zhí)行的,但中間層所提供的很多功能都是全新的。
Sun Microsystems公司北美Java中心總經(jīng)理Stu Stern說,在基于Web的數(shù)據(jù)庫應(yīng)用程序領(lǐng)域,中間層所執(zhí)行的最基本任務(wù)可能就是提供安全性。中間層駐留在企業(yè)網(wǎng)絡(luò)內(nèi)防火墻以外,并以萬維網(wǎng)服務(wù)器的形式構(gòu)成客戶機(jī)與數(shù)據(jù)庫堡壘之間的可靠門戶。
在純粹的三層系統(tǒng)中,中間層的任務(wù)是提供應(yīng)用程序邏輯---程序的核心部分。Stern先生認(rèn)為,把應(yīng)用程序邏輯放置在客戶機(jī)層或數(shù)據(jù)層會(huì)產(chǎn)生很大麻煩,因?yàn)?前端和后端系統(tǒng)常隨需求的變化而有較大的變動(dòng)。"如果把應(yīng)用程序邏輯構(gòu)筑在起協(xié)調(diào)作用的中間層內(nèi),就能確保不論前端或后端如何變化,編碼的大部分都能保持不變。
最后,企業(yè)還依靠中間層確保應(yīng)用程序能被最終用戶所獲得。在大型系統(tǒng)中,這就會(huì)涉及在服務(wù)器之間保持負(fù)載平衡、管理客戶機(jī)的連接以及代理在客戶機(jī)和數(shù)據(jù)庫之間來回傳輸?shù)男畔⒌裙δ?。Prolific公司的Vafier先生認(rèn)為,對(duì)Web應(yīng)用尤為重要的是:能夠?qū)?yīng)用程序邏輯分布在多臺(tái)服務(wù)器上,從而提高其計(jì)算處理能力。他說:"如果二層客戶機(jī)/服務(wù)器應(yīng)用程序是成功的,那么希望使用它的用戶的數(shù)量會(huì)比您預(yù)想的多得多。如果是基于Web的應(yīng)用,這個(gè)數(shù)量可能是100倍或1000倍。"
為什么現(xiàn)在才采用三層體系結(jié)構(gòu)?為什么不早些采用呢? 如果每個(gè)人都認(rèn)為三層體系結(jié)構(gòu)更好,那么為什么直到現(xiàn)在它才出現(xiàn)呢?
實(shí)際上,三層體系結(jié)構(gòu)的想法并不新鮮。正在使用IBM公司的Customer Information Control System ( CICS ---客戶信息控制系統(tǒng))和BEA系統(tǒng)公司的Tuxeda事務(wù)處理(TP)監(jiān)視器等中間件的Progress公司的Moore先生說:"三層結(jié)構(gòu)早就是可能的。"實(shí)際上,如果您好好尋找的話,您就會(huì)在很多地方看到生產(chǎn)過程采用了三層應(yīng)用程序。