Blazor 感覺回到了ASP時代?
大家好,我是碼農剛子。前幾天分享的文章:《ASP.NET Core Blazor簡介和快速入門三(布局和路由)》下面,有朋友評論說:這blazor 感覺回到了asp 時代。

那么,為什么會有這種說法?回想一下ASP時代是什么時候,大家還有沒有印象。我2019年出來工作,當時是做C/S開發ERP系統,做了一年多,后面又轉了B/S開發,一直到現在。兩中不同的開發模式,針對兩個不同的實體行業:一個是混凝土攪拌站,一個是pcb工廠。不過都是開發ERP系統。
為什么會感覺blazor回到了asp時代?我們來看看兩者的相似之處:
這種感覺主要應該源于 “服務端渲染” 模式的回歸。- 以頁面為中心的模型: 在經典 ASP (或 ASP.NET Web Forms) 中,你構建的是一個一個的頁面(.asp 或 .aspx)。每個請求都對應一個具體的頁面文件。Blazor 也有 .razor 頁面和組件,在服務端模式下,導航到一個 URL 會請求服務器,服務器處理并渲染整個頁面后返回。這種“往返于服務器”的體驗很像老式的 Web 開發。
- 服務器持有狀態: 在 Blazor Server 模式下,組件的狀態(變量、數據)和 DOM 渲染邏輯都保存在服務器的內存中(在一個稱為“電路”的實時 SignalR 連接里)。這與 ASP.NET Web Forms 的 ViewState 機制在“狀態保存在服務器端”這一概念上有相似之處,雖然技術實現完全不同。
- C# 代碼主導: 你主要使用 C# 來編寫業務邏輯和 UI 邏輯,而不是 JavaScript。這讓習慣了 C# 后端開發的開發者感到非常親切和統一,就像當年用 VBScript/C# 在服務器端寫邏輯一樣。
- 較少的客戶端/服務器分離感: 在傳統的多頁面應用中,前端和后端的界限比較模糊。Blazor Server 也給人這種感覺,因為你不需要專門去構建一個獨立的 Web API,服務器端方法可以直接被前端調用(通過 SignalR)。
當然,它與“ASP時代”也是有根本不同的,Blazor是一種“螺旋式上升”。
為什么說這是一種“螺旋式上升”?盡管有上述相似之處,但 Blazor 絕非簡單的“復古”,它是在現代 Web 技術棧上對過去理念的重新思考和進化。- 組件化與聲明式UI: 這是最大的不同。經典 ASP 是命令式和基于字符串模板的。你需要用 <% %> 塊在 HTML 中混編代碼,然后手動控制輸出。而 Blazor 是聲明式和基于組件的。你通過組件(如 <MyTable Data="@items"/>)來構建 UI,當數據狀態 (items) 改變時,UI 會自動更新。這是現代前端框架(React, Vue, Angular)的核心思想,Blazor 將其帶入了 .NET 世界。
- 強大的數據綁定: Blazor 提供了靈活且強大的雙向數據綁定(@bind),遠比經典 ASP 的簡單輸出或 Web Forms 的復雜 ViewState 機制要清晰和高效。
- 現代化的實時通信: Blazor Server 使用 SignalR 在客戶端和服務器之間建立持久化的 WebSocket 連接。這使得 UI 更新是增量式的、實時的,體驗非常流暢。而經典 ASP 是純粹的“請求-響應”模型,每次交互都需要完整的頁面回發和刷新,體驗不可同日而語。
- 清晰的架構選擇:
- Blazor Server: 類似于“復古”模式,但底層技術是現代、高效的。
- Blazor WebAssembly: 這是完全不同的模式,C# 代碼直接在瀏覽器中運行,可以構建真正的單頁面應用,完全脫離了“回到服務器”的感覺。這更像是一個用 C# 編寫的 React/Vue 應用。
- 擁抱 Web 標準: Blazor 最終編譯和運行在現代瀏覽器標準之上(WebAssembly 或通過 SignalR)。它不依賴像 Web Forms 那樣笨重的、封裝了 HTML 的服務器控件。
結語
Blazor Server 模式確實在開發體驗上讓人重溫了服務端渲染的便捷和高效,特別是對于后端開發者來說,用 C# 搞定一切非常爽。但這絕不是簡單的倒退,而是‘螺旋式上升’。
它保留了服務端開發的高生產率和對后端資源直接訪問的優點,但同時融入了現代前端框架的‘組件化’和‘聲明式UI’等先進理念。而且,你還有 Blazor WebAssembly 這個選項,可以讓你用同樣的技術棧構建完全在客戶端運行的單頁面應用。所以,它更像是取二者之精華,為 .NET 開發者提供了一條通往現代 Web 開發的全新路徑。
簡單來說,我認為 Blazor 降低 .NET 開發者進入現代 Web 開發門檻——它讓熟悉服務器端思維的人能夠平滑過渡,同時又賦予了他們構建現代化、交互式 Web 應用的能力。

浙公網安備 33010602011771號