MVC vs MVVM – różnica między nimi
Kluczowe różnice między MVC i MVVM
- Framework MVC to wzorzec architektoniczny, który dzieli aplikację na trzy główne komponenty logiczne: Model, Widok i Kontroler. Z drugiej strony MVVM ułatwia rozdzielenie rozwoju graficznego interfejsu użytkownika za pomocą języka znaczników lub kodu GUI
- W MVC kontroler jest punktem wejścia do aplikacji, natomiast w MVVM widok jest punktem wejścia do aplikacji.
- Komponent modelu MVC można testować niezależnie od użytkownika, podczas gdy MVVM można łatwo testować w oddzielnych jednostkach, a kod jest sterowany zdarzeniami.
- Architektura MVC ustanawia relację „jeden do wielu” pomiędzy kontrolerem a widokiem, podczas gdy architektura MVVM definiuje relację „jeden do wielu” pomiędzy widokiem a modelem widoku.
Co to jest MVC?
Kurs Ramy MVC jest wzorcem architektonicznym, który dzieli aplikacje na trzy główne komponenty logiczne: Model, View i Controller. Stąd skrót MVC. Pełna forma MVC to Model View Controller.
W tej architekturze komponent jest budowany w celu obsługi określonych aspektów rozwoju aplikacji. MVC oddziela od siebie logikę biznesową i warstwę prezentacji. Ten wzorzec architektoniczny jest używany głównie w graficznych interfejsach użytkownika (GUI) na komputerach stacjonarnych.
Co to jest MVVM?
Architektura MVVM ułatwia rozdzielenie rozwoju graficznego interfejsu użytkownika za pomocą języka znaczników lub kodu GUI. Pełna forma MVVM to Model–View–ViewModel.
Model widoku MVVM jest konwerterem wartości, co oznacza, że to model widoku jest odpowiedzialny za eksponowanie obiektów danych z Modelu w taki sposób, aby obiekty były łatwo zarządzane i prezentowane.
Wzór MVC
Trzy ważne komponenty MVC to:
- Model: Zawiera wszystkie dane i związaną z nimi logikę.
- Widok: Prezentuje dane użytkownikowi lub obsługuje interakcję z użytkownikiem.
- Kontroler: Interfejs pomiędzy komponentami Modelu i Widoku.
Przyjrzyjmy się szczegółowo każdemu z tych komponentów:
Model
Komponent modelu przechowuje dane i powiązaną logikę. Reprezentuje dane przesyłane pomiędzy komponentami kontrolera lub dowolną inną powiązaną logiką biznesową.
Na przykład obiekt Controller pomaga w pobraniu informacji o kliencie z bazy danych. Manipuluje danymi i wysyła je z powrotem do bazy danych lub wykorzystuje do renderowania tych samych danych.
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 mógł przesłać dane wyjściowe użytkownikowi.
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. zapisania 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).
Wzór MVVM
Oto wzór dla MVVM:
Architektura MVVM oferuje dwukierunkowe wiązanie danych między widokiem a modelem widoku. Pomaga również zautomatyzować propagację modyfikacji wewnątrz modelu widoku do widoku. Model widoku wykorzystuje wzorzec obserwatora do wprowadzania zmian w modelu widoku.
Przyjrzyjmy się szczegółowo temu komponentowi:
Model
Model 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 uczniach ze szkolnej bazy danych. Manipuluje danymi i wysyła je z powrotem do bazy danych lub wykorzystuje do renderowania tych samych danych.
Zobacz
Widok oznacza komponenty interfejsu użytkownika, takie jak HTML, CSS, jQuery itp.
widok wzorca jest odpowiedzialny za wyświetlanie danych, które są otrzymywane od Kontrolera jako wynik. Ten widok jest również przekształcany w Model(e) w Interfejs Użytkownika (UI).
Zobacz model
Model widoku jest odpowiedzialny za prezentowanie funkcji, poleceń, metod, aby wspierać stan widoku. Jest również odpowiedzialny za obsługę modelu i aktywowanie zdarzeń w widoku.
Różnica między MVC i MVVM Architektura
Oto ważna różnica między MVVM i MVC
MVC (kontroler widoku modelu) | MVVM (widok modelu ViewModel) |
---|---|
Kontroler jest punktem wejścia do Aplikacji. | Widok jest punktem wejścia do Aplikacji. |
Relacja jedna do wielu pomiędzy kontrolerem i widokiem. | Relacje jeden do wielu pomiędzy widokiem a modelem widoku. |
Widok Nie ma odniesienia do kontrolera | Widok zawiera odniesienia do modelu widoku. |
MVC to stary model | MVVM jest stosunkowo nowym modelem. |
Trudny do odczytania, zmiany, przeprowadzenia testu jednostkowego i ponownego wykorzystania tego modelu | Proces debugowania będzie skomplikowany, gdy mamy do czynienia ze złożonymi powiązaniami danych. |
Komponent modelu MVC można testować niezależnie od użytkownika | Łatwe do oddzielnych testów jednostkowych, a kod jest sterowany zdarzeniami. |
Cechy MVC
Oto ważne cechy MVC:
- Łatwe i bezproblemowe testowanie. Wysoce testowalna, rozszerzalna i podłączana platforma
- Możesz także wykorzystać istniejące funkcje oferowane przez ASP.NET, Django, JSP itp.
- Oferuje pełną kontrolę nad kodem HTML i adresami URL.
- Obsługuje rozwój oparty na testach (TDD)
- Ta architektura zapewnia rozdzielenie logiki
- Umożliwia routing dla adresów URL przyjaznych SEO.
- Oferuje mapowanie zrozumiałych i możliwych do przeszukiwania adresów URL.
Funkcje MVVM
Oto cechy architektury MVVM:
- MVVM jest napisany dla aplikacji desktopowej z możliwością wiązania danych – XAML i interfejs INotifyPropertyChanged
- Jeśli chcesz dokonać modyfikacji w modelu widoku, model widoku używa wzorca obserwatora.
- Wzorzec MVVM jest najczęściej używany przez WPF, Silverlight, nRoute itp.
Zalety MVC
Oto zalety/zalety MVC
- Łatwiejsza obsługa nowego typu klientów
- Rozwój różnych komponentów może odbywać się równolegle.
- Unika złożoności poprzez podzielenie aplikacji na oddzielne jednostki (MVC)
- Używa tylko wzorca kontrolera frontowego, który przetwarza żądania aplikacji internetowych przy użyciu jednego kontrolera.
- Oferuje najlepsze wsparcie dla rozwoju opartego na testach
- Działa dobrze w przypadku aplikacji internetowych, które są obsługiwane przez duże zespoły projektantów i programistów stron internetowych.
- Zapewnia czyste oddzielenie problemów (SoC).
- Wszystkie klasy i obiekty są od siebie niezależne, dzięki czemu można je testować oddzielnie.
- MVC umożliwia logiczne grupowanie powiązanych działań na kontrolerze.
Zalety MVVM
Oto zalety/zalety MVVM
- Logika biznesowa jest oddzielona od Ul
- Łatwy w utrzymaniu i testowaniu
- Łatwe do ponownego użycia komponenty
- Luźno powiązana architektura: MVVM sprawia, że architektura Twojej aplikacji jest luźno powiązana.
- Możesz pisać przypadki testów jednostkowych zarówno dla modelu widoku, jak i warstwy modelu, bez konieczności odwoływania się do widoku.
Wady MVC
Oto wady/wady MVC
- Logika biznesowa miesza się z Ul
- Trudne do ponownego użycia i wdrożenia testów
- 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.
Wady MVVM
Oto wady/wady MVVM
- Utrzymanie dużej liczby kodów w kontrolerze
- Niektórzy uważają, że w przypadku prostych interfejsów użytkownika architektura MVVM może być przesadą.
- Nie zapewnia ścisłego połączenia pomiędzy widokiem i modelem widoku