微軟PDC10:大牛談ASP.NET和C#技術走向
最近看了自己關心的主題的微軟PDC視頻,也結合自己的Web 2.0項目做了一些思考。這次PDC最大的一個主題就是Azure OS,所謂的云操作系統。不過微軟的服務器要布到中國也不知道要到什么時候,所以也沒有深究。我主要關心的是Asp.net和C#的技術走向。
我總結了一下,總的走向就是更加的Web化,比如Webform的Tag的ID可以控制了,MVC將成為主流,C# 4.0更加向動態語言靠,甚至引入了一個dynamic的關鍵字。這些基本和我的預期相符合。其實都指向一個理念:Web的本質是文檔。
Web的本質是文檔
以前有網友對我的所謂“文檔化”理念提出疑問。因為我一直認為理念和戰略思想可能在一開始就決定了成敗。感覺有必要探討一下,或許可以給大家提供一個新的視角。
我盡可能羅列結論,略去推導過程,節省大家的時間。
首先,Web本質是文檔,或者說更傾向于文檔化。我對文檔和應用的區分標準是,文檔更傾向于讓人理解,應用更傾向于讓機器理解。
WEB的三個要素已經產生了,就是3位一體的HTML+CSS+Javascript
這個三角形結構已經愈發成熟愈發穩定愈發強大了。也許第四類要素也顯出雛形了,就是語義要素,需要的只是時間吧。
任何試圖忽略,取代這三個要素中的任何一個都是一個危險的企圖。
(一個最典型的這樣的嘗試就是asp.net webfrom,居然可以同時屏蔽和封裝這三個要素,而asp.net mvc則是一種回歸,我對asp.net webform的最新理解是,一個使用Web技術的Windows應用。而Asp.net mvc才是更接近web的本質)。
◆HTML是一種文檔。
◆CSS是一種變換,它的最大特點是在它變換HTML的時候不會改變HTML的拓撲結構,或者說是DOM結構。
◆Javascript也是一種變換,它可以改變HTML的拓撲結構,或者是DOM結構
HTML文檔的最大特點是自我解釋性,這是互聯網的特性決定的,因為互聯網就是最大程度的交流。如果你開發了一個應用,試圖“封裝”,或者“替代”HTML,那么可能會在做一件蠢事。因為你的應用沒有自我解釋性,也許你要配一個詳細的文檔,教程,或者其它什么東西來解釋你的應用,而且還須要用戶能正確理解這種說明和解釋。這就違背了Web了精神,分享的精神。
那CSS為什么也不能被繞過呢?因為它和HTMl配合的最好,和HTML之間屬于松散型耦合,通過長期演化,已經接近完美了。現在甚至發展出了,MicroFomats這樣的賦予語義的css標準,或許這是邁向語義網的一個途徑呢?who knonws?
Javascript呢?很多.Net程序員不熟悉JS,不是也過得好好的嗎?我在想,也許好日子到頭了。Javascript的地位將不會被削弱,而可能是大大加強。
CSS的成熟,導致了Div+CSS的開發方式的流行,而由于Firefox和AJax的流行,將近一步加強這3大要素的地位。相信多用用firebug可能對此有更深感受。Jquery的出現更是大大降低了JS開發難度。設想一下這樣一個Firebug版本,在你發出一個Ajax請求的時候,你看到了一個Response到達你的瀏覽器,可以看到一個Json數據結構是如何改變你的DOM,不但可以設置斷點,更為神奇的是DOM改變過程居然可逆。在C#程序中,設置一個斷點,然后到了這個斷點以后倒退著執行,能辦到嗎?也許要到C# 7.0了。但是,DOM可以,因為它是文檔。只要建立快照就可以了。會不會有Transactional DOM出現呢?
HTML是拓撲結構,是第一性,Javasript是一種變換,屬于第二性。這和windows時代的所謂應用第一性其實已經是有了本質上的區別。事實上世界上最賺錢的軟件是什么,就是Office.它其實就做了一件事情,就是處理文檔。
Office軟件有好幾種,它們之間的關系是什么呢?
◆Word是一維的文檔,你可以對一個文檔重新分頁
◆PPT是二維的文檔,每一頁都是完整獨立的一頁,你沒有辦法重新分頁
◆EXCEL是三維的文檔,表格是兩維,Tab頁是第三維
微軟又搞了一個OneNote居然是四維的,似乎不是很火。所以要寫的讓更多的普通人能看懂就用Word,要更有效率傳達更多信息,就用EXCEL。
事實上,微軟的高手當然都明白這些,只不過,如何將它們的商業模式,平滑的轉向Web那是一個非常艱巨的任務。所以微軟就有了各種試圖將Web應用化(Windows化)的企圖。甚至在所有產品前加上Windows 商標(比如Windows Live,難道是惡搞?)。
PDC上展示了基于Silverlight技術的Web Office技術,微軟終于對Google Docs做出了反應。
誰會勝出?
誰會最終勝出呢?3年內,我看好微軟,3年后就很難說了。也許寫一篇存在自己硬盤上的Word文檔,會和寫一封永遠不寄出去的信類似。真的到了Web 平臺,那么血統更純正的google Docs會勝出吧。拭目以待。
所以在對待諸如Siliverlight這樣的新技術的時候,站在客戶的角度去思考是非常必要的。如果你在期待著微軟發布更多siliverlight控件的時候,也許應該想一想,你會不會在和Web背道而馳呢?
當你面對Google Doc這樣神奇的應用的時候,是不是能看到其中的內涵和潛力呢?重要的不是那些神奇的JS,重要的是它是一個HTML文檔,一個資源,一個URL。它不是更容易向語義網擴展嗎?
有的時候感覺,技術的演進和生物的演進非常相似,生物樹上最終消失的分支,往往是比較容易的演進,而演進的主線,往往是最困難,最緩慢的,然而最后卻成為了演進的主線,并最終勝出。
PDC的兩個新亮點
另外提一下PDC看到的兩個新東西,特別是第二個,可能是非常重要的。也許是The next big Thing(下一個大事物)。
在Anders的演講中提到了,C# 4.0以后的一個特性,就是用C#重寫C# Compiler,原來是C++寫的。然后你就可以在你的程序中調用Complier的API的動態產生執行代碼。非常有趣。不過他沒有怎么提應用場景。感覺可以用在代碼自動生成,和人工智能方面。
另外一個是DHTML之父Scott Isaacs搞得一個 Web SandBox,簡單而言,就是用JS寫的一個虛擬機,可以運行在各種瀏覽器上,將各種瀏覽器的JScript標準化,建立一個砂箱模型,隔離JS,HTML,CSS。也就是說一個JS惡意代碼插件,將不會對頁面產生任何破壞作用。應用場景呢?Facebook的FBJS應用插件就是類似的功能。但這個是一個更加完美的解決方案,因為你不必改變你的JS的寫法。
不過文檔里面沒有提到插件之間如何通訊。那和IFrame有什么區別,據說是比IFrame 更加安全。如果這個技術成熟的話,會有很多有趣的應用出現。至少在技術上不輸給 Facebook了,我會密切關注這個項目。開發Web 2.0有點像造火箭,成功了就是特大成功,失敗則更是家常便飯。所以給正在搞Web 2.0的朋友們加個油。