Model-widok-kontroler - Model–view–controller

Schemat interakcji w ramach wzorca MVC

Model-widok-kontroler (zwykle znany jako MVC ) to wzorzec projektowania oprogramowania powszechnie używany do tworzenia interfejsów użytkownika, które dzielą powiązaną logikę programu na trzy połączone ze sobą elementy. Odbywa się to w celu oddzielenia wewnętrznych reprezentacji informacji od sposobów przedstawiania i akceptowania informacji przez użytkownika.

Tradycyjnie stosowany w graficznych interfejsach użytkownika ( GUI ) pulpitu , wzorzec ten stał się popularny przy projektowaniu aplikacji internetowych . Popularne języki programowania mają frameworki MVC, które ułatwiają implementację wzorca.

składniki

Model
Centralny składnik wzoru. Jest to dynamiczna struktura danych aplikacji, niezależna od interfejsu użytkownika. Bezpośrednio zarządza danymi, logiką i regułami aplikacji.
Pogląd
Dowolna reprezentacja informacji, taka jak wykres, diagram lub tabela. Możliwych jest wiele widoków tych samych informacji, takich jak wykres słupkowy dla kierownictwa i widok tabelaryczny dla księgowych.
Kontroler
Akceptuje dane wejściowe i konwertuje je na polecenia dla modelu lub widoku.

Oprócz podziału aplikacji na te komponenty, projekt model-widok-kontroler definiuje interakcje między nimi.

  • Model odpowiada za zarządzanie danymi aplikacji. Otrzymuje dane wejściowe użytkownika ze sterownika.
  • Widok renderuje prezentację modelu w określonym formacie.
  • Kontroler odpowiada na dane wejściowe użytkownika i wykonuje interakcje na obiektach modelu danych. Kontroler odbiera dane wejściowe, opcjonalnie je waliduje, a następnie przekazuje dane wejściowe do modelu.

Podobnie jak w przypadku innych wzorców oprogramowania, MVC wyraża „rdzeń rozwiązania” problemu, jednocześnie umożliwiając jego dostosowanie do każdego systemu. Poszczególne projekty MVC mogą znacznie różnić się od tradycyjnego opisu tutaj.

Historia

Jednym z przełomowych odkryć we wczesnym rozwoju graficznych interfejsów użytkownika, MVC stało się jednym z pierwszych podejść do opisywania i implementowania konstrukcji oprogramowania pod kątem ich obowiązków .

Trygve Reenskaug wprowadził MVC do Smalltalk -79 podczas wizyty w Centrum Badawczym Xerox Palo Alto (PARC) w latach siedemdziesiątych. W latach 80. Jim Althoff i inni zaimplementowali wersję MVC dla biblioteki klas Smalltalk-80. Dopiero później artykuł z 1988 r. w The Journal of Object Technology (JOT) wyraził MVC jako ogólną koncepcję.

Wzorzec MVC ewoluował następnie, dając początek takim wariantom, jak hierarchiczny model-widok-kontroler (HMVC), model-widok-adapter (MVA), model-widok-prezenter (MVP), model-widok-model (MVVM), i inne, które dostosowały MVC do różnych kontekstów.

Zastosowanie wzorzec MVC w aplikacjach internetowych eksplodował na popularności po wprowadzeniu NeXT „s WebObjects w 1996 roku, w którym został pierwotnie napisany Objective-C (który pożyczył ciężko od Smalltalk) i pomógł egzekwować zasady MVC. Później wzorzec MVC stał się popularny wśród programistów Java, gdy WebObjects został przeniesiony do Java . Późniejsze frameworki dla Javy, takie jak Spring (wydany w październiku 2002), kontynuowały silną więź pomiędzy Javą i MVC. Wprowadzenie frameworków Django (lipiec 2005, dla Pythona ) i Rails (grudzień 2005, dla Ruby ), z których oba kładły silny nacisk na szybkie wdrażanie, zwiększyło popularność MVC poza tradycyjnym środowiskiem korporacyjnym, w którym od dawna jest popularny.

Użyj w aplikacjach internetowych

Chociaż pierwotnie opracowany dla komputerów stacjonarnych, MVC został powszechnie przyjęty jako projekt aplikacji WWW w głównych językach programowania . Utworzono kilka frameworków internetowych, które wymuszają ten wzorzec. Te struktury oprogramowania różnią się interpretacją, głównie pod względem podziału obowiązków MVC między klienta i serwer .

Niektóre frameworki webowe MVC przyjmują podejście cienkiego klienta, które umieszcza prawie cały model, widok i logikę kontrolera na serwerze. W tym podejściu klient wysyła do kontrolera żądania hiperłączy lub formularze, a następnie otrzymuje kompletną i zaktualizowaną stronę internetową (lub inny dokument) z widoku; model istnieje w całości na serwerze.

Zobacz też

Bibliografia

Bibliografia