很多從 Java 轉 .NET 的開發者會問:ASP.NET 是前端還是後端?對應 Java 的 Servlet/JSP/Spring 是什麼?WCF、WF 又是做什麼的?本文將從架構分層、技術對標、適用場景三個維度,為你繪製 .NET Web 開發全景圖。
ASP.NET 是運行在服務器端的 Web 應用框架,負責接收 HTTP 請求、執行業務邏輯、訪問數據庫、生成 HTML/JSON 響應。它不包含瀏覽器端的 HTML/CSS/JavaScript,但可通過 Razor、Blazor 等技術在服務端渲染或組件化輸出前端代碼。
| 領域 | Java 生態 | .NET 生態 (現代 ASP.NET Core) | 備註 |
|---|---|---|---|
| Web 框架核心 | Servlet API, Spring MVC, Spring Boot | ASP.NET Core (Middleware, Controller/Minimal API) | ASP.NET Core 跨平台、高性能、統一編程模型 |
| 視圖渲染 | JSP, Thymeleaf, FreeMarker | Razor Pages, Blazor Server, Blazor WebAssembly | Blazor 可用 C# 寫前端邏輯 (WASM) |
| 依賴注入 | Spring IoC | 內置 DI 容器 (IServiceCollection) | .NET 核心庫內置,無需第三方 |
| ORM | MyBatis, Hibernate, JPA | Entity Framework Core, Dapper | EF Core 強類型 LINQ,Dapper 輕量高性能 |
| 微服務/通訊 | Dubbo, Spring Cloud, gRPC-Java | gRPC, ASP.NET Core gRPC, MassTransit, CAP | WCF 已不推薦用於新項目 |
| 工作流 | Activiti, Flowable, Camunda | Elsa Workflows, CoreWFW, 或外掛 Camunda | WF (Windows Workflow Foundation) 僅限 .NET Framework 舊版 |
| 部署宿主 | Tomcat, Jetty, Undertow | Kestrel + IIS/Nginx/Apache 反向代理, Docker | Kestrel 為跨平台高性能 Web 服務器 |
CoreWCF 社區移植包在 .NET 6+ 運行,但新項目直接選 gRPC/REST。ASP.NET Core 8+ (Minimal API / Controller)
│
├─ Entity Framework Core 8 (PostgreSQL / SQL Server / SQLite)
├─ gRPC / SignalR (實時/內部調用)
├─ MassTransit + RabbitMQ (事件驅動)
├─ Blazor WebAssembly / Server (全棧 C# 前端)
├─ Serilog + OpenTelemetry (可觀測性)
├─ Docker + Kubernetes (部署)
└─ xUnit + FluentAssertions + Testcontainers (測試)
理解定位與演進脈絡,才能在技術選型時不踩舊坑、用對新工具。