1. Microsoft patterns & practicesPRISM Realizarea de aplicatii composite folosind Sebastian Negomireanu
2. Ceeste Prism? Un set de regulisipractici Colectie de design patterns O implementare “referinta”, cepoate fi usormodificata Un set de exemple “hands-on”
15. Bootstrapper Clasaresponsabila cu initializarea PRISM: Seteaza Shell-ulcaRootVisual Inregistreaza in containerul DI toateserviciile/elementelecomuneintregiiaplicatii Incarcamodulelesauspecifcastrategia de incarcare Specificaalteinformatiinecesarerulariiaplicatiei (logging, framework exceptions, region adapters etc.)
16. Dependency Injection Design pattern care ajuta la: Reducereadependintelordintreobiecteindependente Ajuta la gestiunea lifetime-uluiobiectelorintr-un mod centralizat (per-instance, singleton etc.) IoC/DI Consumer Resolve Register ServiceA Constructor(IService service) IService ServiceB
18. Shell Reprezinta “baza” aplicatiei In mod normal continedoarregiuni Functioneazaca un container pentru UI Regiunilesuntcontinute in containere: ItemsControl TabControl Noicontainere pot fi adaugateprinimplementarea de adaptere (ex. GridView)
26. MVVM Model View ViewModel Services INotifyCollectionChanged INotifyPropertyChanged Interaction View ViewModel Model Notifications Data binding Commands Business Logic Presentation Logic UI (XAML) UI Logic (code behind)
27. View Element vizual (Window, Page, control, data template etc.) NU are nici un fel de business logic implementat In general reactiv (prin data binding) AcceseazaViewModelprinintermediulDataContext Poateavealogica, darlimitata la UI (ex. declansareanimatii, behaviors etc.) Intotdeaunaruleazapethreadul UI-ului
28. ViewModel E o clasa non-vizuala Incapsuleazalogica de prezentaresidatelepentru view Expuneproprietatipentru data binding (intotdeaunapetheadul UI-ului) Extindemodelul cu proprietatisimetodespecificelayerului de prezentare Nu are referinta la View si nu are informatiidespreimplementareaspecifica a View-ului Poate fi folosit in comun de view-uridiferite De obiceiimplementeazaINotifyPropertyChangedsi/sauINotifyCollection Changed pentru a suporta data-binding PoateimplementaIDataErrorInfo/INotifyDataErrorInfopentruvalidare
29. Model Clase non-vizuale care incapsuleaza business-logic-ul Nu au referinta la View sauViewModelsi nu depind de detaliile de implementare De obiceiimplementeazaINotifyPropertyChangedsi/sauINotifyCollection Changed pentru a suportadata-binding siIDataErrorInfo/INotifyDataErrorInfopentruvalidare De obicei se folosescimpreuna cu un serviciusau repository pentrupersistenta, acces la date si caching
30. Procesul de creare al aplicatiilor Creareproiect Shell Definireregiuni Shell Creare M/V/VM Creare M/V/VM Crearemodulaplicatie Crearemodulaplicatie CreareServicii CreareServicii CreareBootstrapper Crearemodulinfrastructura Definirecomenzi comune Definireevenimentecomune Definirealtetipuri / helperecomune
31. Definirea Shell-ului View top-level Container marcatcaregiune (cu nume) Elementevizualeglobale (meniuri, toolbar-uri etc.) View-urile pot fi compuse din alte view-uri View-urile pot continealteregiuni
35. Concluzie PRISM defineste un set de practicisi patterns care ajuta la dezvoltareaaplicatiilor composite Aplicatiile se bazeazape un element central + module (plugins) Modulele pot fi incarcate on demand sauimperativ Modulelelucreaza independent Existamecanismedecuplate care asigura Integrareaelementelor de UI ale modulelor (Region Manager) Comunicareaintre module (Event Aggregator) Declansarea de actiuniintr-un mod generic (Commanding) Notificariindependente de UI (Interaction) Inregistrare/descoperiretipuri (IoC/DI) Separareintre UI (Views), prezentare (ViewModels), logica/domain objects (Models), procese business (Services)