Architektura, która zdominowała aplikacje webowe.
Na czym polega MVC?
Pisanie strony internetowej z rozbudowaną komunikacją z użytkownikiem to już dawno nie jest praca dla jednej osoby. Między innymi dlatego wzorzec architektury MVC stał się tak popularny. Pozwala on tworzyć nawet złożone aplikacje w ramach zarządzanego procesu, w którym kilku programistów może jednocześnie pracować nad różnymi częściami oprogramowania.
Skrót MVC oznacza tyle co model-view-controller. Oto, co oznacza każdy z tych składników:
- Model: backend (zaplecze witryny) zawierające całą logikę postępowania z danymi
- Widok: frontend czyli generalnie graficzny interfejs użytkownika (GUI)
- Kontroler: mózg aplikacji kontrolujący sposób wyświetlania danych
Koncepcję MVC po raz pierwszy przedstawił Trygve Reenskaug, który zaproponował ją jako sposób tworzenia graficznych interfejsów użytkownika dla aplikacji desktopowych.
Obecnie wzorzec MVC jest używany w nowoczesnych aplikacjach internetowych, ponieważ zapewnia skalowalność i pozwala obniżyć koszty stworzenia, utrzymania i rozbudowy aplikacji. Popularność MVC jest widoczna m.in. w Javascript, coraz częściej wykorzystywanym w backendzie. Pierwsze z frameworków, które stosowały koncepcję model-view-controller to KnockoutJS, Django czy Ruby on Rails.
Dlaczego warto używać MVC?
Wzorzec MVC pomaga rozbić kod frontendu i backendu na osobne komponenty. W ten sposób znacznie łatwiej jest zarządzać i wprowadzać zmiany po obu stronach aplikacji bez wzajemnego zakłócania się czy czekania aż inny zespół programistów zrobi swoją robotę. Ale oczywiście łatwiej to powiedzieć niż zrobić, zwłaszcza gdy kilku programistów musi jednocześnie aktualizować, modyfikować lub debugować pełnowymiarową aplikację. Ich praca zawsze w jakimś stopniu będzie się jednak przenikać.
Jak korzystać z MVC?
Aby lepiej zilustrować wzorzec MVC załóżmy, że chcemy zrobić prostą aplikację „Ulubiony język programowania”. Program wyświetla listę najpopularniejszych języków programowania a użytkownik może klikać nazwy języków nabijając w ten sposób licznik umieszczony przy każdym z nich. Po kliknięciu na dany język pojawia się dodatkowo jego graficzny symbol (logo). Jak to napisać w architekturze MVC?
Model
Zadaniem modelu jest po prostu zarządzanie danymi. Niezależnie od tego, czy dane pochodzą z bazy danych, interfejsu API czy obiektu JSON, za zarządzanie nimi odpowiada model. W naszej aplikacji obiekt modelu zawiera tablicę obiektów (języków oprogramowania) ze wszystkimi informacjami (danymi) potrzebnymi do aplikacji. Zarządza również wyświetlaniem bieżącego języka za pomocą zmiennej, która początkowo ma wartość null.
Widoki (UI)
Zadaniem widoku jest decydowanie o tym co użytkownik zobaczy na ekranie i w jaki sposób. Aplikacja, którą piszemy może mieć na przykład dwa takie widoki: languagesView i currentLanguageView. Oba widoki generują to co zostanie wyświetlone użytkownikowi.
Kontroler
Odpowiedzialnością kontrolera jest pobieranie, modyfikowanie i udostępnianie danych użytkownikowi. Zasadniczo kontroler jest czymś w rodzaju łącznika między widokiem a modelem. Kontroler pobiera dane z modelu i inicjalizuje widoki. Jeśli użytkownik domaga się jakiejś zmiany w danych wykorzystując do tego któryś z widoków, kontroler modyfikuje dane zgodnie z żądaniem.