XAML.cz Magazín moderních technologií založených na XAML

MIX10 a MVVM framework

Napsáno pro Silverlight od Jarda Jirava  [23.03.2010]

Podle zájmu shlížím jednotlivé přednášky z letošní konference MIX10 a jedna z těch vydařených se jmenovala “Build Your Own MVVM Framework” od Rob Eisenberg. Určitě stojí za pozornost a abych vás maličko nalákal, tady je takové krátké shrnutí.

Co doporučím nejdříve, je stáhnout si nejen samotné video, ale také ukázkové kódy, na kterých Rob celou svoji přednášku demonstroval vytvoření a použití Mini MVVM Frameworku. Pokud ještě stále nevíte, kdo k vám bude promlouvat, je to architekt projektu Caliburn, což je WPF/Silvertligh presentation development framework.

Mini MVVM framework právě vychází z projektu Caliburn a je uzpůsoben tak, aby šel odprezentovat právě za jednu hodinu. I díky tomu se setkáme ve frameworku se způsoby, které bychom si možná normálně odpustili a jsou vhodné pouze pro menší projekty. Některé naopak můžeme směle využít i u rozsáhlejších projektů.

Jak sám Rob v přednášce zmiňuje, samotný framework se vešel do nějakých 500 řádků kódu a já jen dodám, že až na tři třídy (soubory), tak všechny soubory nemají více jak 1kB. Většinou se jedná o deklaraci nebo implementaci jednoduchého rozhraní.

Poslední věc, kterou bych rád zmínil dříve, než se vrhnu do samotného rozboru frameworku je, že pro vyzkoušení budete potřebovat minimálně VS2010RC s doinstalovanou podporou pro Silverlight 4 RC a Silverlight toolkit (použil jsem Silverlight 4 Beta Toolkit).

S čím se tedy můžeme setkat.

Na prvním místě je třeba zdůraznit, že framework upřednostňuje naming convention před konfigurací, takže View a ViewModel musí dodržovat shodné pojmenování. Při konstrukci View je pak z názvu typu odstraněno slovo Model a View je vytvořeno pomocí reflexe. Z toho nám vyplývá, že je upřednostňován tzv. ViewModel first přístup.

Jak už jste jistě z předchozích příspěvků zaznamenali, vývoj pomocí MVVM znamená téměř žádný kód v code behind, toho se drží i tento mini MVVM framework. Zároveň při vývoji nejsou použité behaviors, které je možné využít v případě, že vyvíjíte pro Silverlight.

Co však určitě překvapí, že není použit XAML data binding. To však neznamená, že by data binding nebyl použit vůbec, ale svázání dat pomocí bindingu je provedeno v runtime na základě naming convention.

Obdobně je pak provedeno svázání příkazů ICommand tedy pouze využitím shodného pojmenování elementu v XAML a shodně nazvané metody ve ViewModelu.

Samozřejmě nesmím zapomenout na to, jakým způsobem jsou “vyzývány” jednotlivé View do hry a to pomocí ScreenConductor třídy.

Co ovšem určitě stojí za pozornost je elegance a vtipnost řešení, jak vytvořit async pattern pro zpracování úloh.

Závěrem

Určitě se jedná o jednu z nejlepších přednášek, kterou jsem zatím z MIX10 viděl a jednu z těch hodně povedených, které se věnují tématu Model-View-ViewModel prezentačnímu návrhovému vzoru. Vřele tedy doporučím udělat si tu hodinku čas a přednášku shlédnout.

Komentáře

ukládám komentář, vyčkejte prosím..
  1. Tomáš Pácl

    Souhlas, je to excelentní přednáška. "Conventions over configurations" mě hodně oslovilo a mockrát jsem se zastyděl, proč už "mě tohle už dávno nenapadlo". Eisenbergův Mini Framework dotahuje k dokonalosti ideu "MVVM znamená téměř žádný kód v code behind" až k "Mini MVVM znamená žádný kód v code behind".

    24.03.2010 @ 20:17

@xamlcz

  • RT @jvanrhyn: XAML, It's a bit like olives. Takes a while to get used to. But once you're used to it. It is actually pretty good. <3 XAML
  • RT @moser_christian: WPF Inspector 0.9.7 is released. It supports .NET 3.5 and 4.0 The project is now open source and available on CodeP ...
  • Jeff Handley oznámil vydání WCF RIA Services v.1.0 SP1 RTM http://bit.ly/gOgckn ke stažení na http://bit.ly/gVAXdK
  • jedna výzva pro Brno. Byl někdo z vás na přednášce o RIA v MS Akvárku? Dejte o sobě vědět. Děkuji
  • také jste uvažovali o tom, že zkusíte na projekt použít Caliburn Micro nebo naopak Prism 4? A co tak obojí, šlo by to nebo ne? Již brzy