c omposite application guidance for wpf
DESCRIPTION
Level: 400. C omposite Application Guidance For WPF. Ivan Pavlovi ć MCSD, MCDBA, MCT, MVP For Visual C# Hive Studios [email protected]. Sadržaj. Modularne aplikacije Neke specifičnosti Dizajn Modularnost, kompozicija UI-a, MVP i MVC Tehnički koncepti i duga šetnja kroz kod - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/1.jpg)
Composite Application GuidanceFor WPF
Ivan PavlovićMCSD, MCDBA, MCT, MVP For Visual C#
Hive [email protected]
Level: 400
![Page 2: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/2.jpg)
Sadržaj
• Modularne aplikacije– Neke specifičnosti
• Dizajn– Modularnost, kompozicija UI-a, MVP i MVC
• Tehnički koncepti i duga šetnja kroz kod– Bootstrapper, kontejneri, moduli, regioni, shell &
view, komande, dogadjaji, komunikacija ....
![Page 3: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/3.jpg)
Razvoj velikih klijentskih aplikacija
• Problemi– Sinhronizacija članova tima (ili timova)– Dizajniranje sistema za lako menjanje– Odvajanje grafičkog dizajna– Organizovanje testiranja
• Odgovori1. Monolitna aplikacija2. Niz nezavisnih aplikacija3. Kompozitna (modularna) aplikacija
![Page 4: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/4.jpg)
Ciljevi i principi
• Zamenljivost delova• Lako učenje• Proširivost• Kompatibilnost• Jednostavnost
• Proveriv delovi• Performanse• Opterećenje• Nadgradnja
![Page 5: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/5.jpg)
Recept za kompozitnu aplikaciju
• Potrebni sastojci– Jedna monolitna aplikacija ili okvirni zahtevi za novu
(veliku) desktop aplikaciju– Razvojno okruženje (C# Express je OK)– Jedna dobra implementacija module Loadera– UnityContainer ili Windsor da uvežu masu– Aplikacija će ispasti mnogo ukusnija ukoliko se na početku
sprema polako a kasnije brže– Servirati vruće, najbolje dok se još puši
![Page 6: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/6.jpg)
Komponenete CAG-a
Shell PresenterRegion
View(s) Presenter
Model
Serv
ice/
Dep
enda
ncy
Inje
ction
Con
tain
erShell
Host Application (entry point)
ModuleEnumerator
Module Loader
RegionManager
Logging
EventAggregator
Loader
Core
Modules Module Proffered Services
![Page 7: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/7.jpg)
Bootstrapper – PokretanjeKonfiguriši kontejner
Konfiguriši mapiranje regiona
Učitaj module
Kreiraj Shell
Inicijalizuj module
![Page 8: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/8.jpg)
Core Services• IModuleEnumerator
– Directory, Config File
• IModuleLoader– Instancira implementacije interfejsa Imodule– Statičko i on-deman učitavanje
• IRegionManager– Veza sa Shellom
• IEventAggregator– Razmena poruka između nevezanih delova aplikacije
• LoggerFacade• ContainerFacade
![Page 9: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/9.jpg)
Code Dive
Boot Process
![Page 10: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/10.jpg)
Shell
• Glavni prozor aplikacije, može da ih bude više• Sadrži regione u koje moduli mog da dodaju
view-ove (WPF kontrole)• Definiše raspored glavnih delova
– Navigacija, sadržaj, status bar....
![Page 11: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/11.jpg)
Regioni
Order 1Order 2Order 3Order 4
.....
Item QTY Cost
NavigationRegion Main Content Window
Order Details
SHELL
Item QTY CostItem QTY Cost
Views
![Page 12: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/12.jpg)
Code Dive
Pravljenje Shell-aMarkiranje regionaUpotreba regiona
Kako se prikazuju view-ovi
![Page 13: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/13.jpg)
Moduli
Predstavljaju logičke celine u koje su upakovane forme, kontrole, servisi, resursi, definicije modela i/ili
prezentaciona logika
• IModule• Međuzavisnosti (ModuleDependencyAttribute)• ModuleInfo i meta podaci• Registracija tipova
![Page 14: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/14.jpg)
Prezentacioni obrasci
• Presentation Model
• Supervising Controller
View(1…n) PresentationModel Model
View (1…n) Presenter
Model
Method Calls2-way binding
Property Access
Data Binding
![Page 15: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/15.jpg)
Komunikacija među modulima
Moduli u principu ne smeju da direktno zavise od drugih modula istog nivoa (DependsOn)
Security Module Logging Module
Staff Management PoS Module
Common Interfaces
![Page 16: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/16.jpg)
Code Dive
Struktura modulaUčitavanje i inicijalizacija
![Page 17: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/17.jpg)
EventAggregator
• Obezbeđuje notifikaciju o dogadjajima i razmeniu informacija između slabo ili nepovezanih vezanih modula
• Multi Publisher/Multi Subscriber• CompositeWpfEvent<T> obezbeđuje type safety tokom
kompajliranja
Publisher
PublisherSubscriber
Subscriber
Subscriber
Subscriber
IEventAggregator
CompositeWpfEvent
CompositeWpfEvent
![Page 18: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/18.jpg)
Code Dive
Definisanje dogadjajaPretplaćivanje na dogadjaj
Obrada dogadjaja
![Page 19: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/19.jpg)
Commands
• Obezbeđuju obradu akcija korisnika na UI-u• Vezane su za kontrole• DelegateCommand obezbeđuje delegiranje
obrade događaja van code-behind klase
![Page 20: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/20.jpg)
Code Dive
Definisanje komandiBinding
Izvršavanje komande
![Page 21: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/21.jpg)
Šta smo videli?
Shell PresenterRegion
View(s) Presenter
Model Serv
ice/
Dep
enda
ncy
Inje
ction
Con
tain
er
Shell
Host Application (entry point)
ModuleEnumerator
Module Loader
RegionManager
Logging
EventAggregator
Loader
Core
Modules Module Proffered Services
![Page 22: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/22.jpg)
Reference
• ČlanciGetting Up and Running with the Composite UI Application Block for WPFComposite Application Guidance for WPF Tour
• Komponente (Open Source)Composite Application Guidance for WPFCodeplex sajt
![Page 23: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/23.jpg)
Druženje, forum, blogovi.
Mesto okupljanja za sve Windows, .NET i
SQL Server fanove.
Priključi se na msforge.net !!!Microsoft Forge zajednica i User Grupa
![Page 24: C omposite Application Guidance For WPF](https://reader035.vdocuments.net/reader035/viewer/2022062217/56814cb3550346895db9bbdb/html5/thumbnails/24.jpg)
Submit a session feedback form, within 2 hours of the session ending, and you can win a
special prize!
Thank you