Your SlideShare is downloading. ×
0
VÝVOJ WP 7.X APLIKACÍ PROPOKROČILÉRené Steinhttp://blog.renestein.nethttp://www.twitter.com/renestein
WP7 MVVM a další radosti Vícevrstvá aplikace Místo MVVM vzoru ve vícevrstvé aplikaci Máme jen jednu hodinu, měli byste ...
MVVM za 21 sekund !!! Pocta uživatelskéjednoduchosti a rychlostiWP7
Jeden z možných životníchcyklů aplikace ve WP7(Mango) Spuštění aplikace (Launching) Aplikace běží Aplikace je dočasně u...
Hlavní problémy„tombstoningu“ Je třeba z hlediska uživatele nepozorovaně  uložit a obnovit tranzientní stav a nedělá to  ...
Hlavní problémy„tombstoningu“ II Když vám uložení tranzientního stavu trvá  dlouho, dojde k vyvolání výjimky  ThreadAbort...
Rozhraní podporovaná(volitelně!) view modelem Důležitá rozhraní   IInitialize – inicializace view modelu   Rozhraní IAc...
(Volitelné) bázové třídy proview modely PropertyNotificationBase - INotifyPropertyChanged se mi nechce reimplementovat v ...
(Volitelné) bázové třídy proview modely ||
(Volitelné) bázové třídy proview modelypublic abstract class ViewModelBase : PropertyNotificationBase, ITransientStateMana...
Všechna data z VM vtranzientním stavu? Výjimky:
Kdo řídí životní cyklus viewmodelu? Třída PageBase.   Tedy View???public class PageBase : PhoneApplicationPage …Ale nen...
Co musí PageBase zvládnout(přes další pomocné třídy!!) Nalezení view modelu pro view. View model  je pro view DataContext...
Nalezení View modelu proview - IViewModelResolver
PageBase – víte, jaký stavprozatím ignorujeme?
View složené z dalších view? Jedno monolitické view s jedním view modelem není  výhodné. View (PageBase) může obsahoval ...
Používáme našiinfrastrukturu pro viewmodely a view ve WP7 Jednoduchá přihlašovací obrazovka s  přechodem na detail
Co bychom mohli probratdále? Navigace ve WP7 aplikacích Injektování závislostí do view modelů Uložení perzistentního st...
René SteinVývoj aplikací, veřejné a inhousekurzyhttp://www.renestein.net/nabidka.aspxhttp://blog.renestein.nethttp://www.t...
Vývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročilé
Upcoming SlideShare
Loading in...5
×

Vývoj wp 7 aplikací pro pokročilé

11,388

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
11,388
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Vývoj wp 7 aplikací pro pokročilé"

  1. 1. VÝVOJ WP 7.X APLIKACÍ PROPOKROČILÉRené Steinhttp://blog.renestein.nethttp://www.twitter.com/renestein
  2. 2. WP7 MVVM a další radosti Vícevrstvá aplikace Místo MVVM vzoru ve vícevrstvé aplikaci Máme jen jednu hodinu, měli byste znát:  Jak vypadá skeleton aplikace ve WP7  Neplatí, že čím více vrstev, tím lepší aplikace (ani lepší vývojář)  model != data (zásada neplatí v „demo“ říši Microsoftu )  view model != cool záloha struktury doménového modelu  view != hlavní mozek celé aplikace a přilehlého okolí  Základní rozdíly mezi doménovým modelem, aplikačními službami, business službami, infrastrukturními službami
  3. 3. MVVM za 21 sekund !!! Pocta uživatelskéjednoduchosti a rychlostiWP7
  4. 4. Jeden z možných životníchcyklů aplikace ve WP7(Mango) Spuštění aplikace (Launching) Aplikace běží Aplikace je dočasně uspána (stav dormant) Aplikace je „tombstonována“ – je třeba uložit tranzientní stav pro pozdější obnovení (stav tombstoned) Aplikace „detombstonována“ – je třeba nahrát dříve uložený tranzientní stav tak, aby si uživatel nebyl vědom, že aplikace byla uvolněna z paměti. Aplikace běží Ukončení aplikace (Closing) Zlé jazyky by dodaly, že není náhoda, že životní cyklus WP7 aplikace se točí kolem zombie stavů „pohřbena (zaživa)“ a „ uspána“. 
  5. 5. Hlavní problémy„tombstoningu“ Je třeba z hlediska uživatele nepozorovaně uložit a obnovit tranzientní stav a nedělá to samotný OS. Když obnovujete stav z “tombstoningu“, může dojít k opětovnému „tombstoningu“. K tombstonování aplikace může dojít kdykoli a nejste varování. Všechny typy ukládané jako tranzientní stav musí být serializovatelné!
  6. 6. Hlavní problémy„tombstoningu“ II Když vám uložení tranzientního stavu trvá dlouho, dojde k vyvolání výjimky ThreadAbortException. Nemůžete uložit neomezené množství dat do tranzientního stavu. (Může vést) k opakování kódu na všech stránkách (ve view).
  7. 7. Rozhraní podporovaná(volitelně!) view modelem Důležitá rozhraní  IInitialize – inicializace view modelu  Rozhraní IActivated a IDeactivated – reakce na to, jestli se stránka, se kterou je asociován view model, stala aktivní či neaktivní.  ITransientStateManager – uložení a nahrání tranzientního stavu  Proč máme i rozhraní s jedinou metodou? Protože se nám tady „interface-segregation principle “ velmi hodí –SOLID.
  8. 8. (Volitelné) bázové třídy proview modely PropertyNotificationBase - INotifyPropertyChanged se mi nechce reimplementovat v každém view modelu, i když jedna z výchozích šablon ve WP 7 to dělá.
  9. 9. (Volitelné) bázové třídy proview modely ||
  10. 10. (Volitelné) bázové třídy proview modelypublic abstract class ViewModelBase : PropertyNotificationBase, ITransientStateMana ger, IInitialize, IActivated, IDeactivated Centrální správa tranzientního stavu? ANO!DoInternalSaveTransientStateDoInternalLoadTransientStateTransientStateHelper je odpovědný za uložení a obnovení tranzientního stavu. Využití reflexe.
  11. 11. Všechna data z VM vtranzientním stavu? Výjimky:
  12. 12. Kdo řídí životní cyklus viewmodelu? Třída PageBase.  Tedy View???public class PageBase : PhoneApplicationPage …Ale není to nutné, je možné (a lepší) napsat adaptér pro PhoneApplicationPage.
  13. 13. Co musí PageBase zvládnout(přes další pomocné třídy!!) Nalezení view modelu pro view. View model je pro view DataContext. Volání metod z rozhraní IInitialize, IActivate, IDeactivate, ITransientSt ateManager , pokud je view model podporuje Uložení stavu, který ji view model předá. Znáte ViewState z WebForms? To je náš TransientState (pojem ViewState je prý v lepších vývojářských kruzích dnes tabu.)
  14. 14. Nalezení View modelu proview - IViewModelResolver
  15. 15. PageBase – víte, jaký stavprozatím ignorujeme?
  16. 16. View složené z dalších view? Jedno monolitické view s jedním view modelem není výhodné. View (PageBase) může obsahoval vnořená view (UserControl). Ke každému view je dohledán view model, pokud view nemá speciální view model, dostane („zdědí“) view model z„nadřazeného“ view. Počet vnořených view není omezen ani počet zanoření. MainView HeaderView ContentView  Panel1View  Panel2View FooterView
  17. 17. Používáme našiinfrastrukturu pro viewmodely a view ve WP7 Jednoduchá přihlašovací obrazovka s přechodem na detail
  18. 18. Co bychom mohli probratdále? Navigace ve WP7 aplikacích Injektování závislostí do view modelů Uložení perzistentního stavu ve WP7 aplikacích. Stavu, který potřebujeme mezi různými instancemi aplikace.  Rozhraní IUniqueHostKeyReceiver – unikátní id view modelu pro uložení perzistetntního stavu Behaviors ---
  19. 19. René SteinVývoj aplikací, veřejné a inhousekurzyhttp://www.renestein.net/nabidka.aspxhttp://blog.renestein.nethttp://www.twitter.com/renestein DOTAZY? A MOŽNÁ ODPOVĚDI? 
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×