Model View ViewModel

Image
MVVM koncepció: Az adatkötés lehetővé teszi a nézet (pl. XAML jelölés vagy HTML) és a modell szétválasztását a megjelenítéshez.

A Model View ViewModel ( MVVM ) egy tervezési minta és a Model-View-Controller minta (MVC) változata. A felhasználói felület (UI) reprezentációjának és logikájának elválasztására szolgál . Olyan modern felhasználói felületeket céloz meg, mint a Cocoa , a Windows Presentation Foundation (WPF), a JavaFX és a HTML5, mivel adatkötési mechanizmusra van szükség. Az MVC mintához képest javítható a tesztelhetőség és csökkenthető a megvalósítási erőfeszítés, mivel nincs szükség külön vezérlőpéldányokra . Az MVVM lehetővé teszi az UI-tervezők és a fejlesztők szerepének szétválasztását, ami azt jelenti, hogy az alkalmazási rétegeket különböző munkacsoportok fejleszthetik. A tervezők a felhasználói élményre összpontosíthatnak, a fejlesztők pedig megírhatják a felhasználói felületet és az üzleti logikát .

történelem

Az MVVM-et 2005-ben a Microsoft MVP John Gossman adta ki. Ez a Martin Fowler bemutatómodelljének specializációja, és azonos azzal, hogy mindkét minta külön nézett felhasználói felületbe (bemutató vagy nézetmodellbe) mozgatja a nézet állapotát és viselkedését. A bemutató modell azonban lehetővé teszi a nézet létrehozását a felhasználói felület platformjától függetlenül, míg az MVVM eredetileg a felhasználói felületeket célozza meg a WPF használatával. Most azonban más területeken is használják, hasonlóan az MVC-hez.

leírás

Az MVVM a modell és a nézet MVC mintázatának funkcionális elválasztását használja . Adatkötési mechanizmust alkalmaznak az alkatrészek közötti laza kapcsolás elérésére . Az MVVM mintának a következő három összetevője van:

  • Nézet: A grafikus felhasználói felület ( GUI ) által megjelenített összes elem. A ViewModel tulajdonságaihoz kötődik a tartalom megjelenítése és kezelése, valamint a felhasználói adatok továbbítása érdekében. Az adatkötés miatt a nézet könnyen kicserélhető, és a kód-lemaradása minimális.
  • ViewModel: A felhasználói felület logikáját (a nézet modelljét) tartalmazza, és összekapcsolásként szolgál a nézet és a fenti modell között. Egyrészt információt cserél a modellel, azaz módszereket vagy szolgáltatásokat hív fel . Másrészt a nézetet nyilvános tulajdonságokkal és parancsokkal látja el . Ezeket a nézet vezérlőkhöz köti, hogy tartalmat jelenítsen meg, vagy továbbítsa a felhasználói felület eseményeit. A ViewModel nem rendelkezhet semmilyen tudással a nézetről.

Az MVVM mintázat technológia-specifikusnak nevezhető, mivel a View és a ViewModel összekapcsolásához adatkötési mechanizmusra van szükség. Ezt az infrastruktúrát gyakran kötőanyagnak nevezik . Részletesen, ez a megfigyelő minta kétirányú használata . A kötőanyag , amely deklaratív információk alapján képes adatkötést létrehozni, elérhető a különböző technológiákhoz.

.NET és JavaFX

A WPF és a Silverlight szempontjából az MVVM azt jelenti, hogy a nézet pusztán deklaratív XAML jelölésből áll. Felhasználói felület-tervezők megtervezhetik például az Expression Blend használatával , amelynek során csak a ViewModelhez szükséges adatkapcsolatokat kell létrehozni, de kód nélkül. A logika olyan programozási nyelven valósul meg, mint a C # vagy a VB.NET . A jelölés és a kód közötti függőség minimálisra csökken. Ugyanez vonatkozik a JavaFX-re is. Itt a nézet kidolgozható az FXML és például a SceneBuilder segítségével, majd az ingatlan egyirányú vagy kétirányú összekapcsolásával összekapcsolható a ViewModel üzleti logikájával.

JavaScript / HTML

Az MVVM mintát és az ehhez szükséges adatkötési mechanizmust 2010-ben a Microsoft fejlesztője, Steve Sanderson portálolta a JavaScript- be . Az így létrejövő JavaScript könyvtár neve Knockout.js . Az MVVM mintát más JavaScript keretrendszerekben is használják, például B. SzögletesJS . Az MVVM mintázat kliensigényes webalkalmazásokhoz való alkalmazásával a megvalósítási erőfeszítések csökkennek, mivel egyébként a szokásos kézi DOM hozzáféréseket nagymértékben csökkentheti az adatkötés. Az adatkötés leírása szintén deklaratív, mint az XAML alapú Microsoft termékek esetében.

Android

Az MVVM minta és az adatkötés az Android mobilalkalmazások megvalósításakor is használható .

Előnyök és hátrányok

előnyöket

  • Az üzleti logika az ábrázolástól függetlenül szerkeszthető. Az MVVM „örökölte” a nézet könnyebb felcserélhetőségét az MVC mintázatból.
  • A tesztelhetőség javult, mert a ViewModel tartalmazza a felhasználói felület logikáját, és a nézettől függetlenül példányosítható. Ez azt jelenti, hogy nincs szükség felhasználói felület tesztekre. Ehelyett a ViewModel kódalapú modul tesztjei elegendőek .
  • A modell és a nézet közötti ragasztókód mennyiségét csökkenti a vezérlőpéldányok kiküszöbölése az MVC mintához képest.
  • A nézeteket tiszta felhasználói felület-tervezők tervezhetik, míg a fejlesztők a modelleket önállóan valósítják meg.
  • Különböző nézetek hozhatók létre, amelyek mind ugyanahhoz a ViewModelhez vannak kapcsolva, anélkül, hogy változtatni kellene a programozáson.

hátrány

  • A mellékelt kétirányú megfigyelő miatti nagyobb számítási erőfeszítés hátrányként értékelhető.
  • Az általános adatkötési mechanizmus megmenti a különböző vezérlők megvalósítását. Ez a mechanizmus azonban feltétlenül szükséges az MVVM modell megvalósításához.

MVVM keretrendszerek

Az MVVM különféle keretrendszereket valósít meg.

Vannak olyan segédkönyvtárak is, amelyek megkönnyítik a WPF használatát. Ezeket MVVM keretrendszereknek is nevezik. Ebbe beletartozik

  • Prizma
  • Crosslight (az Intersoft Solutions kereskedelmi kerete)
  • MVVM Fény
  • Caliburn.Micro

és sokan mások.

Lásd még

irodalom

  • Raffaele Garofalo: Vállalati alkalmazások építése a Windows Presentation Foundation programmal és a modell nézet nézet modell mintájával , Microsoft Press 2011, ISBN 978-0735650923

web Linkek

Egyéni bizonyíték

  1. Prezentációs modell
  2. Kötőanyag-meghatározás a ZK keretrendszerből
  3. Android adatkötési útmutató (angol)
  4. ^ John Gossman: Mesék az intelligens klienstől: Az MV-VM előnyei és hátrányai. . Letöltve: 2012. május 28.