encyklopedia.space

ASP.NET MVC

ASP.NET MVC (Model‑View‑Controller) – architektoniczny framework do tworzenia aplikacji internetowych opracowany przez firmę Microsoft w ramach platformy .NET. Udostępniony po raz pierwszy w 2009 roku, łączy zalety klasycznego modelu MVC z możliwością wykorzystania pełnego ekosystemu C# oraz bibliotek Entity Framework. Framework jest częścią rodziny technologii ASP.NET i w kolejnych wersjach ewoluował w kierunku ASP.NET Core MVC.

Historia

Podstawy architektury MVC

Model‑View‑Controller to wzorzec projektowy, w którym aplikacja jest podzielona na trzy główne warstwy:

Model (Model)
Reprezentuje domenę aplikacji, logikę biznesową i dostęp do danych, najczęściej przy pomocy Entity Framework lub innych ORM‑ów.
Widok (View)
Odpowiada za prezentację danych – generuje kod HTML, CSS i JavaScript. Domyślnym silnikiem szablonów jest Razor.
Kontroler (Controller)
Przyjmuje żądania HTTP, wywołuje odpowiednie akcje w warstwie modelu, a następnie wybiera i zwraca odpowiedni widok.

Kluczowe elementy frameworka

  • Routing – system mapujący adresy URL na akcje kontrolerów. Definiowany w pliku RouteConfig.cs lub w Startup.cs w nowszych wersjach.
  • Kontrolery i akcje – klasy dziedziczące po System.Web.Mvc.Controller. Akcje to publiczne metody zwracające obiekty typu ActionResult.
  • Widoki – pliki .cshtml wykorzystujące język szablonów Razor, który umożliwia płynne łączenie C# z markupem HTML.
  • Model wiążący (Model Binding) – automatyczne mapowanie danych z żądania HTTP (np. formularzy) na parametry metod kontrolera.
  • Walidacja – atrybuty danych ([Required], [StringLength] itp.) oraz integracja z jQuery Validation.
  • Filtrowanie – mechanizm umożliwiający wykonywanie kodu przed lub po akcji kontrolera (np. AuthorizeAttribute, HandleErrorAttribute).
  • Dependency Injection – wbudowana obsługa DI od wersji 5 oraz możliwość podłączenia kontenerów takich jak Autofac czy Ninject.

Przykład prostego kontrolera

using System.Web.Mvc;

namespace MyApp.Controllers
{
    public class HomeController : Controller
    {
        // GET: /Home/Index
        public ActionResult Index()
        {
            ViewBag.Message = "Witaj w ASP.NET MVC!";
            return View();
        }

        // POST: /Home/Contact
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Contact(ContactModel model)
        {
            if (ModelState.IsValid)
            {
                // logika przetwarzania formularza
                return RedirectToAction("Thanks");
            }
            return View(model);
        }
    }
}

Widok Razor dla akcji Index

@{
    ViewBag.Title = "Strona główna";
}
<h2>@ViewBag.Message</h2>
<p>To jest przykładowy widok w technologii <strong>Razor</strong>.</p>

Zastosowania i popularność

ASP.NET MVC jest wykorzystywany w projektach od małych witryn po rozbudowane systemy korporacyjne. Dzięki otwartemu kodowi źródłowemu, silnemu wsparciu społeczności oraz integracji z innymi technologiami .NET, framework zdobył uznanie wśród deweloperów programistów. Najczęstsze scenariusze zastosowań to:

  • Systemy e‑commerce
  • Portale intranetowe i extranetowe
  • RESTful API (w połączeniu z ASP.NET Web API)
  • Aplikacje wymagające wysokiej skalowalności i testowalności

Zalety

  • Wyraźny podział warstw ułatwiający testowanie jednostkowe.
  • Pełna kontrola nad kodem HTML – brak „magii” generowanej automatycznie, w przeciwieństwie do Web Forms.
  • Wsparcie dla REST i tworzenia API.
  • Rozbudowany ekosystem narzędzi (Visual Studio, Rider).
  • Łatwe wprowadzanie nowoczesnych technik front‑endowych (np. Angular, React).

Wady

  • Wymaga znajomości wzorca MVC oraz języka C# – krzywa uczenia się dla początkujących.
  • Konfiguracja routingu i DI może być skomplikowana w dużych projektach.
  • W starszych wersjach (przed 5) brak wbudowanego wsparcia dla asynchroniczności i nowoczesnych protokołów.

Powiązane technologie

W ekosystemie .NET istnieje szereg pokrewnych rozwiązań, które często są używane razem z ASP.NET MVC:

Przyszłość

Chociaż ASP.NET MVC 5 jest w pełni wspierany, Microsoft koncentruje się na ASP.NET Core MVC, który oferuje lepszą wydajność, platformę wielosystemową (Linux, macOS) oraz nowoczesny model hostingu w chmurze (Azure). Dlatego nowe projekty często wybierają Core, ale klasyczna wersja nadal utrzymuje się w istniejących aplikacjach przedsiębiorczych.

Źródła i dalsza lektura