Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Model –View-ViewModel (MVVM) je vzor návrhu architektury uživatelského rozhraní, který odděluje uživatelské rozhraní a kód bez uživatelského rozhraní. Zjistěte, jak MVVM umožňuje volné párování pomocí datové vazby v XAML k synchronizaci uživatelského rozhraní a dat, zlepšení udržovatelnosti a snížení závislostí.
Vzhledem k tomu, že poskytuje volné spojení, použití datové vazby snižuje pevné závislosti mezi různými druhy kódu. Tento přístup usnadňuje změnu jednotlivých jednotek kódu (metod, tříd, ovládacích prvků atd.), aniž by to způsobilo nežádoucí vedlejší účinky v jiných jednotkách. Toto oddělení je příkladem oddělení obav, což je důležitý koncept v mnoha vzorech návrhu.
Výhody MVVM
Oddělení kódu má mnoho výhod, mezi které patří:
- Povolení iterativního, průzkumného stylu kódování Izolovaná změna je méně riziková a experimentovat s ní je snazší.
- Zjednodušení testování jednotek Můžete testovat jednotky kódu, které jsou izolované od sebe jednotlivě i mimo produkční prostředí.
- Podpora týmové spolupráce Samostatní jednotlivci nebo týmy mohou vyvíjet oddělený kód, který dodržuje dobře navržená rozhraní, a integrovat ho později.
- Zlepšení udržovatelnosti. Oprava chyb v odděleném kódu je méně pravděpodobné, že způsobí regresi v jiném kódu.
Na rozdíl od MVVM aplikace s konvenčnější strukturou "code-behind" obvykle používá datové vazby pouze pro zobrazovací data. Reaguje na vstup uživatele přímým zpracováním událostí vystavených ovládacími prvky. Obslužné rutiny událostí se implementují v souborech kódu (například MainWindow.xaml.cs) a často jsou úzce svázané s ovládacími prvky. Obvykle obsahují kód, který pracuje s uživatelským rozhraním přímo. Tato struktura znesnadňuje nebo znemožňuje nahrazení ovládacího prvku, aniž by bylo nutné aktualizovat kód zpracování událostí. V této architektuře soubory s kódem často hromadí kód, který přímo nesouvisí s uživatelským rozhraním, jako je například kód přístupu k databázi, který se nakonec duplikuje a upravuje pro použití s jinými okny.
Vrstvy aplikací
Při použití vzoru MVVM rozdělte aplikaci do následujících vrstev:
- Vrstva modelu definuje typy, které představují vaše obchodní data. Tato vrstva zahrnuje vše potřebné k modelování domény základní aplikace a často zahrnuje logiku základní aplikace. Tato vrstva je zcela nezávislá na vrstvách zobrazení a modelu zobrazení a často se nachází částečně v cloudu. Vzhledem k plně implementované vrstvě modelu můžete vytvořit více různých klientských aplikací, pokud zvolíte, jako je sada Windows App SDK a webové aplikace, které pracují se stejnými podkladovými daty.
- Vrstva zobrazení definuje uživatelské rozhraní pomocí značek XAML. Značky zahrnují výrazy datových vazeb (například x:Bind), které definují propojení mezi konkrétními komponentami uživatelského rozhraní a různými členy modelu zobrazení a modelu. Soubory kódu za kódem můžete někdy použít jako součást vrstvy zobrazení a obsahovat další kód potřebný k přizpůsobení uživatelského rozhraní nebo manipulaci s uživatelským rozhraním nebo k extrakci dat z argumentů obslužné rutiny událostí před voláním metody view-model, která provádí tuto práci.
- Vrstva modelu zobrazení poskytuje cílové datové vazby pro zobrazení. V mnoha případech model zobrazení zveřejňuje model přímo nebo poskytuje členy, které zabalí konkrétní členy modelu. Model zobrazení může také definovat členy pro sledování dat, která jsou relevantní pro uživatelské rozhraní, ale ne pro model, například pořadí zobrazení seznamu položek. Model zobrazení slouží také jako integrační bod s jinými službami, jako je přístupový kód dat. U jednoduchých projektů nemusíte potřebovat samostatnou vrstvu modelu, ale jenom model zobrazení, který zapouzdřuje všechna potřebná data.
Základní a pokročilé MVVM
Stejně jako u jakéhokoli vzoru návrhu existuje více než jeden způsob implementace MVVM a mnoho různých technik se považuje za součást MVVM. Z tohoto důvodu existuje několik různých architektur MVVM třetích stran podporujících různé platformy založené na XAML, včetně sady Windows App SDK. Tyto architektury však obecně zahrnují více služeb pro implementaci oddělené architektury, což poněkud nejednoznačným způsobem definuje MVVM.
I když sofistikované architektury MVVM můžou být velmi užitečné, zejména pro projekty na podnikové úrovni, obvykle existují náklady spojené s přijetím jakéhokoli konkrétního vzoru nebo techniky a výhody nejsou vždy jasné v závislosti na škálování a velikosti projektu. Naštěstí můžete přijmout pouze ty techniky, které poskytují jasnou a hmatatelnou výhodu, a ignorovat ostatní, dokud je nepotřebujete.
Konkrétně můžete získat spoustu výhod jednoduše pochopením a použitím plného výkonu datové vazby a oddělením logiky aplikace do vrstev popsaných výše. Toho lze dosáhnout pouze pomocí funkcí poskytovaných sadou Windows App SDK a bez použití externích architektur. Konkrétně rozšíření značek {x:Bind} usnadňuje práci s datovou vazbou a poskytuje vyšší výkon než na předchozích platformách XAML, čímž eliminuje potřebu velkého množství často používaného kódu, který byl dříve nutný.
Další pokyny k používání základního, připraveného k použití MVVM najdete v ukázce databáze objednávek zákazníků UWP na GitHubu. Řada dalších ukázek aplikací pro UPW používá také základní architekturu MVVM a ukázka UPW pro Traffic App UWP zahrnuje jak verze kódu, tak verze MVVM s poznámkami popisující převod MVVM.
Viz také
Témata
Hloubková datová vazba
Rozšíření značek {x:Bind}
Ukázky MVVM pro UWP
Ukázka databáze objednávek zákazníků
Ukázka inventáře VanArsdel
Ukázka aplikace pro dopravu
Windows developer