Samouczek dotyczący frameworka MVC dla początkujących: Co to jest, Architecture i przykład

Co to jest framework MVC?

Kurs Kontroler widoku modelu (MVC) framework to wzorzec architektoniczny, który dzieli aplikację na trzy główne komponenty logiczne: Model, Widok i Kontroler. Stąd skrót MVC. Każdy komponent architektury jest zbudowany tak, aby obsługiwać określony aspekt rozwoju aplikacji. MVC oddziela od siebie warstwę logiki biznesowej i prezentacyjną. Tradycyjnie był używany w graficznych interfejsach użytkownika (GUI) komputerów stacjonarnych. Obecnie architektura MVC w technologii internetowej stała się popularna w projektowaniu aplikacji internetowych, jak również aplikacji mobilnych.

Historia MVC

  • Architektura MVC została po raz pierwszy omówiona w 1979 roku przez Trygve Reenskauga
  • Model MVC został po raz pierwszy wprowadzony w 1987 roku w języku programowania Smalltalk.
  • MVC zostało po raz pierwszy przyjęte jako ogólna koncepcja w artykule z 1988 roku
  • W ostatnim czasie wzorzec MVC jest szeroko stosowany w nowoczesnych aplikacjach internetowych

Cechy MVC

  • Łatwe i bezproblemowe testowanie. Wysoce testowalna, rozszerzalna i podłączana platforma
  • Aby zaprojektować architekturę aplikacji internetowej przy użyciu wzorca MVC, zapewnia on pełną kontrolę zarówno nad kodem HTML, jak i adresami URL
  • Wykorzystaj istniejące funkcje dostarczane przez ASP.NET, JSP, Django itp.
  • Wyraźne rozdzielenie logiki: Model, Widok, Kontroler. Rozdzielenie zadań aplikacji, tj. logiki biznesowej, logiki Ul i logiki wejściowej
  • Routing adresów URL dla adresów URL przyjaznych SEO. Potężne mapowanie adresów URL dla zrozumiałych i możliwych do przeszukiwania adresów URL
  • Wsparcie dla rozwoju opartego na testach (TDD)

MVC Architektura

Oto szczegółowa architektura struktury MVC:

MVC Architektura
MVC ArchiSchemat tecture

Trzy ważne komponenty MVC to:

  • Model: Zawiera wszystkie dane i związaną z nimi logikę
  • Widok: przedstawia dane użytkownikowi lub obsługuje interakcję z użytkownikiem
  • Kontroler: interfejs pomiędzy komponentami Modelu i Widoku

Przyjrzyjmy się szczegółowo temu komponentowi:

Zobacz

Widok to ta część aplikacji, która reprezentuje prezentację danych.

Widoki tworzone są na podstawie danych zebranych z danych modelu. Widok żąda od modelu podania informacji, aby przedstawić użytkownikowi prezentację wyników.

Widok przedstawia również dane z wykresów, diagramów i tabel. Na przykład, każdy widok klienta będzie zawierał wszystkie komponenty interfejsu użytkownika, takie jak pola tekstowe, listy rozwijane itp.

kontroler

Kontroler to ta część aplikacji, która obsługuje interakcję z użytkownikiem. Kontroler interpretuje dane wejściowe użytkownika za pomocą myszy i klawiatury, informując model i widok o konieczności zmiany.

Kontroler wysyła polecenia do modelu w celu aktualizacji jego stanu (np. zapisanie określonego dokumentu). Kontroler wysyła również polecenia do powiązanego z nim widoku, aby zmienić prezentację widoku (na przykład przewinięcie określonego dokumentu).

Model

Komponent modelu przechowuje dane i związaną z nimi logikę. Reprezentuje dane przesyłane pomiędzy komponentami kontrolera lub dowolną inną powiązaną logiką biznesową. Na przykład obiekt Controller pobierze informacje o kliencie z bazy danych. Manipuluje danymi i wysyła je z powrotem do bazy danych lub wykorzystuje je do renderowania tych samych danych.

Odpowiada na żądanie z widoków, a także reaguje na instrukcje kontrolera, aby się zaktualizować. Jest to jednocześnie najniższy poziom wzorca odpowiedzialny za utrzymanie danych.

Przykłady MVC

Zobaczmy przykład kontrolera widoku modelu z życia codziennego:

1 przykład

Przykłady MVC

  • Załóżmy, że idziesz do restauracji. Nie będziesz chodzić do kuchni i przygotowywać jedzenia, które z pewnością możesz zrobić w domu. Zamiast tego idź tam i poczekaj, aż przyjdzie kelner.
  • Teraz przychodzi do ciebie kelner i zamawiasz jedzenie. Kelner nie wie, kim jesteś i czego chcesz, po prostu spisał szczegóły zamówienia.
  • Następnie kelner idzie do kuchni. W kuchni kelner nie przygotowuje jedzenia.
  • Kucharz przygotowuje twoje jedzenie. Kelner otrzymuje twoje zamówienie wraz z numerem twojego stolika.
  • Gotuj, a następnie przygotuj dla siebie jedzenie. Używa składników do gotowania jedzenia. Załóżmy, że zamawiasz kanapkę warzywną. Następnie potrzebuje chleba, pomidorów, ziemniaków, papryki, cebuli, kawałka, sera itp., które pozyskuje z lodówki
  • Gotuj i przekazuj jedzenie kelnerowi. Teraz zadaniem kelnera jest wynoszenie jedzenia poza kuchnię.
  • Teraz kelner wie, jakie jedzenie zamówiłeś i jak jest podawane.

W tym przykładzie architektury MVC,

View= You
Waiter= Controller
Cook= Model
Refrigerator= Data

Zobaczmy jeszcze jeden przykład modelu MVC,

2 przykład

Przykłady MVC

Mechanizm napędowy samochodu to kolejny przykład modelu MVC.

  • Każdy samochód składa się z trzech głównych części.
  • Widok = Interfejs użytkownika: (Dźwignia zmiany biegów, panele, kierownica, hamulec itp.)
  • Kontroler-mechanizm (silnik)
  • Model - Przechowywanie (zbiornik benzyny lub oleju napędowego)

Samochód uruchamiany jest na silniku, pobiera paliwo z magazynu, ale działa wyłącznie przy użyciu wspomnianych urządzeń interfejsu użytkownika.

Popularne frameworki internetowe MVC

Oto lista niektórych popularnych frameworków MVC:

Zalety MVC: kluczowe korzyści

Oto najważniejsze korzyści wynikające ze stosowania architektury MVC:

  • Łatwa konserwacja kodu, który można łatwo rozszerzać i rozwijać
  • Komponent modelu MVC można testować niezależnie od użytkownika
  • Łatwiejsza obsługa nowych typów klientów
  • Rozwój różnych komponentów może odbywać się równolegle.
  • Pomaga uniknąć złożoności poprzez podzielenie aplikacji na trzy jednostki. Model, widok i kontroler
  • Używa tylko wzorca Front Controller, który przetwarza żądania aplikacji internetowych za pośrednictwem jednego kontrolera.
  • Oferuje najlepsze wsparcie dla rozwój oparty na testach
  • Działa dobrze w przypadku aplikacji internetowych obsługiwanych przez duże zespoły projektantów i programistów stron internetowych.
  • Zapewnia czyste oddzielenie problemów (SoC).
  • Przyjazny dla optymalizacji pod kątem wyszukiwarek (SEO).
  • Wszystkie klasy i obiekty są od siebie niezależne, dzięki czemu można je testować osobno.
  • Wzorzec projektowy MVC umożliwia logiczne grupowanie powiązanych działań na kontrolerze.

Wady korzystania z MVC

  • Trudny do odczytania, zmiany, przetestowania jednostkowego i ponownego wykorzystania tego modelu
  • Nawigacja w ramach struktury może być czasami skomplikowana, ponieważ wprowadza nowe warstwy abstrakcji, które wymagają od użytkowników dostosowania się do kryteriów dekompozycji MVC.
  • Brak formalnego wsparcia w zakresie walidacji
  • Zwiększona złożoność i nieefektywność danych
  • Trudność korzystania z MVC z nowoczesnym interfejsem użytkownika
  • Aby programować równolegle, potrzeba wielu programistów.
  • Wymagana jest znajomość wielu technologii.
  • Utrzymanie wielu kodów w kontrolerze

3 poziomy Architechnologia vs. MVC Architektura

Parametr 3-Tier Architektura MVC Architektura
Komunikacja Ten typ wzorca architektury nigdy nie komunikuje się bezpośrednio z warstwą danych. Wszystkie warstwy komunikują się bezpośrednio, wykorzystując topologię trójkąta.
Stosowanie Trójwarstwowy: szeroko stosowany w aplikacjach internetowych, gdzie klient, warstwy danych i oprogramowanie pośredniczące działają na fizycznie oddzielnych platformach. Zwykle używany w aplikacjach działających na pojedynczej graficznej stacji roboczej.

Podsumowanie

  • MVC to wzorzec architektoniczny, który dzieli aplikację na 1) Model, 2) Widok i 3) Kontroler
  • Model: Zawiera wszystkie dane i związaną z nimi logikę
  • Widok: przedstawia dane użytkownikowi lub obsługuje interakcję z użytkownikiem
  • Kontroler: interfejs pomiędzy komponentami Modelu i Widoku
  • Architektura MVC została po raz pierwszy omówiona w 1979 roku przez Trygve Reenskauga
  • Architektura MVC w Java to wysoce testowalna, rozszerzalna i podłączalna platforma
  • Niektóre popularne frameworki MVC to Rails, Zend Framework, CodeIgniter, Laravel, Fuel PHP itp.