ASP.NET 技術演進與架構總覽
完整梳理 ASP.NET 技術脈絡:從 Classic ASP 到現代 ASP.NET Core,涵蓋程式語言、伺服器技術、開發工具與檔案格式的演進歷程。
Classic ASP - 積體伺服器頁面 (1998)
- 微軟首個伺服器端腳本引擎
- 檔案副檔名:
.asp
- 主要語言:VBScript (亦支援 JScript)
- 解譯執行,效能較低
- 無編譯機制、無強型別、維護困難
現況: 已停止主流支援,僅維持相容性。新專案勿使用。
ASP.NET - 下一代 Web 開發架構 (2002~)
核心優勢
- 編譯執行:程式碼編譯為 IL,執行速度大幅提升
- 豐富語言支援:VB.NET、C# 為主,亦支援 C++、Java 等
- 完整控制項生態:伺服器控制項、使用者控制項、自訂控制項
- XML 整合:設定檔、資料存取、Web Services 皆基於 XML
- 內建認證授權:Forms Authentication、Windows Authentication、Role Manager
檔案副檔名對照
| 技術 | 副檔名 | 主要語言 |
| Classic ASP | .asp | VBScript |
| ASP.NET Web Forms | .aspx | VB.NET / C# |
| Razor C# | .cshtml | C# |
| Razor VB | .vbhtml | VB.NET |
請求處理流程
- 瀏覽器請求
.aspx 檔案
- ASP.NET 執行引擎讀取檔案
- 編譯程式碼 (首次請求或檔案變更)
- 執行伺服器端腳本
- 產生純 HTML 回應瀏覽器
ASP.NET Razor - 現代標記語法
- 嵌入伺服器程式碼的簡潔語法
- 類似 Classic ASP 直覺體驗,但功能完整
- 比傳統 ASP.NET 標記 (
<% %>) 更易讀、易寫
- 支援 C# 與 VB.NET
- 自動 HTML 編碼,內建 XSS 防護
ASP.NET 程式語言選擇
| 語言 | 特性 | 適用團隊 |
| Visual Basic (VB.NET) | 語法接近自然語言、不區分大小寫、VB6 開發者友善 | 傳統 VB 團隊、商務邏輯導向 |
| C# (C Sharp) | C 風格語法、強型別、功能豐富、社群資源最豐富 | 新專案、跨平台、開源生態、企業標準 |
建議: 新專案優先採用 C#,生態系資源最完整。
ASP.NET 三大伺服器技術架構
| 架構 | 核心概念 | 優點 | 缺點 | 現況 |
| Web Pages | 頁面為中心、Razor 語法 | 簡單、輕量、快速開發 | 大型專案架構較弱 | 維護模式,建議新專案用 Razor Pages |
| MVC | Model-View-Controller、關注點分離 | 高可測試性、SEO 友善、彈性路由 | 學習曲線較陡 | 成熟穩定,ASP.NET Core MVC 持續演進 |
| Web Forms | 事件驅動、伺服器控制項、ViewState | 快速表單開發、元件化、狀態管理 | ViewState 開銷、HTML 控制較難、測試困難 | 維護模式,不建議新專案 |
ASP.NET 開發工具演進
| 工具 | 定位 | 支援架構 | 現況 |
| WebMatrix | 輕量免費 IDE | Web Pages 專用 | 已停止更新 |
| Visual Web Developer Express | 免費精簡版 VS | MVC、Web Forms | 整合進 Visual Studio Community |
| Visual Studio Community | 免費完整版 IDE | 全部架構 + .NET Core | 主流推薦 |
| Visual Studio Professional/Enterprise | 專業/企業版 | 全部 + 進階除錯、測試、架構工具 | 企業授權 |
| VS Code | 輕量跨平台編輯器 | ASP.NET Core (需擴充) | 跨平台開發首選 |
ASP.NET Core - 現代跨平台時代 (2016~)
關鍵突破
- 跨平台:Windows、Linux、macOS、Docker 皆可執行
- 高效能:Kestrel 伺服器、非同步管線、輕量核心
- 模組化:NuGet 套件管理、依賴注入內建
- 統一架構:MVC 與 Web API 合併、Razor Pages 新增
- 開源:GitHub 開發、社群驅動、透明度高
新專案架構選擇指南
| 專案類型 | 推薦架構 | 理由 |
| 企業級 Web 應用 | ASP.NET Core MVC | 成熟、可測試、關注點分離 |
| 頁面導向網站 | ASP.NET Core Razor Pages | 簡潔、頁面為中心、易維護 |
| Web API / 微服務 | ASP.NET Core Web API | 輕量、高效能、OpenAPI 整合 |
| 即時應用 | ASP.NET Core SignalR | WebSocket 抽象、自動重連、擴展性 |
| Blazor WebAssembly | Blazor | C# 執行於瀏覽器、共用程式碼 |
遷移路徑建議
- Classic ASP → 重寫為 ASP.NET Core Razor Pages
- ASP.NET Web Forms → 逐步遷移至 MVC 或 Razor Pages
- ASP.NET MVC 5 → 升級至 ASP.NET Core MVC (需程式碼調整)
- ASP.NET Web Pages → 遷移至 ASP.NET Core Razor Pages
總結:技術選型決策樹
新專案開始
│
├─ 需要跨平台 / Docker / 微服務 / 高效能?
│ 是 → ASP.NET Core (MVC / Web API / Razor Pages / Blazor)
│ 否 →
│
├─ 團隊熟悉 Web Forms / 快速表單開發?
│ 是 → ASP.NET Web Forms (僅限維護現有專案)
│ 否 →
│
├─ 簡單內容型網站 / 單頁面應用?
│ 是 → ASP.NET Core Razor Pages
│ 否 →
│
└─ 複雜企業應用 / 需高可測試性 / 團隊協作?
是 → ASP.NET Core MVC
否 → 評估 Blazor / 其他架構