WebForm 自面世以來, 廣受廣大開發人員的歡迎 。
當然, WebForm 有一些 著名的 弊病, 比如 笨重的 ViewState 。
不過 我們 可以 用 一些 更加 先進 和 靈巧 的 方式 來使用它 。
比如, 《WebForm Anyway》 https://www.cnblogs.com/KSongKing/p/9455143.html ,
WebForm 優秀 的 控件模型, 很方便, 很好, 很優秀 。
比如 UserControl, 后來者 沒有 超越的, 包括 MasterPage, 當然 MasterPage 也是 WebForm 的, 不過我順便說兩句,
MasterPage 把 Web 簡單草根 自由清新 的 傳統 的 鄉村空氣 完全 攪渾了, 攪成一塘泥巴 。
明明在 頁面 里 放一個 Header 和 一個 Footer 的 UserControl 就完事 的 事, 非要 搞一個 不透明 的 框(MasterPage) 框起來 ,,,
MVC 即使有 多種 方式 插入一個 局部界面, 比如 RenderPartial() 什么的, 沒有一樣 比得上 UserControl 。
后來者 沒有 超越 UserControl 的 。
后來者 也 沒有 超越 GridView 的 。
后來者 也 沒有 超越 HttpModule 的 。
后來者 也 沒有 超越 HttpHandler(.ashx) 的 。
Aspx 、 HttpHandler(.ashx)、HttpModule 三劍客 的 靈活性 無與倫比, 跟 后來者 比起來, 強大到讓人 想哭 。
就 靈活性 這一點 而言, 堪稱 Web 界 的 C 語言 。
Asp.net Core 的 Middle Ware , 只不過是 新瓶 裝 舊酒, 僅此而已 。
把 “觀察者” 變成 “職責鏈”, 這是 創新 還是 革命 ?
Web 開發模型 在 WebForm 時代 就已經 達到 完備 了,
Aspx 、 HttpHandler(.ashx)、HttpModule 可以做 任何事 。
實際上, 如果按照 上面提到的 《WebForm Anyway》, WebForm 可以容易的和 各種 前端框架 結合起來 。
So …… Any Problem ?
從 其它方面 來看, WebForm 快速開發 的 特性 使得 WebForm 可以用於 科研教育 事業, 可以編寫 Demo, 可以用於 軟件工程 里的 原型開發(Prototype) 。
WebForm 應該 揚棄, 而不是 拋棄, 拋棄 WebForm 等於 “因噎廢食” 。
MVC 是要 改良 WebForm 的 弊端, 但是 自己 又 搞了 一套 蹩腳 的 規則 把 自己 套了 起來, 還不如 Web Pages 。
首先, 強迫使用 所謂的 “顯示(View) 控制(Control) 模型(Model)” 分離 又 對應 的 這個 架構 本身 就是 失敗 的, 非常失敗 。
WebForm 對 3 層 架構 的 支持 很好, 把 UI 和 BL 分離 的 很清楚, 前端 后端 也 分離 的 很清楚 。
WebForm 非常經典, 非常優秀 。
而 反過來 看, 相比於 WebForm 直觀 清晰 易用 的 3 層架構, MVC 的 什么 “View 和 模型” 簡直 是 為設計而設計, 就是 所謂的 “過度設計” 。
什么 View 和 模型(Model), 根本 不需要 這些 概念 。
要 這些 概念 做什么?
Web -> BL -> DAL
這很清楚 。
MVC 把 Web 分成了 View, Control, Model ,,,,,這 光 Web 層 都 變成 3 層 架構 了 。
MVC 里 還有一個 更糟 的 地方 是,
Model 還會跟 View 掛鈎, 意思是 “某某 頁面 涉及到 的 業務實體 是 xx ,yy ……” ,
這 掛鈎 簡直 是 純粹 是 設計人員 和 開發人員 的 負擔, 累贅 。
有 網友 提到 MVVM, MVVM 我也反對 。
MVC 是 破壞 3 層架構 的, 從 MVVM 上 更加 清楚 的 可以看出來 。
MVC 表面上 分層 ,實際上 把 BL 和 DAL 削弱了, 並 把 BL 和 DAL 的 職能 混雜 進 了 UI 層, 這 非常 糟糕 。
MVVM 用來 做控件 可以, 做架構 不行 。
WebForm 的 前后端 分離 的 很清楚,
WebForm 可以 自由 的 使用 前端 渲染, 沒有問題 。
前后端 架構 很清楚 。
WebForm 提供了 清晰 的 架構 和 靈活性, 可以在 后台(服務器端) 處理 UI 邏輯, 也支持 純前端, 也支持 前端 和 后台 結合處理 UI 邏輯 。
所以說, WebForm 的 架構 是 很清晰 和 靈活 的,
WebForm 可以 簡化 輕量化, 並和 前端 結合起來,
我認為 這樣 很 完美 。
其實 MVC 更像 cgi, 只是比 cgi 更高級, 可以 方便 的 和 靜態資源 混合 渲染 。
還可以參考:
《WebForm AnyWay》 https://www.cnblogs.com/KSongKing/p/9455143.html ,
《我發起並創立了一個 .Net 平台上的 Web 業務系統 基礎庫 開源項目 WebEasy》 https://www.cnblogs.com/KSongKing/p/10249997.html ,
《我發起並創立了一個 Javascript 前端庫 開源項目 jWebForm》 https://www.cnblogs.com/KSongKing/p/10326119.html 。