Web開發技術的歷史發展簡介

討論Web開發技術的歷史,當然要先說說Web的起源。衆所周知,Web這個Internet上最熱門的應用架構是由Tim Berners-Lee發明的。Web的前身是1980年Tim Berners-Lee負責的Enquire(Enquire Within Upon Everything的簡稱)項目。1990年11月,第一個Web服務器nxoc01.cern.ch開始運行,Tim Berners-Lee在自己編寫的圖形化Web瀏覽器"WorldWideWeb"上看到了最早的Web頁面。1991年,CERN(European Particle Physics Laboratory)正式發佈了Web技術標準。目前,與Web相關的各種技術標準都由著名的W3C組織(World Wide Web Consortium)管理和維護。

從技術層面看,Web架構的精華有三處:用超文本技術(HTML)實現信息與信息的連接;用統一資源定位技術(URI)實現全球信息的精確定位;用新的應用層協議(HTTP)實現分佈式的信息共享。這三個特點無一不與信息的分發、獲取和利用有關。其實,Tim Berners-Lee早就明確無誤地告訴我們:"Web是一個抽象的(假想的)信息空間。"也就是說,作爲Internet上的一種應用架構,Web的首要任務就是向人們提供信息和信息服務。

很可惜,在Web應用日新月異的今天,許多搞技術的人似乎已經忘記了Web架構的設計初衷。他們在自己開發的網站或Web應用中大肆堆砌各種所謂的"先進"技術,但最終用戶能夠在這些網站或應用中獲得的有價值信息卻寥寥無幾。這個問題絕不像評論者常說的"有路無車"或"信息匱乏"那麼簡單。一個Web開發者倘若忘記了Web技術的最終目標是提供信息和信息服務,他的愚蠢程度就絲毫不亞於一個在足球場上只知道賣弄技巧,卻忘記了射門得分的大牌球星。從這個角度來說,評價一種Web開發技術優劣的標準只有一個,那就是看這種技術能否在最恰當的時間和最恰當的地點,以最恰當的方式,爲最需要信息的人提供最恰當的信息服務。

客戶端技術的萌芽和演進

Web是一種典型的分佈式應用架構。Web應用中的每一次信息交換都要涉及到客戶端和服務端兩個層面。因此,Web開發技術大體上也可以被分爲客戶端技術和服務端技術兩大類。我們先來談談客戶端技術的萌芽和演進過程。

Web客戶端的主要任務是展現信息內容,而HTML語言則是信息展現的最有效載體之一。作爲一種實用的超文本語言,HTML的歷史最早可以追溯到上世紀四十年代。1945年,Vannevar Bush在一篇文章中闡述了文本和文本之間通過超級鏈接相互關聯的思想,並在文中給出了一種能實現信息關聯的計算機Memex的設計方案。Doug Engelbart等人則在1960年前後,對信息關聯技術做了最早的實驗。與此同時,Ted Nelson正式將這種信息關聯技術命名爲超文本(Hypertext)技術。1969年,IBM的Charles Goldfarb發明了可用於描述超文本信息的GML(Generalized Markup Language)語言。1978到1986年間,在ANSI等組織的努力下,GML語言進一步發展成爲著名的SGML語言標準。當Tim Berners-Lee和他的同事們在1989年試圖創建一個基於超文本的分佈式應用系統時,Tim Berners-Lee意識到,SGML是描述超文本信息的一個上佳方案,但美中不足的是,SGML過於複雜,不利於信息的傳遞和解析。於是,Tim Berners-Lee對SGML語言做了大刀闊斧的簡化和完善。1990年,第一個圖形化的Web瀏覽器"WorldWideWeb"終於可以使用一種爲Web度身定製的語言--HTML來展現超文本信息了。

最初的HTML語言只能在瀏覽器中展現靜態的文本或圖像信息,這滿足不了人們對信息豐富性和多樣性的強烈需求--這件事情最終的結果是,由靜態技術向動態技術的轉變成爲了Web客戶端技術演進的永恆定律。

   能存儲、展現二維動畫的GIF圖像格式早在1989年就已發展成熟。Web出現後,GIF第一次爲HTML頁面引入了動感元素。但更大的變革來源於1995年Java語言的問世。Java語言天生就具備的平臺無關的特點,讓人們一下子找到了在瀏覽器中開發動態應用的捷徑。1996年,著名的Netscape瀏覽器在其2.0版中增加了對JavaApplets和JavaScript的支持。Netscape的冤家對頭,Microsoft的IE 3.0也在這一年開始支持Java技術。現在,喜歡動畫、喜歡交互操作、喜歡客戶端應用的開發人員可以用Java或JavaScript語言隨心所欲地豐富HTML頁面的功能了。順便說一句,JavaScript語言在所有客戶端開發技術中佔有非常獨特的地位:它是一種以腳本方式運行的,簡化了的Java語言,這也是腳本技術第一次在Web世界裏嶄露頭角。爲了用純Microsoft的技術與JavaScript抗衡,Microsoft還爲1996年的IE 3.0設計了另一種後來也聲名顯赫的腳本語言--VBScript語言。

   真正讓HTML頁面又酷又炫、動感無限的是CSS(Cascading Style Sheets)和DHTML(Dynamic HTML)技術。1996年底,W3C提出了CSS的建議標準,同年,IE 3.0引入了對CSS的支持。CSS大大提高了開發者對信息展現格式的控制能力。1997年的Netscape 4.0不但支持CSS,而且增加了許多Netscape公司自定義的動態HTML標記,這些標記在CSS的基礎上,讓HTML頁面中的各種要素"活動"了起來。1997年,Microsoft發佈了IE 4.0,並將動態HTML標記、CSS和動態對象模型(DHTML Object Model)發展成了一套完整、實用、高效的客戶端開發技術體系,Microsoft稱其爲DHTML。同樣是實現HTML頁面的動態效果,DHTML技術無需啓動Java虛擬機或其他腳本環境,可以在瀏覽器的支持下,獲得更好的展現效果和更高的執行效率。今天,已經很少有哪個HTML頁面的開發者還會對CSS和DHTML技術視而不見了。

   爲了在HTML頁面中實現音頻、視頻等更爲複雜的多媒體應用,1996年的Netscape 2.0成功地引入了對QuickTime插件的支持,插件這種開發方式也迅速風靡了瀏覽器的世界。在Windows平臺上,Microsoft將客戶端應用集成的賭注押到了1990年代中期剛剛問世的COM和ActiveX身上。1996年,IE 3.0正式支持在HTML頁面中插入ActiveX控件的功能,這爲其他廠商擴展Web客戶端的信息展現方式開闢了一條自由之路。1999年,Realplayer插件先後在Netscape和IE瀏覽器中取得了成功,與此同時,Microsoft自己的媒體播放插件Media Player也被預裝到了各種Windows版本之中。同樣值得紀念的還有Flash插件的橫空出世:1990年代初期,Jonathan Gay在FutureWave公司開發了一種名爲Future Splash Animator的二維矢量動畫展示工具,1996年,Macromedia公司收購了FutureWave,並將Jonathan Gay的發明改名爲我們熟悉的Flash。從此,Flash動畫成了Web開發者表現自我、展示個性的最佳方式。

   除了編寫HTML頁面之外,客戶端應用的開發者還可以利用一些成熟的技術將瀏覽器的功能添加到自己的應用程序中。從1992年開始,W3C就免費向開發者提供libwww開發庫。藉助libwww,我們可以自己編寫Web瀏覽器和Web搜索工具,也可以分析、編輯或顯示HTML頁面。1999年,Microsoft在IE 5.0中引入的HTAs(HTML Applications)技術則允許我們直接將HTML頁面轉換爲一個真正的應用程序。從1997年的IE 4.0開始,Microsoft爲開發者提供了WebBrowser控件和其他相關的COM接口,允許程序員在自己的程序中直接嵌入瀏覽器窗口,或調用各種瀏覽器的功能,如分析或編輯HTML頁面等。Windows 98及其後的Windows操作系統甚至還利用WSH(Windows Script Host)技術將原本只在瀏覽器中運行的JavaScript、VBScript變成了可以在WIN32環境下使用的通用腳本語言,這大概也可算作我們對Web客戶端開發技術的一種巧妙利用吧。

服務端技術的成熟與發展

   與客戶端技術從靜態向動態的演進過程類似,Web服務端的開發技術也是由靜態向動態逐漸發展、完善起來的。

   最早的Web服務器簡單地響應瀏覽器發來的HTTP請求,並將存儲在服務器上的HTML文件返回給瀏覽器。一種名爲SSI(Server Side Includes)的技術可以讓Web服務器在返回HTML文件前,更新HTML文件的某些內容,但其功能非常有限。第一種真正使服務器能根據運行時的具體情況,動態生成HTML頁面的技術是大名鼎鼎的CGI(Common Gateway Interface)技術。1993年,CGI 1.0的標準草案由NCSA(National Center for Supercomputing Applications)提出,1995年,NCSA開始制定CGI 1.1標準,1997年,CGI 1.2也被納入了議事日程。CGI技術允許服務端的應用程序根據客戶端的請求,動態生成HTML頁面,這使客戶端和服務端的動態信息交換成爲了可能。隨着CGI技術的普及,聊天室、論壇、電子商務、信息查詢、全文檢索等各式各樣的Web應用蓬勃興起,人們終於可以享受到信息檢索、信息交換、信息處理等更爲便捷的信息服務了。

   早期的CGI程序大多是編譯後的可執行程序,其編程語言可以是C、C++、Pascal等任何通用的程序設計語言。爲了簡化CGI程序的修改、編譯和發佈過程,人們開始探尋用腳本語言實現CGI應用的可行方式。在此方面,不能不提的是Larry Wall於1987年發明的Perl語言。Perl結合了C語言的高效以及sh、awk等腳本語言的便捷,似乎天生就適用於CGI程序的編寫。1995年,第一個用Perl寫成的CGI程序問世。很快,Perl在CGI編程領域的風頭就蓋過了它的前輩C語言。隨後,Python等著名的腳本語言也陸續加入了CGI編程語言的行列。

   1994年,Rasmus Lerdorf發明了專用於Web服務端編程的PHP(Personal Home Page Tools)語言。與以往的CGI程序不同,PHP語言將HTML代碼和PHP指令合成爲完整的服務端動態頁面,Web應用的開發者可以用一種更加簡便、快捷的方式實現動態Web功能。1996年,Microsoft借鑑PHP的思想,在其Web服務器IIS 3.0中引入了ASP技術。ASP使用的腳本語言是我們熟悉的VBScript和JavaScript。藉助Microsoft Visual Studio等開發工具在市場上的成功,ASP迅速成爲了Windows系統下Web服務端的主流開發技術。當然,以Sun公司爲首的Java陣營也不會示弱。1997年,Servlet技術問世,1998年,JSP技術誕生。Servlet和JSP的組合(還可以加上JavaBean技術)讓Java開發者同時擁有了類似CGI程序的集中處理功能和類似PHP的HTML嵌入功能,此外,Java的運行時編譯技術也大大提高了Servlet和JSP的執行效率--這也正是Servlet和JSP被後來的J2EE平臺吸納爲核心技術的原因之一。

兩種重要的企業開發平臺

   Web服務端開發技術的完善使開發複雜的Web應用成爲了可能。在此起彼伏的電子商務大潮中,爲了適應企業級應用開發的各種複雜需求,爲了給最終用戶提供更可靠、更完善的信息服務,兩個最重要的企業級開發平臺--J2EE和.NET在2000年前後分別誕生於Java和Windows陣營,它們隨即就在企業級Web開發領域展開了你死我活的拼爭。平臺之爭讓整個Web世界在最近的幾年裏不得安寧,但從某種意義上說,也正是這種針鋒相對的競爭關係促使了Web開發技術以前所未有的速度提高和躍進。

   J2EE是純粹基於Java的解決方案。1998年,Sun發佈了EJB 1.0標準。EJB爲企業級應用中必不可少的數據封裝、事務處理、交易控制等功能提供了良好的技術基礎。至此,J2EE平臺的三大核心技術Servlet、JSP和EJB都已先後問世。1999年,Sun正式發佈了J2EE的第一個版本。緊接着,遵循J2EE標準,爲企業級應用提供支撐平臺的各類應用服務軟件爭先恐後地涌現了出來。IBM的WebSphere、BEA的WebLogic都是這一領域裏最爲成功的商業軟件平臺。隨着開源運動的興起,JBoss等開源世界裏的應用服務新秀也吸引了許多用戶的注意力。到2003年時,Sun的J2EE版本已經升級到了1.4版,其中三個關鍵組件的版本也演進到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE體系及相關的軟件產品已經成爲了Web服務端開發的一個強有力的支撐環境。

   和J2EE不同的是,Microsoft的.NET平臺是一個強調多語言間交互的通用運行環境。儘管.NET的設計者試圖以.NET平臺作爲絕大多數Windows應用的首選運行環境,但.NET首先吸引的卻是Web開發者的目光。2001年,ECMA通過了Microsoft提交的C#語言和CLI標準,這兩個技術標準構成了.NET平臺的基石,它們也於2003年成爲了ISO的國際標準。2002年,Microsoft正式發佈.NET Framework和Visual Studio .NET開發環境。早在.NET發佈之前,就已經有許多Windows平臺的Web開發者迫不及待地利用Beta版本開發Web應用了。這大概是因爲,.NET平臺及相關的開發環境不但爲Web服務端應用提供了一個支持多種語言的、通用的運行平臺,而且還引入了ASP.NET這樣一種全新的Web開發技術。ASP.NET超越了ASP的侷限,可以使用VB.NET、C#等編譯型語言,支持Web Form、.NET Server Control、ADO.NET等高級特性。客觀地講,.NET平臺,尤其是.NET平臺中的ASP.NET的確不失爲Web開發技術在Windows平臺上的一個集大成者。

XML語言及相關技術

   如果說HTML語言給Web世界賦予了無限生機的話,那麼,XML語言的出現大概就可以算成是Web的一次新生了。按照Tim Berners-Lee的說法,Web是一個"信息空間"。HTML語言具有較強的表現力,但也存在結構過於靈活、語法不規範的弱點。當信息都以HTML語言的面貌出現時,Web這個信息空間是雜亂無章、沒有秩序的。爲了讓Web世界裏的所有信息都有章可循、有法可依,我們需要一種更爲規範、更能夠體現信息特點的語言。

   1996年,W3C在SGML語言的基礎上,提出了XML(Extensible Markup Language)語言草案。1998年,W3C正式發佈了XML 1.0標準。XML語言對信息的格式和表達方法做了最大程度的規範,應用軟件可以按照統一的方式處理所有XML信息。這樣一來,信息在整個Web世界裏的共享和交換就有了技術上的保障。HTML語言關心的是信息的表現形式,而XML語言關心的是信息本身的格式和數據內容。從這個意義上說,XML語言不但可以將客戶端的信息展現技術提高到一個新的層次,而且可以顯著提高服務端的信息獲取、生成、發佈和共享能力。爲了將XML信息轉換爲HTML等不同的信息展現形式,1999年,W3C制定出了XSLT標準。同一年,IE 5.0增加了對XML和XSLT的支持。

   現在,網站的開發者可以直接使用XML語言發佈信息了。針對不同的應用領域,人們還制定了許多專門的XML規範。例如,2001年W3C發佈的SVG(Scalable Vector Graphics)1.0標準就是一種用XML語言表達的、全新的二維矢量圖形格式。開發者可以用SVG格式描述大多數已有的Flash動畫。與Flash格式相比,符合XML標準的SVG格式顯然更有利於信息交換和共享。

   Web本身就是一個最大的分佈式應用系統。對於分佈式開發而言,XML技術也大有用武之地。一個明顯的事實是,如果能讓分佈式應用藉助XML格式交換信息,那麼,以往橫亙在分佈式架構上的信息交換難題也就迎刃而解了。1999年,W3C和相關的企業開始討論設計基於XML的通信協議,2000年,W3C發佈SOAP(Simple Object Access Protocol)協議的1.1版。人們把利用SOAP協議傳遞XML信息的分佈式應用模型稱爲Web Service。2001年,W3C發佈了WSDL(Web Services Description Language)協議的1.1版。SOAP協議和WSDL協議共同構成了Web Service的基礎。隨後,J2EE和.NET這兩大企業級開發平臺先後實現了Web Service,並將其視爲平臺的一項核心功能。

   Web Service對於Web開發者的重要意義在於,當我們需要在不同的服務端、不同的客戶端乃至不同的應用類型、不同的計算設備之間傳遞信息的時候,以往的分佈式開發技術或者因爲適應性不強,或者因爲擴展能力不足,都難以滿足現代Web開發的需要,而Web Service正好填補了這一空白。

Web開發框架和應用模型

   2000年以後,隨着Web應用的日益複雜,人們逐漸意識到,單純依靠某種技術多半無法達到快速開發、快速驗證和快速部署的最佳境界。研究者開始嘗試着將已有的Web開發技術綜合起來,形成完整的開發框架或應用模型,並以此來滿足各種複雜的應用需求。

   Microsoft在客戶端的技術集成方面走在了最前面。1998年時Microsoft推出的Windows 98就可以在桌面上集成Web頁面,這實際上是將資源管理器和Web瀏覽器的功能有效地結合了起來。2000年後,Microsoft陸續推出了MSN Explorer和與之相關的MSN在線服務。這一應用模型將Web瀏覽、視頻點播、郵件處理、網上游戲、在線聊天等許多種用戶常用的Web功能集成在了一個統一的界面中。從信息利用的角度看,MSN試圖讓用戶在一個最舒適的環境中獲取足夠的信息,這種努力的確值得人們稱道。另一個與客戶端技術集成相關的例子是搜索引擎Google在2003年展示給大家的Google工具欄功能。雖然Google工具欄有炒作和廣告的嫌疑,但安裝Google工具欄之後的IE瀏覽器將信息瀏覽和信息檢索有機地結合了起來,這種小小的功能改進確實是對用戶的體貼和幫助。

   在Web服務端,2000年以後出現了幾種主要的技術融合方式。首先,越來越多的Web開發環境開始支持MVC(Model-View-Contorller)的設計模型,爲開發者提供了全套的開發框架。實際上,J2EE和.NET平臺本身就是這種開發框架的典型代表。其次,門戶服務(Portal Server)和Web內容管理(Web Content Management)在最近幾年裏成爲了應用集成的重點模型。這兩種應用模型可以直接爲開發者或最終用戶提供構建Web應用的高級平臺,可以讓Web開發和信息發佈工作大爲簡化。在商業軟件領域,這一類應用的例子包括Microsoft的SharePoint、IBM的WebSphere Portal、FileNet的Web Content Manager等等。開源項目在Web開發框架和應用模型方面表現得非常積極,Struts、Jetspeed、jPortlet、Cocoon、Lenya、XOOPS等都是開源世界裏與MVC開發框架、門戶服務和Web內容管理相關的優秀解決方案。

   當然,技術集成絕不等於技術堆砌。一些Web站點和Web應用的開發者把XML語言、MVC框架等時髦技術拼湊起來,卻不管它們是否能適應具體的應用環境,結果,他們的系統要麼運行效率低下,要麼功能殘缺不全。反之,一個值得注意的事實是,像新浪、搜狐或網易這樣的門戶網站,在他們的信息發佈頁面(如新聞頁面)裏,儘管信息內容時刻都在刷新,但Web服務器上存放的始終都是靜態的HTML頁面。這種"落後技術"的優點是,在大量併發訪問的情況下,門戶網站的響應速度仍然很快。深入到技術層面,我們通常會驚訝地發現,這些網站使用的大多是自行研發的Web內容管理系統。當網站的內容編輯提交新的信息時,系統會自動將信息轉換爲HTML格式,發佈到Web服務器集羣的每一個結點上。在新浪網的一個角落裏,我們可以找到"新浪網站發佈系統"的研發歷程:

V 1.0(1997):基於文件的版本,實現新聞首頁、正文和專題的發佈。
V 1.1(1998/12):採用數據庫後臺、實現跨服務器發佈,自動化程度高。
V 2.0(1999/3):創立模版和域的全新概念,奠定了該系列的基本設計思路。
V 2.1(1999/9):增加周邊模塊,如搜索、自動採集。
V 3.0(2000/1):優化傳輸方式,增加相關新聞和評論。
V 3C(2000/6):V3.0的編譯版,也是商業版的原型。
V 3.1(2000/7):優化數據庫結構,採用內存CACHE大幅提速,增加了集中監控功能。
V 3.1C(2000/8):商業用測試版本。
V 3.2(正在製作中):重點解決備份系統的自動化切換,在機制上實現永不宕機。

這一份有趣的歷史記錄再一次印證了我關於Web開發技術的基本觀點:一種技術只要能爲用戶提供高水平的信息服務,它就是最好、最先進的技術。

Web開發技術的未來

所有人都在關心Web的發展前景,所有人都想知道十年以後的Web會長成什麼樣子。要回答這些問題,沒有誰比W3C更有權威了。W3C明確地告訴我們,Web的未來是語義化的Web(Semantic Web)。今天的Web可以自如地生成、傳遞和展現各式各樣的信息,但它還只是一個信息的"容器",很難揭示出信息本身的內容和特性。與此相對的是,未來的語義化Web是一種懂得信息內容的Web,是真正的"信息管理員"。

從技術角度看,XML語言統一了信息的表達方式,但這離揭示信息內容的目標還相距甚遠。1998年,W3C和一些研究機構開始對元數據(Metadata)進行研究。元數據是描述數據的數據,可以揭示信息的內容特性。1999年,NetScape提出的RSS(Rich Site Summary)建議標準是用元數據技術描述新聞等信息內容的第一次嘗試。1999年,W3C的研究小組提出了RDF(Resource Description Framework)標準草案。RDF在XML語法的基礎上,規定了元數據的存儲結構和相關的技術標準。使用RDF語言,我們可以用統一的、可交換的格式揭示出信息本身的各種特性。2001年,W3C又開始着手製定OWL(OWL Web Ontology Language)標準。OWL語言也是一種符合XML標準的語言,它比RDF又前進了一步,可以更加深入、細緻地描述信息內容。在RDF和OWL語言的幫助下,我們能讓Web上的信息內容變得更容易理解、更便於交換和共享。2003年,W3C成立了語義化Web Service研究小組(Semantic Web Services Interest Group),研究在Web Service中加入語義技術的相關問題。2004年2月,W3C宣佈RDF和OWL標準正式成爲W3C的建議方案,這標誌着語義化Web的大廈已經破土動工。

隨着語義化Web的誕生和發展,Web開發技術也必將經歷更爲重大的變革。可以預見的是,在未來的幾年裏,還會有許多新的開發技術或開發平臺出現。從靜態技術到動態技術,從開發平臺到應用模型,從傳統Web到語義化Web……爲了讓更多的人獲得更有價值的信息服務,Web開發者們也許還會經歷一次又一次的技術浪潮,還會面臨更爲嚴峻的技術挑戰,但這和信息共享的最高目標相比,又算得了什麼呢?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章