鄭則李
(廣東粵東高速公路實業(yè)發(fā)展有限公司,廣東 揭陽 515525)
架構(gòu)Web平臺的數(shù)據(jù)可以是通用的,例如用戶信息;可以是私有的,例如一個在線網(wǎng)盤;也可以是個人的,例如博客,微博;也可以是開放的,例如餐飲信息,旅游信息,天氣信息;也可以是需要嚴(yán)格保密的,例如銀行的賬戶信息。所有的數(shù)據(jù)通過Web呈現(xiàn)的面對用戶的所有功能都是提供一個給用戶操作的接口,通過接口訪問Web平臺專有的一組核心數(shù)據(jù)。
Web應(yīng)用,即使不為用戶提供也不使用任何用戶數(shù)據(jù)的平臺,仍然是由功能應(yīng)用內(nèi)部需要的數(shù)據(jù)來驅(qū)動的。假想一個提供餐飲信息查詢方面的網(wǎng)站,該Web站點的功能包括可查找的餐飲信息索引,關(guān)于每個菜式,餐飲店的基本信息,以及用戶對每個餐飲店做出的評論,用于獲取這些具體的信息構(gòu)成了這個應(yīng)用的核心,驅(qū)動了這一類Web平臺的架構(gòu)。
隨著Web2.0的網(wǎng)絡(luò)技術(shù)逐漸流行,數(shù)據(jù)在系統(tǒng)中的核心地位越來越明顯,Web2.0展現(xiàn)的核心主題就是數(shù)據(jù)驅(qū)動,而且依賴用戶本身提供了絕大部分的數(shù)據(jù),核心的數(shù)據(jù)映射驅(qū)動了網(wǎng)站的功能和體驗,與Web2.0之前網(wǎng)站的核心數(shù)據(jù)不同是,Web2.0數(shù)據(jù)是圍繞用戶與用戶之間的聯(lián)系來展開的層次架構(gòu)中。
圍繞用戶數(shù)據(jù)的Web平臺層次架構(gòu)中,在架構(gòu)的最上層數(shù)據(jù)展現(xiàn)層,輸入模塊將用戶的 Web輸入(Get,Pos,Cookie信息的集合)映射為對原始數(shù)據(jù)的請求,存儲于數(shù)據(jù)庫的中的原始數(shù)據(jù)被轉(zhuǎn)換為內(nèi)存中的數(shù)據(jù),通過業(yè)務(wù)邏輯進(jìn)行智能化處理,輸出模塊針對顯示原始數(shù)據(jù)對象進(jìn)行 HTML,JavaScript,CSS等轉(zhuǎn)換,是運行在基礎(chǔ)設(shè)施之上的應(yīng)用程序N層棧;而業(yè)務(wù)邏輯層則是根據(jù)一些建立在系統(tǒng)的數(shù)據(jù)組件規(guī)則來執(zhí)行的,平臺開發(fā)者可以利用分離的業(yè)務(wù)邏輯和應(yīng)用棧將核心的數(shù)據(jù)映射應(yīng)用于其他的Web應(yīng)用,用戶在這些應(yīng)用里提供或消費數(shù)據(jù)。架構(gòu)設(shè)計考慮創(chuàng)建統(tǒng)一可用的用戶關(guān)系數(shù)據(jù)上下文,體現(xiàn)用戶與數(shù)據(jù)之間的關(guān)系:數(shù)據(jù)可獲得性和用戶隱私。
架構(gòu)技術(shù)的要點:
橫向協(xié)作,業(yè)務(wù)分布,數(shù)據(jù)分布,縱向分層,流水作業(yè);以空間換時間,資源的預(yù)準(zhǔn)備,資源池,兼顧同步和異步;應(yīng)用可以通過Web平臺的數(shù)據(jù)服務(wù)來訪問有用的關(guān)系數(shù)據(jù),為外部的Web應(yīng)用,桌面操作系統(tǒng)應(yīng)用和其它設(shè)備上的應(yīng)用提供關(guān)系上下文;應(yīng)用可以通過數(shù)據(jù)驅(qū)動標(biāo)記語言來實現(xiàn)顯示,在Web平臺提供的頁面上集成自己的應(yīng)用;通過數(shù)據(jù)驅(qū)動標(biāo)記語言針對架構(gòu)的改進(jìn)需求,開發(fā)者可以使用Web平臺的cookie和javascript讓滿足應(yīng)用的架構(gòu)改動最?。患軜?gòu)創(chuàng)建了統(tǒng)一的關(guān)系上下文,Web平臺應(yīng)用可獲得平臺提供的功能而不必放棄對于平臺的用戶數(shù)據(jù)和顯示提供的用戶體驗期望。
DNS級負(fù)載均衡,動態(tài)頁面靜態(tài)化,靜態(tài)頁面使用輕量級的Web服務(wù)器,圖片,JavaScript,CSS,,F(xiàn)lash,流媒體等資源使用專用的服務(wù)器,頁面中重要的部分同步處理,次要部分使用Ajax技術(shù)進(jìn)行異步處理。
平臺通過創(chuàng)建外部可以訪問的Web服務(wù)來提供平臺數(shù)據(jù)訪問的接口。Web服務(wù)API接口為外部應(yīng)用和平臺數(shù)據(jù)之間建立了關(guān)系,本質(zhì)上位外部應(yīng)用棧添加了平臺數(shù)據(jù),對于用戶而言,可顯式的通過授權(quán)外部應(yīng)用來獲得平臺關(guān)系數(shù)據(jù)。
在Web平臺,目標(biāo)方法的名稱以及它的參數(shù)是在HTTP請求中傳遞的,請求還包括調(diào)用應(yīng)用相關(guān)的證書,與用戶-應(yīng)用相關(guān)的證書,與請求實例相關(guān)的證書。通過將HTTP的Get和Post輸入轉(zhuǎn)換成對內(nèi)部棧的調(diào)用,以XML格式輸出結(jié)果。
4.3 Web服務(wù)認(rèn)證
Web服務(wù)的客戶端在每次請求時發(fā)送Session Key,Web服務(wù)知道Session代表的用戶請求的應(yīng)用,當(dāng)用戶或Web平臺禁用該應(yīng)用,或者是用戶首次訪問的應(yīng)用,安全檢查將無法通過,Web服務(wù)返回錯誤給請求的客戶端,當(dāng)安全檢查通過,外部應(yīng)用站點會把該Session Key計入自己的用戶記錄,或存放到用戶的cookie中。
Web平臺通過帶有用戶控制的認(rèn)證握手的Web服務(wù)將內(nèi)部庫擴(kuò)展到外部應(yīng)用,通過這個轉(zhuǎn)換,平臺的關(guān)系數(shù)據(jù)可以驅(qū)動用戶決定認(rèn)證的其它應(yīng)用程序,通過關(guān)系上下文,在應(yīng)用的數(shù)據(jù)中創(chuàng)建新的關(guān)系;
隨著應(yīng)用越來越多地使用外部數(shù)據(jù)平臺,由于網(wǎng)絡(luò)帶寬占用,CPU負(fù)載造成的請求延遲將很快體現(xiàn),通過建立關(guān)系數(shù)據(jù)查詢服務(wù)機(jī)制,讓開發(fā)者能在在平臺的數(shù)據(jù)上使用標(biāo)準(zhǔn)的數(shù)據(jù)查詢語義,將計算推到平臺可使用戶取得平臺數(shù)據(jù)等同于取得自己的數(shù)據(jù),該架構(gòu)的實現(xiàn),是一項訪問平臺數(shù)據(jù)的架構(gòu)改進(jìn),是標(biāo)準(zhǔn)的黑盒Web服務(wù),讓開發(fā)者能夠消除多次數(shù)據(jù)請求的來回。
數(shù)據(jù)架構(gòu)實現(xiàn)了讓平臺關(guān)系數(shù)據(jù)更加開放的要求,外部應(yīng)用和數(shù)據(jù)平臺的共同用戶可以共享信息,每個新的關(guān)系應(yīng)用不需要一個新的關(guān)系網(wǎng)絡(luò),為讓更多的用戶發(fā)現(xiàn)Web平臺的應(yīng)用,平臺把應(yīng)用的內(nèi)容和它自己的內(nèi)容等同看待,讓外部的應(yīng)用展現(xiàn)在平臺的門戶站點上,幫助開發(fā)者獲得足以支撐數(shù)據(jù)關(guān)系功能所需的關(guān)鍵性用戶數(shù)。
平臺提供各種開源小工具,例如跨語言進(jìn)程間通信(IPC)工具,序列化輸出工具,平臺內(nèi)部異常轉(zhuǎn)換為外部錯誤代碼工具,XML或SOAP工具集等,通過使用這些小工具,應(yīng)用服務(wù)的設(shè)計者不必每次小改動都需要花費時間來更新代碼,而用戶更可以通過工具了解更多的平臺內(nèi)部架構(gòu)信息。
由于開發(fā)者創(chuàng)建的軟件運行在Web平臺的服務(wù)之上,使得平臺數(shù)據(jù)得到了長足的發(fā)展,但是仍有一些重要的,常見的Web使用場景和技術(shù),平臺的架構(gòu)不能支持,平臺通過下面的支持功能來修正存在的問題:
讓W(xué)eb平臺具有瀏覽器的職責(zé),在平臺自己的存儲庫中復(fù)制Cookie的功能,如同用戶操作瀏覽器保存Cookie信息,可有效地分離用戶在平臺上的應(yīng)用體驗和應(yīng)用的HTML站點上的應(yīng)用體驗。
Web平臺提供一些自定義的JavaScript庫,讓用戶場景更加容易實現(xiàn),同時場景受到平臺的控制,使應(yīng)用即動態(tài)又安全。
通過互聯(lián)網(wǎng)提供訪問的系統(tǒng),伸縮性已經(jīng)成為非常重要的要求歐,Web平臺可能會突然發(fā)現(xiàn)有幾百萬的用戶訪問,即使是百萬用戶訪問的Web平臺,也有集中的訪問和零散的訪問需求,這要求為系統(tǒng)投入的設(shè)備經(jīng)過能夠在最高承載下也能穩(wěn)定運行;也可能發(fā)現(xiàn)沒有用戶感興趣,為系統(tǒng)投入的所有設(shè)備都閑置,消耗著能源和管理成本,這對于企業(yè)來說同樣是一種投入上的浪費。在互聯(lián)網(wǎng)的世界里,一個Web站點可以在幾分鐘內(nèi)從其中一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)。
圍繞用戶數(shù)據(jù)有效的提高了Web平臺上所有的頁面的效用,這些數(shù)據(jù)擁有通用性,當(dāng)數(shù)據(jù)與外部開發(fā)者的應(yīng)用棧結(jié)合在一起時,數(shù)據(jù)的最佳使用開始出現(xiàn),通過Web平臺的展現(xiàn)層服務(wù),數(shù)據(jù)查詢服務(wù)和平臺特有的門戶API接口,協(xié)調(diào)不斷擴(kuò)展的數(shù)據(jù)訪問方法和網(wǎng)站容量的預(yù)期,針對平臺的新需求帶來的數(shù)據(jù)架構(gòu)改動帶來的問題,平臺又通過對數(shù)據(jù)訪問模式的更強(qiáng)改進(jìn)來解決問題。
[1]應(yīng)用Web Services構(gòu)建多層架構(gòu)的高效.NET應(yīng)用 (ISBN:7030152999)科學(xué)出版社2005
[2]Web信息架構(gòu):設(shè)計大型網(wǎng)站(ISBN:9787121070372)電子工業(yè)出版社 2008