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