Web本地计算发展史
Web計算本地化(前端技術(shù))歷史-HTML->CSS->Javascript
最初的網(wǎng)絡(luò)上傳輸?shù)膬?nèi)容是【純文本】的,從網(wǎng)絡(luò)上傳輸回來直接通過字符界面展示出來就夠了,本地幾乎不用計算。
后來,為了更直觀,更層次化展現(xiàn)網(wǎng)絡(luò)內(nèi)容,人們在文本的基礎(chǔ)上加上了什么<h1>之類的標(biāo)簽,于是出現(xiàn)了【HTML】,這時候,就出現(xiàn)了瀏覽器,瀏覽器是把這些標(biāo)簽解釋,并且按照一定格式渲染,這時,就需要一定的本地計算來進行標(biāo)簽分析,字體渲染之類的。
再往后,出現(xiàn)了【CSS】,并且互聯(lián)網(wǎng)有了富媒體元素,可以把網(wǎng)頁展現(xiàn)的漂亮了,要求本地計算更多了。
但是,這還不夠,除了將網(wǎng)頁做得漂亮外,還需要減少用戶的等待時間,提高用戶體驗。這時,有人發(fā)現(xiàn),其實很多網(wǎng)絡(luò)通信是可以避免的,比如,在用戶登陸界面,用戶輸出email格式的用戶名,之前是需要將這個信息發(fā)給服務(wù)器,服務(wù)器收到信息后,檢查是否合法,不合法的話,返回一個頁面,叫用戶重新填寫,這一來一往很花時間,用戶體驗非常不好。于是有人就想到,能不能把這些檢查用戶名之類的計算放到本地,于是,就出現(xiàn)了【JavaScript】,在用戶提交信息時,JS可以在本地檢查是否合法,不合法的話,提示原因并要求重新輸入,這樣用戶體驗就好了,并且減少了服務(wù)器計算以及通信(這貌似符合綠色通信的概念)。
再往后,有人發(fā)現(xiàn),每次點擊一個鏈接,在載入下一個頁面的時候,出現(xiàn)空白頁讓用戶很不爽,于是,有人想出了一個辦法,那就是事實上,很多頁面很大一部分是共同的,這部分其實不需要重新加載,只需要加載改變的部分(局部刷新),而這又可以通過JS實現(xiàn),于是出現(xiàn)了【Ajax】技術(shù)。這個技術(shù)減少了空白等待,提高了用戶體驗,并且減少了網(wǎng)絡(luò)通信量(有時綠色通信!)。
Web計算本地化進一步發(fā)展-Java-applet,Flash,html5
但是,用戶在互聯(lián)網(wǎng)上的需求還是沒有得到滿足,有人還想直接在網(wǎng)頁上處理圖片,玩游戲之類的,由于這類應(yīng)用一方面計算量大,都放到服務(wù)器,服務(wù)器不堪重負,另一方面,這類應(yīng)用都是實時生成畫面的,假如通過服務(wù)器來計算生成畫面(如游戲),再通過網(wǎng)絡(luò)將每幀圖像實時傳送回來,對網(wǎng)絡(luò)要求極高,幾乎不可能實現(xiàn)。
于是,需要新的技術(shù)將更多的計算放到本地,這時候,出現(xiàn)【Java applet,flash】等。Java applet允許在網(wǎng)頁中嵌入java程序,并在本地執(zhí)行。Flash應(yīng)該也是類似,只不過這些計算需要通過flash提供的api完成(這一點有點類似ActiveX通過COM來完成本地計算?)。
Flash的出現(xiàn),一段時間內(nèi),幾乎是一統(tǒng)互聯(lián)網(wǎng)的視頻播放以及網(wǎng)頁游戲領(lǐng)域。這時,有人眼紅也好,有人有更好的主意也好,結(jié)果就是有人抱怨flash不開放(還有不安全),有人就想到,我們做一個開放的標(biāo)準(zhǔn),這標(biāo)準(zhǔn)里面就允許類似游戲等復(fù)雜的交互,于是出現(xiàn)了HTML5和CSS3。HTML5以及CSS3將很多JS以及Flash能完成的功能都已到了一個HTML標(biāo)簽里,其實,本質(zhì)還是差不多,只是這時候這些渲染的計算不是通過flash程序來了,而是直接通過瀏覽器執(zhí)行了。
云計算時代的本地計算-Native Client
再往后,隨著網(wǎng)絡(luò)帶寬的增長,以及服務(wù)器存儲能力的提高,出現(xiàn)了大量的數(shù)據(jù)中心,為了提高這些中心的利用率,出現(xiàn)了云計算。在云計算時代,用戶可以把很多數(shù)據(jù)都放在云端,并且訪問這些應(yīng)用的方法都是統(tǒng)一的。開發(fā)者在云服務(wù)器開發(fā)程序的接口也是統(tǒng)一的(PaSS),這就可以很容易實現(xiàn)跨平臺,給用戶一個統(tǒng)一的體驗。
在這個時代,由于訪問云端的資源都是通過瀏覽器完成的,瀏覽器就成為一個很重要的平臺,這也就是為什么Google會推出自己的瀏覽器以及ChromeOS的原因。在瀏覽器能做的事也越來越多,如玩游戲,但是,由于這些游戲是通過一個類似flash這樣的東西執(zhí)行的,效率很低,為了提高效率,并且進一步的將更多的計算密集的東西(如3D渲染)放到本地完成高性能本地計算,Google提出【Native Client】技術(shù),這種技術(shù)就是想直接在本地執(zhí)行C/C++/Java/Python等代碼,從而提高本地計算的效率。
從這里,也可以看出Google的野心,Google希望以后用戶所有的需求都能在瀏覽器上完成,包括大型3D游戲,到時候,什么Windows,Linux,都是透明的了,只剩下一個Chrome Broswer,成為開發(fā)者的事實平臺,得開發(fā)者得天下,Google就此一統(tǒng)江山,雖然不能千秋萬代,但也能夠衣食無憂上十年。
Web計算本地化的問題-安全性
由于web計算本地化是在本地執(zhí)行服務(wù)器上下下來的代碼,因此,服務(wù)器上要是發(fā)給用戶的惡意代碼,在本地執(zhí)行的話,會出現(xiàn)嚴(yán)重的后果,因此,這些技術(shù)(包括JS,Java applet,Flash)的安全性非常重要。由于Flash應(yīng)用最多,因此,Flash也被經(jīng)常爆漏洞。
而對于Native Client技術(shù),如何保證安全則是更大的挑戰(zhàn),為了保證安全,感覺這技術(shù)最好用于計算密集型應(yīng)用,而盡量不讓遠程代碼執(zhí)行文件讀寫操作。為了保證文件讀寫的安全性,個人覺得有兩個辦法,一個是不讀寫本地文件,將文件直接寫到云端的云存儲(但是計算還是本地);另外一個就是在本地沙盒里面讀寫,不過這只適合臨時數(shù)據(jù),永久的還是要寫到云端。
最后,附一張圖,這張圖反映了個人計算機應(yīng)用平臺的進化方向:?
其他應(yīng)用-----------Web應(yīng)用
Sandbox--------Browser(Sandbox)
總結(jié)
以上是生活随笔為你收集整理的Web本地计算发展史的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LLVM(Low Level Virtu
- 下一篇: 漫谈Google的Native Clie