沒(méi)錯,就是這位仁兄在不經(jīng)意之間改變整個(gè)世界。在CERN(European Particle Physics Laboratory,歐洲量子物理研究所)工作期間,他發(fā)現了CERN在信息的內部溝通存在信息遺漏的弊端,于是在1989年3月Tim向CERN提交了名為“Information Management: A Proposal”的建議書(shū),這個(gè)也是迄今為止我們能夠看到的關(guān)于互聯(lián)網(wǎng)概念的第一份公開(kāi)文件。在這份文件中,Tim提出利用Hypertext(超文本)構造鏈接信息系統的設想 。同樣,我們也可以從文件中看到“Browser(瀏覽器)”概念的最初提出。1991年,在此基礎上Tim開(kāi)發(fā)了第一個(gè)真正意義上的Web 服務(wù)器——httpd、第一個(gè)客戶(hù)端瀏覽器——WorldWideWeb,之后又在1991年建立并開(kāi)通第一個(gè)WWW網(wǎng)站http://info.cern.ch/(該網(wǎng)站至今仍然是CERN的官方站點(diǎn))。從此互聯(lián)網(wǎng)真正開(kāi)始向社會(huì )普及。至于后來(lái)Tim加入麻省理工大學(xué)LSC(計算機科學(xué)實(shí)驗室)和后來(lái)成立的W3C又是另外一件有深遠意義的事情了。
不管如何,通過(guò)WWW,這個(gè)有點(diǎn)憨厚的英國人已經(jīng)徹底改變整個(gè)世界。
1993年5月,伊利諾斯州大學(xué)的天才少年Marc Andreessen開(kāi)發(fā)了第一個(gè)瀏覽器Mosaic,1994年上半年他和Jim Clark成立了Mosaic Communications(也就是Netscape的前身),同年10月發(fā)布了Netscape 0.9,這個(gè)是我們看到的第一個(gè)瀏覽器的Logo,雖然今日已經(jīng)面目全非。
而Netscape的出現終于讓WWW得到了爆炸性的普及。
隨著(zhù)瀏覽器大戰的開(kāi)始,世人真正意義的享受了科技進(jìn)步給人類(lèi)帶來(lái)的福旨。一夜之間,B/S結構成為應用開(kāi)發(fā)最主流架構,瀏覽器成為客戶(hù)端的唯一工具,這種不需要部署的軟件應用確實(shí)給了很多人無(wú)限的瘋狂。ISV、解決方案提供商及其企業(yè)用戶(hù)也不約而同的提出采用B/S架構作為企業(yè)信息應用的架構,因為那樣可以免去之前C/S時(shí)代高昂的部署和升級費用,能夠快速適應不斷變動(dòng)的企業(yè)業(yè)務(wù)。
漸漸的,他們發(fā)現自己不斷復雜的業(yè)務(wù)通過(guò)簡(jiǎn)單的頁(yè)面瀏覽已經(jīng)無(wú)法滿(mǎn)足要求,這個(gè)時(shí)候相關(guān)的客戶(hù)端腳本技術(shù)走上舞臺,說(shuō)起來(lái)有點(diǎn)戲劇性,Netscape設計腳本的初衷是為了讓網(wǎng)頁(yè)有更好的瀏覽性,從而增加頁(yè)面瀏覽的樂(lè )趣,他們一定沒(méi)有想到這個(gè)概念卻在他們的對手發(fā)揮到極致,等到那場(chǎng)瀏覽器大戰的硝煙漸漸淡去的時(shí)候,我們發(fā)現腳本已經(jīng)面目全非,或者說(shuō)已經(jīng)臃腫不堪。
為了沿襲C/S結構下的界面使用體驗,開(kāi)發(fā)人員不得不利用大量的JavaScript和DHTML去實(shí)現或者說(shuō)“模擬”傳統應用程序的使用界面,比如菜單,工具條,還有那復雜的圖形和表格。也因為如此,Web開(kāi)發(fā)成為當今最火爆的應用領(lǐng)域,除了相關(guān)的服務(wù)器開(kāi)發(fā)技術(shù)如ASP,PHP,JSP還有后來(lái)的王者ASP.NET,客戶(hù)端技術(shù)則包括了HTML,CSS,JavaScript,DHTML等等方面的技術(shù),這些都成為開(kāi)發(fā)人員的一種追逐。更有甚者,利用客戶(hù)端技術(shù)開(kāi)發(fā)了一整套完整的類(lèi)庫,這點(diǎn)最著(zhù)名的莫過(guò)于Bindows(可以從http://www.bindows.net下載)。
在解決了部署和更新的問(wèn)題之后,B/S同樣引入了一些令人頭痛的問(wèn)題:
1) 始終沒(méi)有一個(gè)非常標準的技術(shù)規范來(lái)約定,由此造成了各個(gè)瀏覽器在w3c之外做的擴展,在應用開(kāi)發(fā)中,更多的是需要依賴(lài)于這些擴展去實(shí)現更加絢麗的圖形表現和靈活的交互。比如IE里面提出了HTC的概念,也增加了許多相關(guān)的濾鏡(Filter),Mozilla也提出了XUL用來(lái)擴展用戶(hù)界面。但是如果需要設計一個(gè)具有強大功能的用戶(hù)系統,我們更多情況下不得不依賴(lài)于專(zhuān)有瀏覽器的擴展實(shí)現。
2) 作為瀏覽器大戰的勝利者IE從2001年之后就沒(méi)有推出過(guò)重要版本更新,那么也就意味者我們所有的開(kāi)發(fā)技術(shù)是停滯在2001年之前的理念,這點(diǎn)和服務(wù)器端技術(shù)的不斷發(fā)展已經(jīng)漸漸脫節。
3) 作為基于瀏覽器的應用,因為安全等等方面的原因始終做不到能夠成為應用的集成者,更多時(shí)候是被動(dòng)的去接受單一服務(wù)器提供的應用,比如對于客戶(hù)端希望能夠跨越不同網(wǎng)絡(luò )調用相關(guān)的Web Services,因為安全模型的畸形(不是非常完善的資源訪(fǎng)問(wèn)控制),我們無(wú)法做到在同一瀏覽器內流暢的實(shí)現跨應用集成[1]。
4) 基于瀏覽器的技術(shù)嚴格意義來(lái)說(shuō)是依賴(lài)于在線(xiàn)訪(fǎng)問(wèn)而構建的應用,在需要一些離線(xiàn)(Office Line)的應用中,就顯得有心無(wú)力,畢竟從瀏覽器設計的一開(kāi)始就是希望能夠在意個(gè)最小權限的“沙盒”模型下去運行,因此對于本地資源的訪(fǎng)問(wèn)默認情況下是拒絕的,而某些瀏覽器如IE允許通過(guò)設置來(lái)跨越這個(gè)安全模型,但是沒(méi)有提供一個(gè)非常良好的權限分層機制,閘門(mén)一開(kāi),一切猶如洪水猛獸。
Browser/Server,這個(gè)近10年來(lái)風(fēng)光無(wú)限的詞眼,依舊不是那么盡善盡美。
我們需要什么?
其實(shí)理由已經(jīng)很簡(jiǎn)單,雖然網(wǎng)絡(luò )上已經(jīng)出現了許多C/S或者Rich Client回歸的論調,我想更多的是因為對于目前B/S架構存在的問(wèn)題而提出的,因為從本質(zhì)上來(lái)說(shuō)許多問(wèn)題在C/S結構下是不存在的。無(wú)論如何,我想回歸只是一個(gè)傾向,希望利用C/S的優(yōu)勢去解決B/S存在的種種問(wèn)題,而不是簡(jiǎn)單的回歸,假若真的如此,我們又要重復過(guò)去的那種災難如令人頭痛的部署,頻繁升級帶來(lái)的版本兼容問(wèn)題,我想對于企業(yè)的IT工作者,誰(shuí)也不愿意重蹈覆轍。
那么,我們需要什么?Tim通過(guò)互聯(lián)網(wǎng)已經(jīng)改變了這個(gè)世界,那么下一步將要走向何方?這個(gè)時(shí)候關(guān)于RIA(Rich Internet Application)的論調也就形成,并且在2004年逐漸得到開(kāi)發(fā)人員和系統架構師的認同。嚴格意義上來(lái)說(shuō),我們不會(huì )關(guān)心哪個(gè)名字縮寫(xiě)會(huì )是下一代的主流,我們更多的是著(zhù)眼于需要解決的技術(shù)
1) 需要一個(gè)更加強大的客戶(hù)端運行環(huán)境,同時(shí)提供統一簡(jiǎn)便的開(kāi)發(fā)模型。某種意義上來(lái)說(shuō)目前的瀏覽器正是HTML和腳本這種混合“程序”的運行時(shí),所有的代碼(HTML,CSS,JavaScript)等等都是在瀏覽器這個(gè)受控的環(huán)境下去運行的。但是目前的運行環(huán)境遠遠不夠,同時(shí)沒(méi)有一個(gè)統一的編程模型。
2) 盡大可能的利用客戶(hù)端資源,并且資源的訪(fǎng)問(wèn)是在一個(gè)可以控制的環(huán)境下完成的,隨著(zhù)HTML和CSS的演變,已經(jīng)不是最開(kāi)始一個(gè)Hyperlink(超連接)那么簡(jiǎn)單,但是相對于Windows運行環(huán)境,在瀏覽器上能夠完成的圖形表現遠遠不夠。
3) 天生具備訪(fǎng)問(wèn)網(wǎng)絡(luò )的能力,同時(shí)能夠比較“Smart”的集成Internet上的應用。
4) 能夠自動(dòng)完成安全和升級
5) 擁有一個(gè)完整的安全模型和CAS(代碼訪(fǎng)問(wèn)安全)。
6) 具備離線(xiàn)應用的能力,因為訪(fǎng)問(wèn)終端的多樣化,對于“有時(shí)離線(xiàn)”的支持已經(jīng)成為一個(gè)關(guān)鍵點(diǎn),例如在基于智能手機的應用時(shí),要求客戶(hù)端實(shí)時(shí)在線(xiàn)有點(diǎn)勉為其難,這個(gè)時(shí)候在Mobile的應用上采用傳統的B/S結構已經(jīng)不太現實(shí)。
針對上述要求,一些主流的應用廠(chǎng)商也提出了各自不同的概念,比如微軟的Smart Client(智能客戶(hù)端)技術(shù),MacroMedia的Rich Client還有Mozilla的XUL,下面就針對這三種主流的RIA應用架構做一些闡述。
從某種意義上來(lái)講,微軟提出的智能客戶(hù)端和上述提到的是最為接近的,也提供了最為完善的運行環(huán)境支持。智能客戶(hù)端在設計和實(shí)現方面差異極大,這既包括應用程序要求,也包括可以使用它們的方案和環(huán)境的數量。因此,智能客戶(hù)端可以采取許多不同的形式和風(fēng)格。根據智能客戶(hù)端應用程序所面向的平臺,可以將這些形式劃分為三大類(lèi):
n Windows 智能客戶(hù)端應用程序
Windows 智能客戶(hù)端應用程序適合于需要將應用程序作為熟悉的桌面類(lèi)型應用程序進(jìn)行部署和訪(fǎng)問(wèn)的情況。這些類(lèi)型的應用程序通常由其自身提供其大部分功能,但是在適當的時(shí)候可以與其他應用程序集成或者協(xié)調其他應用程序。它們提供針對特定任務(wù)進(jìn)行調整的應用程序功能,以提供特定的或高性能的處理或圖形能力。
n Office 智能客戶(hù)端應用程序
Microsoft Office System 2003 為您提供了用來(lái)生成智能客戶(hù)端應用程序(尤其是在企業(yè)設置中)的有用平臺。這樣的 Office 智能客戶(hù)端應用程序可以成為組織的信息管理周期的集成部分,而不只是文檔數據的靜態(tài)容器。當用戶(hù)在文檔內工作時(shí),它們可以提供上下文相關(guān)的數據,以及可以將 Web 服務(wù)公開(kāi)的數據轉換為有用信息的工作流和任務(wù)指導、數據分析、協(xié)作、報告和呈現功能。
n 移動(dòng)智能客戶(hù)端應用程序
移動(dòng)智能客戶(hù)端是在智能設備上運行的應用程序,這些智能設備包括 Pocket PC、Smartphone 以及其他超小型臺式設備(如機頂盒)。這些應用程序是使用 .NET 框架壓縮版(它是完整 .NET 框架的子集)開(kāi)發(fā)的。
說(shuō)到這里,我們不得不提.NET,正是這一個(gè)統一的編程模型才讓Smart Client的成為可能,從某種意義來(lái)說(shuō),.NET Framework具備了上述我們提到的所謂幾個(gè)需要,包括Internet訪(fǎng)問(wèn)能力,包括Web Services訪(fǎng)問(wèn),包括CAS,包括強大的WinForm等等,而MSDN站點(diǎn)上提供的相關(guān)Application Block能夠加快這些應用開(kāi)發(fā)的步伐。
在Longhorn的Avalon沒(méi)有到來(lái)之前,.NET在一些Rich Client的實(shí)現應該是最完備的,雖然Java也提出了WebStart的概念,但是我們知道,在桌面應用領(lǐng)域,Java并沒(méi)有太大的優(yōu)勢,包括最早的Applet,后來(lái)的SWT和Swing等等,除非需要跨越平臺應用,不然在桌面應用領(lǐng)域,Java并沒(méi)有太多的優(yōu)勢。
如果說(shuō).NET Framework已經(jīng)為RIA打好家底了,那么Visual Studio.NET則是其實(shí)現的利器,作為目前最好的IDE,對于Smart Client也提供了內置的支持。對于開(kāi)發(fā)人員而言,能夠利用VS.NET輕松的構建自己的應用系統。
相對于微軟的Smart Client,作為互聯(lián)網(wǎng)多媒體應用領(lǐng)域的老大MacroMedia也提出了Rich Client的概念,和.NET相反,不是提供給客戶(hù)一個(gè)強大的運行環(huán)境,而是將所有的應用放在了Flash上,畢竟全球99%的瀏覽器都會(huì )安裝Flash播放器。
Flex更加側重于UI方面的實(shí)現,在交互方面通過(guò)ActionScript來(lái)完成,內置提供了Web Services訪(fǎng)問(wèn)、XML應用等等各個(gè)方面的技術(shù)。和Longhorn的Avalon有點(diǎn)類(lèi)似,提出了一個(gè)相對于HTML更加強大的UI描述語(yǔ)言——MXML,讓開(kāi)發(fā)人員更加方便的進(jìn)行應用開(kāi)發(fā),同時(shí)通過(guò)內置組件和腳本(ActionScript)提供了將大的表現能力,不要以為ActionScript是簡(jiǎn)單的JavaScript,除了完整實(shí)現ECMA 262 Edtion 3的規范之外,同時(shí)加入了許多自己的擴展,因此動(dòng)作腳本的名字已經(jīng)名不符實(shí),客觀(guān)的說(shuō),已經(jīng)是一門(mén)強大的語(yǔ)言。
圖形表現方面,Flex的應用比Smart Client更勝一籌,但是在離線(xiàn)應用和開(kāi)發(fā)方面遠遠不如.NET支持的好。雖然Flex足夠強大,但是其昂貴的軟件許可和談不上特別流暢的開(kāi)發(fā)環(huán)境限制了其的發(fā)展,Flex要成為主流還需要一些時(shí)日。
XUL 的核心思想是“用XML來(lái)表達界面”,是 Mozilla 的創(chuàng )新, Mozilla 瀏覽器本身就是一個(gè)經(jīng)典的 XUL 應用。作為Netscape的繼承者,Mozilla成為一些技術(shù)追隨者吹捧的瀏覽器,最近的FireFox則有點(diǎn)出乎意料的得到更多人的認可。
從直接的感覺(jué)來(lái)說(shuō),XUL是一個(gè)客戶(hù)端運行環(huán)境支持的一個(gè)框架,相對于HTML,XUL提供了更多的支持,這點(diǎn)和IE5就提出的行為(Behivor)有點(diǎn)接近。但是XUL提供了比HTC更加靈活的模型,并且因為Mozilla本身就是設計成運行在不同的操作系統,因此從這個(gè)角度來(lái)說(shuō)通用性更好一點(diǎn)。
但是因為IE占據絕對的主流,XUL更多只是一種實(shí)驗性的理念。
一切已經(jīng)明了。我堅信,RIA會(huì )在將來(lái)幾年中替代許多基于瀏覽器的應用程序。
這并不意味著(zhù)轉換沒(méi)有給他們帶來(lái)任何痛苦。它要求開(kāi)發(fā)人員學(xué)習新的分布式體系結構和新技術(shù)。在許多情況下,他們必須更好地進(jìn)行面向對象的開(kāi)發(fā)和用戶(hù)界面設計。
那些花費最近五年時(shí)間學(xué)習基于瀏覽器部署的開(kāi)發(fā)人員可能不希望進(jìn)行改變。他們已習慣了作為他們那個(gè)時(shí)代的領(lǐng)先的開(kāi)發(fā)人員。但是所有的技術(shù)都會(huì )經(jīng)歷鼎盛期、衰落期,最后被更新的技術(shù)所替代。盡管我們繼續會(huì )看到基于瀏覽器的應用程序仍會(huì )在某些情況下使用許多年,但是我相信基于瀏覽器的開(kāi)發(fā)現在已經(jīng)過(guò)了其鼎盛期。從鼎盛到衰落可能會(huì )經(jīng)過(guò)一段時(shí)間,但是這一方向是明確的。準備好迎接RIA的到來(lái)吧!
[1] 打一個(gè)簡(jiǎn)單的比方,遠程站點(diǎn)A提供了天氣預報的服務(wù),站點(diǎn)B提供了日程管理服務(wù),站點(diǎn)C提供了一些旅行相關(guān)的Web服務(wù),這個(gè)時(shí)候如果需要集成者三個(gè)站點(diǎn)的服務(wù),需要在服務(wù)器端去集成這些服務(wù),然后通過(guò)預定的方式提供給客戶(hù)端,在定制方面更多的采用了Portalet(Java術(shù)語(yǔ))或者Web Parts(Microsoft SharePoint提供的技術(shù))。卻無(wú)法做到客戶(hù)自己進(jìn)行應用的集成。
聯(lián)系客服