250 likes | 385 Views
Level: 400. C omposite Application Guidance For WPF. Ivan Pavlovi ć MCSD, MCDBA, MCT, MVP For Visual C# Hive Studios paki@hive-studios.com. Sadržaj. Modularne aplikacije Neke specifičnosti Dizajn Modularnost, kompozicija UI-a, MVP i MVC Tehnički koncepti i duga šetnja kroz kod
E N D
Level: 400 Composite Application GuidanceFor WPF Ivan Pavlović MCSD, MCDBA, MCT, MVP For Visual C# Hive Studios paki@hive-studios.com
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 • Odgovori • Monolitna aplikacija • Niz nezavisnih aplikacija • Kompozitna (modularna) aplikacija
Ciljeviiprincipi • 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 Host Application (entry point) Service/Dependancy Injection Container Loader ModuleEnumerator Shell Shell Presenter Module Loader Region Core RegionManager View(s) Presenter Logging EventAggregator Model Module Proffered Services Modules
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 SHELL Navigation Region Main Content Window Order 1 Order 2 Order 3 Order 4 ..... Order Details Item QTY Cost Item QTY Cost Item QTY Cost Views
Code Dive Pravljenje Shell-a Markiranje regiona Upotreba 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 metapodaci • Registracija tipova
Prezentacioniobrasci • Presentation Model • Supervising Controller View(1…n) Presentation Model Model Method Calls 2-way binding Property Access View (1…n) Presenter Data Binding Model
Komunikacija među modulima Moduli u principu ne smejudadirektnozaviseoddrugihmodulaistognivoa (DependsOn) Staff Management PoS Module Common Interfaces Security Module Logging Module
Code Dive Struktura modula Uč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 Subscriber Publisher IEventAggregator Subscriber CompositeWpfEvent Subscriber CompositeWpfEvent Publisher Subscriber
Code Dive Definisanje dogadjaja Pretplać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 komandi Binding Izvršavanje komande
Šta smo videli? Host Application (entry point) Service/Dependancy Injection Container Loader ModuleEnumerator Shell Shell Presenter Module Loader Region Core RegionManager View(s) Presenter Logging EventAggregator Model Module Proffered Services Modules
Reference • Članci Getting Up and Running with the Composite UI Application Block for WPF Composite Application Guidance for WPF Tour • Komponente (Open Source) Composite Application Guidance for WPF Codeplex sajt
Priključi se na msforge.net !!!Microsoft Forge zajednicai User Grupa Druženje, forum, blogovi. Mesto okupljanja za sve Windows, .NET iSQL Server fanove.
Submit a session feedback form, within 2 hours of the session ending, and you can win a special prize! Thank you