c omposite application guidance for wpf

24
Composite Application Guidance For WPF Ivan Pavlović MCSD, MCDBA, MCT, MVP For Visual C# Hive Studios [email protected] Level: 400

Upload: lindsey

Post on 18-Jan-2016

58 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: C omposite  Application Guidance For WPF

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

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

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

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

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

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

Bootstrapper – PokretanjeKonfiguriši kontejner

Konfiguriši mapiranje regiona

Učitaj module

Kreiraj Shell

Inicijalizuj module

Page 8: C omposite  Application Guidance For WPF

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

Code Dive

Boot Process

Page 10: C omposite  Application Guidance For WPF

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

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

Code Dive

Pravljenje Shell-aMarkiranje regionaUpotreba regiona

Kako se prikazuju view-ovi

Page 13: C omposite  Application Guidance For WPF

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

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

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

Code Dive

Struktura modulaUčitavanje i inicijalizacija

Page 17: C omposite  Application Guidance For WPF

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

Code Dive

Definisanje dogadjajaPretplaćivanje na dogadjaj

Obrada dogadjaja

Page 19: C omposite  Application Guidance For WPF

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

Code Dive

Definisanje komandiBinding

Izvršavanje komande

Page 21: C omposite  Application Guidance For WPF

Š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

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

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

Submit a session feedback form, within 2 hours of the session ending, and you can win a

special prize!

Thank you