WebForm的組件式開發思想,去到極致就是GridView,為啥?自動化程度,高;智能程度,高;代碼重用度,高;開發效率,高!所以微軟大大小小的DEMO都喜歡用它,拖一拖,拉一拉,寫幾行代碼,一個完整表格就出來啦……。不過,當我們回到現實應用中,基本上它就是一個擺設,偶爾會用它來作一些煙霧測試。所以,拋棄不合用的控制項,對WebForm來說,不會有什麼區別,不會導致WebForm發生本質的變化。當需要提高對頁面代碼控制粒度的時候,依靠基礎的Repeater/Literal來輸出純淨的頁面代碼也是理所當然的事了。
當完成一件事能用更簡單基於只能用更簡單的方式去做的時候,應該是一件自然而然的事才對。
可是,當ViewState被切下來的時候,我就很驚奇了,失去了ViewState的WebForm,Postback自然也沒什麼意義了,那麼,原本隱藏在WebForm後面的HTTP機制不是又暴露在使用者面前?那麼,還能像WinForm那樣輕鬆地定閱處理各種事件嗎?那麼,WebForm所倡導的RAD理念呢?(千萬別ignore理念這個詞)
接下來甚至於內聯的寫法也被提出來了,怎麼說呢,既然是內聯寫法了,那HTML的細節也暴露無遺了吧?那如此這般的WebForm相對於MVC又有什麼優點了?組件化沒了,RAD沒了,可視化也沒了,那究竟什麼是WebForm?難道說一個aspx + aspx.cs就可以說它是WebForm了?那這WebForm的定義也太寬太廣了吧!真是相當地期待 ScottGu 站出來說一究竟什麼是WebForm以平息這種亂局。
被閹割了的WebForm相比之MVC究竟還有什麼優勢?對Web開發新手而言,門檻似乎比MVC高了吧?不僅僅是需要瞭解HTML、HTTP等這些相對低層的東西,就是WebForm開發方面根本就不會有太多閹割版WebForm的資料可以參考。若是對頁面代碼的控制粒度有那麼高的話,何不放開懷抱去擁抱質的變化?我想MVC的倡導者原先也極有可能是閹割的WebForm,到了一定程度,閹割版的WebForm也滿足不了需求的時候,質的變化就出現了,就是不肯擁抱變化的態度,才讓我們總是跟在人家後面跑!
WebForm比之MVC即有如男人之比女人,男人做事粗放但辦事效率高,女人做事細緻而繁瑣。硬是要他們同質化最終只會不倫不類。唉,難道潮流就是流行這些中性的東西,像什麼超女超男的……
有PHP背景的介面人員也太不具代表性了,要是和廣大開發人員合作的介面人員都有PHP背景,那世界就和諧了,那我們就是社會主義最終形態了!而且我就假裝地球上的介面人員都有PHP背景了吧,用MVC的話你連什麼組件都不用跟他講了,直接告訴他我給你什麼資料,你給我POST什麼資料不就OK了?
看了也許您會覺得我在說WebForm不如MVC似的,所以我要強調一下:不是男人比不上女人,只是不要讓男人去乾女人乾的事!
Separation of Concerns - 關注點分離,說到這一點,我感覺國內.NET社區還是少一種開放的態度,昨天看《自由》兄的一篇貼子,評論裡有位同志提了一句“MVC/IoC/ORM的理念相似”,後面竟然有人回說“不知道mvc和ioc/orm的相似性在哪裡...”然後還講了很多,很無奈啊!理念這個詞完全被ignored,我想請大家一定要互相尊重,認真地閱讀他人的文字。