Model View ViewModel
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:
- Modell: A felhasználó számára megjelenített és általa manipulált tartalom adatelérési rétege . Ehhez értesíti Önt az adatok változásáról és érvényesíti a felhasználó által továbbított adatokat. Ez magában foglalja a teljes üzleti logikát, és különálló egységellenőrzésekkel ellenőrizhető.
- 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.
- Windows Presentation Foundation
- Knockout.js - MVVM a JavaScript-ben
- Vue.js
- JavaFX
- SwiftUI
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
- Visual C # 2012: Az MVVM minta - könyvfejezet a Rheinwerk Verlag-ban
- Eder Norbert: Model-View-ViewModel A sorozat - kódpélda
- NuGet csomagok az MVVM keretrendszerekhez
Egyéni bizonyíték
- ↑ Prezentációs modell
- ↑ Kötőanyag-meghatározás a ZK keretrendszerből
- ↑ Android adatkötési útmutató (angol)
- ^ John Gossman: Mesék az intelligens klienstől: Az MV-VM előnyei és hátrányai. . Letöltve: 2012. május 28.