Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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é

12,274 views

Published on

  • Be the first to comment

  • Be the first to like this

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? 

×