Definicja #
ASP.NET MVC to framework Microsoftu do tworzenia aplikacji webowych z wyraźnym podziałem na warstwy Model-View-Controller. Pierwotna wersja (ASP.NET MVC 1-5) działała na .NET Framework (Windows-only) i stanowiła odpowiedź na rosnącą popularność frameworków takich jak Ruby on Rails.
Wzorzec MVC w ASP.NET MVC:
- Model — klasy C# reprezentujące dane i logikę biznesową; ViewModels do przekazywania danych do widoków
- View — szablony Razor (
.cshtml) generujące HTML po stronie serwera;@Html.Helper(), Partial Views, Layouts - Controller — klasy dziedziczące po
Controller; metody akcji zwracająceActionResult(View, Redirect, JSON)
Kluczowe cechy ASP.NET MVC 5:
- Razor View Engine — składnia
@model,@foreach,@Html.BeginForm()do renderowania HTML - Routing — konwencjonalny routing
{controller}/{action}/{id}lub attribute routing - Model Binding — automatyczne mapowanie parametrów HTTP na parametry metod kontrolera
- Filters —
AuthorizeAttribute,HandleErrorAttribute, custom action filters - Bundling and Minification — System.Web.Optimization do łączenia zasobów CSS/JS
Relacja z ASP.NET Core MVC: ASP.NET Core 1.0+ zawiera własną implementację MVC (ASP.NET Core MVC) — podobne koncepcje, ale przepisane od zera. ASP.NET MVC 5 na .NET Framework jest technologią legacy i nie otrzymuje nowych funkcji (tylko poprawki bezpieczeństwa).
Zastosowania #
- Utrzymanie i rozwój istniejących aplikacji na .NET Framework — wiele korporacyjnych systemów napisano w ASP.NET MVC 5 i wymagają wsparcia
- Aplikacje webowe z server-side rendering — generowanie HTML po stronie serwera (Razor Views) dla systemów wewnętrznych
- Migracja do ASP.NET Core — znajomość ASP.NET MVC ułatwia przejście na ASP.NET Core MVC (podobne koncepcje)
- Intranety i systemy HR/ERP na .NET Framework — środowiska, gdzie migracja na .NET Core jest nieekonomiczna w krótkim terminie
Ścieżka nauki #
ASP.NET MVC 5 jest technologią legacy — nowe projekty nie powinny jej używać. Warto jednak znać ją dla pracy z systemami utrzymaniowymi.
Zacznij od (dla nowych deweloperów uczących się .NET):
- Zamiast ASP.NET MVC 5 ucz się od razu ASP.NET Core MVC — nowoczesna wieloplatformowa wersja
- Jeśli pracujesz z legacy kodem: zrozum strukturę projektu MVC 5, routing konwencjonalny, cykl życia requesta
- Razor składnia:
@model,@foreach,Html.ActionLink(), partial views
Dla deweloperów migrujących do .NET Core:
- Porównaj ASP.NET MVC 5 z ASP.NET Core MVC — koncepcje podobne, różni się DI (wbudowany w Core), middleware pipeline, konfiguracja
- Narzędzie migracji: .NET Upgrade Assistant (Microsoft) pomaga migrować projekty .NET Framework do .NET Core
- Kluczowe różnice:
Global.asax→Program.cs,Web.config→appsettings.json,System.Web→ nowy namespace
FAQ #
- Czy ASP.NET MVC i ASP.NET Core MVC to to samo?
- Nie. ASP.NET MVC 5 działa na .NET Framework (Windows-only) i jest technologią legacy. ASP.NET Core MVC to nowoczesna wersja działająca na .NET Core/.NET 5+ (wieloplatformowa, open-source). Koncepcje (kontrolery, widoki Razor, routing) są podobne, ale implementacja jest inna — nie są kompatybilne binarnie.
- Czy warto uczyć się ASP.NET MVC 5 w 2026 roku?
- Tylko jeśli pracujesz z istniejącym systemem na .NET Framework. Do nowych projektów zawsze wybieraj ASP.NET Core. Rynek pracy dla .NET Framework MVC 5 kurczy się — oferty dotyczą głównie utrzymania legacy systemów. Inwestuj czas w ASP.NET Core, który ma aktywny rozwój i rosnące zapotrzebowanie.
- Jak przenieść projekt z ASP.NET MVC 5 na ASP.NET Core?
- Microsoft oferuje narzędzie .NET Upgrade Assistant, które automatyzuje część migracji. Kluczowe zmiany: Global.asax → Program.cs, Web.config → appsettings.json, System.Web.Mvc → Microsoft.AspNetCore.Mvc, nowy system DI, middleware pipeline zamiast HttpModules. Migracja dużych projektów jest złożona i często wykonywana etapowo.
- Czym jest WebForms w porównaniu do ASP.NET MVC?
- ASP.NET WebForms to starsza technologia Microsoft (2002) z modelem event-driven podobnym do WinForms — kontrolki serwerowe, ViewState, code-behind. ASP.NET MVC (2009) zastąpił WebForms podejściem opartym na wzorcu MVC bez stanu (stateless), z pełną kontrolą nad HTML. Obie technologie działają na .NET Framework; żadna nie jest rekomendowana dla nowych projektów.