IT Wzorzec architektoniczny

MVC

Znany też jako:Model-View-Controller

Definicja #

MVC (Model-View-Controller) to wzorzec architektoniczny (architectural pattern) dzielący aplikację na trzy współpracujące warstwy, każda z wyraźnie określonymi odpowiedzialnościami. Wzorzec ten wprowadził Trygve Reenskaug w latach 70. XX wieku (Smalltalk), a jego popularność ogromnie wzrosła wraz z rozwojem frameworków webowych.

Trzy warstwy MVC:

  • Model — reprezentuje dane i logikę biznesową aplikacji; zawiera klasy domenowe, encje bazy danych, repozytoria i serwisy; Model nie wie nic o widoku ani kontrolerze
  • View (Widok) — warstwa prezentacji; generuje interfejs użytkownika (HTML, JSON, XML) na podstawie danych z Modelu; nie powinna zawierać logiki biznesowej — tylko wyświetlanie
  • Controller (Kontroler) — warstwa koordynująca; odbiera żądania HTTP, wywołuje odpowiednie metody Modelu, wybiera właściwy Widok i przekazuje do niego dane; jest 'klej' łączący Model i View

Typowy przepływ żądania w aplikacji webowej MVC:

  1. Użytkownik wysyła żądanie HTTP (np. GET /products/42)
  2. Router kieruje żądanie do odpowiedniego Kontrolera (ProductsController.Show)
  3. Kontroler wywołuje Model (repozytorium, serwis domenowy) by pobrać produkt o ID 42
  4. Kontroler przekazuje dane do Widoku
  5. Widok generuje odpowiedź (HTML strony lub JSON dla API)

MVC w popularnych frameworkach: ASP.NET Core MVC (C#), Spring MVC (Java), Ruby on Rails, Django (Python, technicznie MTV ale koncepcyjnie MVC), Laravel (PHP).

Zastosowania #

MVC stosuje się do:

  • Budowania aplikacji webowych z wieloma stronami (server-side rendering) — frameworki MVC jak ASP.NET Core MVC, Spring MVC, Rails generują HTML po stronie serwera
  • REST API z kontrolerami — w podejściu API-first Kontroler zwraca JSON zamiast widoku HTML; model pozostaje bez zmian
  • Aplikacji desktopowych — MVC był pierwotnie wzorcem dla GUI; Windows Forms, WinForms, macOS/iOS MVC Controller
  • Oddzielenia logiki biznesowej od prezentacji — Model jest testowalny niezależnie od warstwy HTTP; testy jednostkowe Modelu bez uruchamiania serwera
  • Dużych aplikacji wieloosobowych — jasny podział odpowiedzialności ułatwia pracę zespołową: frontend = View, backend = Model + Controller

Ścieżka nauki #

MVC jest podstawowym wzorcem architektury, którego powinna być świadoma każda osoba tworząca aplikacje webowe.

Zacznij od:

  • Zrozumienie odpowiedzialności każdej warstwy — co należy do Modelu, Widoku, Kontrolera
  • Prosty przykład w wybranym frameworku: ASP.NET Core MVC (C#), Spring MVC (Java) lub Flask/Django (Python)
  • Routing — jak żądanie HTTP trafia do właściwego Kontrolera
  • Formularze HTML i walidacja — dane z formularza → Kontroler → Model → odpowiedź

Następnie pogłębiaj:

  • Wzorce pochodne: MVVM (Mobile/Desktop, Angular), MVP (Mobile Android), różnice i zastosowania
  • Clean Architecture i DDD — jak MVC wpisuje się w większe wzorce architektoniczne
  • REST API z MVC — Kontroler jako endpoint API, serializacja JSON, versioning
  • Testowanie warstw: testy jednostkowe Modelu, testy integracyjne Kontrolera (MockMvc, WebApplicationFactory)
  • Alternatywy: CQRS + MediatR, Minimal API w .NET — kiedy tradycyjny MVC ma ograniczenia

FAQ #

Czym różni się MVC od MVVM?
MVC (Model-View-Controller) to wzorzec gdzie Kontroler obsługuje logikę sterowania i jest 'klejem' między Modelem a Widokiem. MVVM (Model-View-ViewModel) zastępuje Kontroler ViewModelem, który jest związany (data binding) z Widokiem dwukierunkowo — zmiana w Widoku automatycznie aktualizuje ViewModel i odwrotnie. MVVM jest popularny w aplikacjach SPA (Angular, Vue) i mobilnych (WPF, SwiftUI).
Czy MVC to to samo co ASP.NET MVC?
ASP.NET Core MVC to implementacja wzorca MVC przez Microsoft dla platformy .NET. MVC jako wzorzec architektoniczny jest koncepcją niezależną od technologii — implementują go również Spring MVC (Java), Ruby on Rails, Django (Python), Laravel (PHP). ASP.NET Core MVC to jedno z wielu wdrożeń tego wzorca.
Czym jest Routing w MVC?
Routing to mechanizm mapowania żądań HTTP (URL + metoda HTTP) na konkretne metody Kontrolera. W ASP.NET Core MVC routing konfiguruje się przez atrybuty ([Route], [HttpGet]) lub konwencję ({controller}/{action}/{id}). Router decyduje, który Kontroler i która metoda obsłuży dane żądanie.
Ile zarabia Developer znający MVC?
MVC to wiedza bazowa każdego backendowego developera — sama w sobie nie determinuje wynagrodzenia. Mid Backend Developer (ASP.NET Core MVC, Spring MVC) zarabia w Polsce od 10 000 do 18 000 zł brutto, senior od 18 000 do 30 000 zł. MVC jest wymaganą, nie wyróżniającą umiejętnością.
Ostatnia aktualizacja:

Powiązane hasła

Technologie i biblioteki, które najczęściej pojawiają się razem z MVC w ogłoszeniach.

Cały słownik IT

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.