Blog
Blog HelionBlog HelionBlog HelionBlog Helion
  • Artykuły
  • Autorzy
  • Recenzje
  • Konkursy

MVVM — wprowadzenie do wzorca

    Blog.helion.pl Bez kategorii MVVM — wprowadzenie do wzorca
    NastępnyPoprzedni

    MVVM — wprowadzenie do wzorca

    By Jerzy Piechowiak | Bez kategorii, Programowanie | Brak komentarzy | 22 grudnia, 2016 | 2

    W poprzednim wpisie opisywałem architektoniczny wzorzec MVC, tym razem przedstawiam jego dużo młodszego brata, czyli wzorzec MVVM. MVC dobrze funkcjonuje w pewnych określonych obszarach, np. na stronach webowych, ale nie do końca sprawdza się w aplikacjach klienckich z interfejsem graficznym. Niezależnie, czy problem dotyczy programu na PC, smartfon, czy tablet.
    Oczywiście przy odpowiedniej implementacji prawdopodobnie dałoby się zastosować taki wzorzec również tu, ale zamiast tego powstał MVVM, który jest lepiej dopasowany do realiów tego typu wdrożeń.

     

    Historia i idea
    MVVM został ogłoszony w 2005 roku na blogu Johna Gossmana, jednego z architektów pracujących w Microsofcie, który w owym czasie zajmował się WPF i Silverlight. Z założenia MVVM miał rozwiązać kilka standardowych problemów, które można spotkać w technologiach Microsoftu:

    • podziału strony/widoku/okna na XAML i code-behind,
    • separacji warstw, a raczej jej braku,
    • uproszczenia implementacji złożonych interfejsów użytkownika.

     

    W domyślnych wdrożeniach widoki są połączone z logiką i nie były w ogóle reużywalne.

    MVVM rozwiązał powyższe problemy poprzez wprowadzenie architektury składającej się z trzech elementów:

    • modelu (model),
    • widoku (view),
    • viewmodelu (viewmodel).

     

    Pierwsze dwa wyglądają znajomo, choć widok pełni odrobinę inne funkcje niż w przypadku MVC. Tu nowością jest viewmodel, a także mechanizm data binding. Właśnie od tego elementu rozpocznę charakterystykę wzorca.

     

    Data binding
    Pewną bardzo fajną cechą wzorca MVVM jest to, że dane przechowywane przez model są automatycznie odświeżane w widoku, w sytuacji gdy dojdzie do modyfikacji danych po stronie viewmodelu. Wystarczy tylko zaimplementować odpowiedni interfejs po stronie viewmodelu/modelu, a następnie trzymać się pewnych konwencji. Ten mechanizm nazywany jest data binding, a powyższy opis to bardzo duże spłaszczenie obszernego tematu, któremu normalnie można by poświęcić osobny wpis.

     

    Viewmodel
    Centralnym elementem wzorca MVVM jest viewmodel. Można by powiedzieć, że to swego rodzaju odpowiednik controllera z MVC, ale byłoby to stwierdzenie bardzo na wyrost. Poniżej krótka charakterystyka tego elementu:

    • Trzyma referencję do modelu.
    • Wykształca mechanizm komend, które później są wykorzystywane w widoku do obsługi interakcji wywołanych przez użytkownika.
    • Jest „bindowany” jako kontekst danych dla strony/widoku/okna.
    • Powinien poprawnie implementować interfejs INotifyPropertyChanged.

     

    Nie da się ukryć, że jest to swoiste spoiwo w architekturze MVVM.

    W przypadku prostszych wdrożeń bardzo łatwo jest ulec pokusie pominięcia modelu opartego na typach prostych i wtłoczenia go bezpośrednio do viewmodelu.

     

    Model
    Model przechowuje pobrane/przetworzone przez viewmodel dane, które później zostaną „zbindowane” w widoku. Model powinien poprawnie implementować INotifyPropertyChanged i z założenia nie powinien posiadać żadnych elementów logiki biznesowej ani nawiązań do warstwy wizualnej projektu.

     

    View
    Ostatnim elementem całej układanki jest widok. W różnych technologiach Microsoftu nazywa się on inaczej. Czasem jest to po prostu widok, innym razem okno lub strona. Niezależnie od nazwy ten element jest odpowiedzialny za:

    • utworzenie layoutu warstwy wizualnej,
    • obsługę interakcji użytkownika za pomocą dedykowanych kontrolek, do których zostały „zbindowane” komendy utworzone po stronie kontrolera,
    • ustanowienie kontekstu danych, do którego w poprawnej implementacji powinna zostać przypisana instancja viewmodelu,
    • ustawienie za pomocą data binding pól zdefiniowanych w modelu jako właściwości poszczególnych kontrolek.

    Tak utworzona aplikacja zawiera jawną separację warstw. Logika zostaje oddzielona od warstwy prezentacji oraz klas typu DTO. Każdego z tych elementów dużo łatwiej jest reużyć w innym miejscu programu. Ponadto mechanizm data binding rozwiązuje problem odświeżania danych, który przez długi czas był charakterystyczny dla aplikacji okienkowych.

     

    Dziś przed problemami, które rozwiązuje MVVM, stoi branża internetowa, w której to aplikacje również muszą utrzymywać i aktualizować swój stan. Czy MVVM sprawdzi się i w tym przypadku?

     

    Jerzy Piechowiak

    Altcontroldelete.pl

     


    Szukasz informacji o MVVC? Kliknij poniżej:

       

    Jerzy Piechowiak, MVVM, wzorce projektowe
    Avatar

    Jerzy Piechowiak

    Więcej postów od Jerzy Piechowiak

    Podobne posty

    • INotifyPropertyChanged — łatwiejsza implementacja z Fody

      By Jerzy Piechowiak | Brak komentarzy

      W poprzednim wpisie zaprezentowałem przykładowe wdrożenie wzorca MVVM z wykorzystaniem biblioteki MVVM Light. Wspomniana biblioteka upraszcza sporo czynności, m.in. implementację interfejsu INotifyPropertyChanged, który jest kluczowym elementem każdego modelu w technologiach wykorzystujących data binding.

    • Przykładowa implementacja MVVM z MVVM Light w WPF

      By Jerzy Piechowiak | Brak komentarzy

      Choć domyślnie aplikacje WPF piszemy z wykorzystaniem code-behind, to nie ma technologicznych przeciwwskazań do zastosowania w tym przypadku wzorca MVVM, do którego ta technologia jest również częściowo przystosowana. Tak naprawdę największa zmiana musi zajść wCzytaj więcej…

    • Wzorzec projektowy — metoda wytwórcza

      By Jerzy Piechowiak | Brak komentarzy

      Czasem mówi się, że wzorce projektowe uzupełniają braki techniczne w językach programowania. Jeśli spojrzymy na kilka popularnych wzorców, to szybko dostrzeżemy schemat. Wiele z nich krąży wokół szeroko rozumianego polimorfizmu.

    • Wzorzec projektowy singleton

      By Jerzy Piechowiak | Brak komentarzy

      Ze wzorcami projektowymi bywa różnie. Niektóre są bardzo przydatne, inne mniej, a jeszcze inne są pożądane tylko w określonych sytuacjach. Ogólnie bardzo łatwo wpaść w pułapkę nadużycia określonych rozwiązań. Taka sytuacja ma często miejsce wCzytaj więcej…

    • Wzorzec projektowy strategii

      By Jerzy Piechowiak | Brak komentarzy

      Programowanie, wbrew obiegowym opiniom, nie jest aż takie trudne. Wypuszczenie nawet prostych aplikacji mobilnych czy stron nie wymaga dzisiaj dużych nakładów sił. Największym problemem jest napisanie takiego kodu, który będzie łatwo rozszerzalny i będzie miałCzytaj więcej…

    NastępnyPoprzedni

    Znajdź post

    Bądźmy w kontakcie

    Książka dnia

    Amazon Web Services. Podstawy korzystania z chmury AWS

    Autor: Mark Wilkins

    Cena: 44.50 zł 89.00 zł
    (Cena e-booka: 44.50 zł 89.00 zł)

    O 44,5zł taniej!

    kup teraz

    Ostatnie wpisy

    • Błyskawiczny kurs pisania skryptów powłoki
    • Przykładowa aplikacja webowa zaimplementowana w ASP .NET Core
    • Wprowadzenie do .NET Core: instalacja, konfiguracja, pierwsza aplikacja w systemie Linux
    • Grupa Helion zaprasza na szkolenia stacjonarne!
    • Hello World! Czym jest programowanie?

    Tagi

    .net agile altcontroldelete asp.net c# czysty kod debugowanie design patterns e-biznes emarketing Google Google Analytics hacking Jerzy Piechowiak kod kodowanie Krzysztof Marzec książka Maciej Dutko magazyn programista Magdalena Daniłoś marketing MVVM onepress organizacja czasu praca prograista programista programowanie prokrastynacja rafał kocisz reklama rozwój software craftsman SOLID startup techniki programowania testowanie video marketing visual studio WPF wzorce projektowe youtube zarządzanie czasem zarządzanie projektami

    Archiwum

    • lipiec 2017
    • czerwiec 2017
    • maj 2017
    • kwiecień 2017
    • marzec 2017
    • luty 2017
    • styczeń 2017
    • grudzień 2016
    • listopad 2016
    • październik 2016
    • wrzesień 2016
    • lipiec 2016
    • czerwiec 2016
    Blog wydawnictwa
    Informatyka w najlepszym wydaniu
    Strona wydawcy:
    www.helion.pl
    Księgarnia Helion.pl
    Nowości
    Bestsellery
    Promocje
    Bądźmy w kontakcie:
    Chcesz zostać autorem?
    Masz pytania do redakcji?
    Napisz do nas »
    • Artykuły
    • Autorzy
    • Recenzje
    • Konkursy
    Blog Helion