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
Composite Application GuidanceFor WPF
Ivan PavlovićMCSD, MCDBA, MCT, MVP For Visual C#
Hive [email protected]
Level: 400
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 ....
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
Ciljevi i principi
• Zamenljivost delova• Lako učenje• Proširivost• Kompatibilnost• Jednostavnost
• Proveriv delovi• Performanse• Opterećenje• Nadgradnja
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
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
Bootstrapper – PokretanjeKonfiguriši kontejner
Konfiguriši mapiranje regiona
Učitaj module
Kreiraj Shell
Inicijalizuj module
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
Code Dive
Boot Process
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....
Regioni
Order 1Order 2Order 3Order 4
.....
Item QTY Cost
NavigationRegion Main Content Window
Order Details
SHELL
Item QTY CostItem QTY Cost
Views
Code Dive
Pravljenje Shell-aMarkiranje regionaUpotreba regiona
Kako se prikazuju view-ovi
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
Prezentacioni obrasci
• Presentation Model
• Supervising Controller
View(1…n) PresentationModel Model
View (1…n) Presenter
Model
Method Calls2-way binding
Property Access
Data Binding
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
Code Dive
Struktura modulaUčitavanje i inicijalizacija
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
Code Dive
Definisanje dogadjajaPretplaćivanje na dogadjaj
Obrada dogadjaja
Commands
• Obezbeđuju obradu akcija korisnika na UI-u• Vezane su za kontrole• DelegateCommand obezbeđuje delegiranje
obrade događaja van code-behind klase
Code Dive
Definisanje komandiBinding
Izvršavanje komande
Š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
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
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
Submit a session feedback form, within 2 hours of the session ending, and you can win a
special prize!
Thank you