Javascript的興起是否意味著LAMP的終結(jié)?
JavaScript
Metamarket的CTO Mike Driscoll最近發(fā)表了一篇略帶煽動性的帖子,討論了Web應用的架構。他認為Node.js等框架預示著LAMP的終結(jié)。
三個月前,我們決定廢棄儀表盤選用的框架:Python的Django,并用Node.js(服務器端的Javascript)重新構建了框架。鑒于LAMP堆棧已經(jīng)死亡,我們才做出了這個決定。
Mike認為Web有三個階段:
1991-1999:HTML時代——這是個文檔的時代。
2000-2009:LAMP時代——使用數(shù)據(jù)庫的時代。
2010-??:Javascript時代。Javascript時代是事件流的時代。
現(xiàn)代的Web頁面已經(jīng)不再是頁面了,它們都是事件驅(qū)動的應用,信息會通過這些應用流轉(zhuǎn)。
他解釋道:
LAMP架構已經(jīng)死了,因為對于響應里的Mashup,很少有應用愿意把全部的有效負載轉(zhuǎn)移到很小的事件上去;他們只想用Javascript更新DOM的一個片段。AJAX做到了這一點,但如果服務器端的LAMP模板有10%的HTML和90%的Javascript,這么做顯然是不對的……
Mike認為,服務器的主要作用就是帶著數(shù)據(jù)(JSON)把應用發(fā)送到客戶端(Javascript),并讓客戶端從中構造UI。服務器的次要作用則是監(jiān)聽處理事件的流,并有效地把響應推回客戶端,這些事件可能是一次新的編輯、一條消息、或是Ticker發(fā)生了變化。
一些人對此發(fā)表了評論:
Bruce Atherton贊成Mike的觀點,但他認為事件并不會通過HTTP來流轉(zhuǎn):
Websockets和SPDY將會接管這方面的處理,因為和HTTP相比,它們更合適這個任務。
Chase Sechrist已經(jīng)在很多地方使用了Node.js,即便如此,他仍然列舉了一些對Node.js的擔憂:
你還需要知道一些高級知識,比如競態(tài)條件的調(diào)試方法、事件循環(huán)的工作原理,甚至在遞歸回調(diào)導致棧溢出時,調(diào)用堆棧的處理方式。正因為如此,對那些寫了二十年C的人、還有剛開始編程的初級工程師來說,控制流還是非常奇怪、令人費解的。
“Jorjun”指出,以現(xiàn)在的變化速度來看,即使Javascript這個新的架構是合理的,它也不會太持久:
兩年之內(nèi)會有一種更高效的方式對寶貴的IP進行編碼。需要注意的是,新的方式正在出現(xiàn),Java對它們沒有任何意義——這些方式在九十年代末還沒有出現(xiàn)。Javascript的愚蠢名副其實。它有大括號、奇怪的Fudgery、極其惱人的Artefact,對我這樣的老學究來說,Javascript看起來輕率、討厭、太復雜而容易混淆。
NOLOH的聯(lián)合創(chuàng)始人Asher Snyder認同帖子的前提條件:“Web應該、也正在轉(zhuǎn)向事件。”但并不相信Javascript能引領方向。他認為“我們正在走向一個平臺或統(tǒng)一語言的時代,因為只有平臺或統(tǒng)一語言才能讓快速開發(fā)真正處理好Web的瘋狂”。
Subbu Allamaraju最近發(fā)布了Node.js和Play的一些性能對比數(shù)據(jù),InfoQ和他簡單討論了一下:
就個人而言,我發(fā)現(xiàn)Node.js和Play等框架讓Web開發(fā)人員覺得很興奮,因為它們帶來了一些新的思想。在Web框架領域,特別是在Java端,這樣的簡單性已經(jīng)很久違了。尤其是Play,它在Netty之上,而不是傳統(tǒng)的Servlet框架,是一個很不錯的選擇。
Web應用架構的演進確實很快。由于Web應用變得越來越“厚重”,特別是在事件驅(qū)動的世界里,人們只能思考REST還剩下什么,看來我們要回到最初開始的地方了。最近我們確實沒怎么聽說有關REST及其統(tǒng)一接口的消息,還有它怎樣成功改變Web應用架構的相關內(nèi)容。你對Web應用架構的未來持什么觀點呢?你怎么看Javascript成為主流的編程語言?
查看英文原文:Will the Rise of Javascript Mean the End of LAMP?(http://www.infoq.com/cn/news/2011/04/javascript-lamp)
【編輯推薦】