SlideShare une entreprise Scribd logo
1  sur  30
Microsoft patterns & practicesPRISM Realizarea de aplicatii composite folosind Sebastian Negomireanu
Ceeste Prism? Un set de regulisipractici Colectie de design patterns O implementare “referinta”, cepoate fi usormodificata Un set de exemple “hands-on”
Aplicatiipretabile la PRISM ,[object Object],[object Object]
Cu maimulte “ecrane”,[object Object]
Cu maimulte “ecrane”
Interactiunecomplexa (sibogata) cu utilizatorul,[object Object]
Cu maimulte “ecrane”
Interactiunecomplexa (sibogata) cu utilizatorul
Vizualizari multiple de date,[object Object]
Cu maimulte “ecrane”
Interactiunecomplexa (sibogata) cu utilizatorul
Vizualizari multiple de date
Aplicatii cu un timp de viata lung (ani), care trebuiesa se adapteze la modificarineprevazute,[object Object]
Mai clar…
Bootstrapper Clasaresponsabila cu initializarea PRISM: Seteaza Shell-ulcaRootVisual Inregistreaza in containerul DI toateserviciile/elementelecomuneintregiiaplicatii Incarcamodulelesauspecifcastrategia de incarcare Specificaalteinformatiinecesarerulariiaplicatiei (logging, framework exceptions, region adapters etc.)
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
Dependency Injection
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)
Modularitate
Procesul de incarcarea modulelor Module catalog
Partitionare in module
Partitionarepeverticala
Partitionarepeorizontala
Comunicareintre module ModulA Publish Event Aggregator Subscribe ModulB ModulC ModulD
Comunicareintre module ModulA Event Event Aggregator Event Event Event ModulB ModulD ModulC
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)
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
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
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
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

Contenu connexe

En vedette

Bucaramanga ciudad bonita
Bucaramanga ciudad bonitaBucaramanga ciudad bonita
Bucaramanga ciudad bonitaorozcomaria
 
穆巴拉克 下个是谁?
穆巴拉克 下个是谁?穆巴拉克 下个是谁?
穆巴拉克 下个是谁?znfan123qwe
 
Families action programme
Families action programmeFamilies action programme
Families action programmephuxtable
 
Families action programme
Families action programmeFamilies action programme
Families action programmephuxtable
 
Fotos filo
Fotos filoFotos filo
Fotos filoTxell22
 
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...Pieter van der Hijden
 
Staff induction presentation march 2012
Staff induction presentation march 2012Staff induction presentation march 2012
Staff induction presentation march 2012phuxtable
 
Moodle Introduction: Develop Your Own Online Course Today
Moodle Introduction: Develop Your Own Online Course TodayMoodle Introduction: Develop Your Own Online Course Today
Moodle Introduction: Develop Your Own Online Course TodayPieter van der Hijden
 
Leadership Management
Leadership ManagementLeadership Management
Leadership ManagementSCALE
 
The elements of a computer system
The elements of a computer systemThe elements of a computer system
The elements of a computer systemMary Zharina
 
Lucy calkins units_of_study[1] final project
Lucy calkins units_of_study[1] final projectLucy calkins units_of_study[1] final project
Lucy calkins units_of_study[1] final projectshoney82
 
Search Engine Powerpoint
Search Engine PowerpointSearch Engine Powerpoint
Search Engine Powerpoint201014161
 

En vedette (15)

Bucaramanga ciudad bonita
Bucaramanga ciudad bonitaBucaramanga ciudad bonita
Bucaramanga ciudad bonita
 
穆巴拉克 下个是谁?
穆巴拉克 下个是谁?穆巴拉克 下个是谁?
穆巴拉克 下个是谁?
 
Families action programme
Families action programmeFamilies action programme
Families action programme
 
Families action programme
Families action programmeFamilies action programme
Families action programme
 
брошура Hypnotic
брошура Hypnoticброшура Hypnotic
брошура Hypnotic
 
Fotos filo
Fotos filoFotos filo
Fotos filo
 
Presentation1
Presentation1Presentation1
Presentation1
 
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
 
ПРОТОКОЛ № 3-2010-Н-163
ПРОТОКОЛ № 3-2010-Н-163ПРОТОКОЛ № 3-2010-Н-163
ПРОТОКОЛ № 3-2010-Н-163
 
Staff induction presentation march 2012
Staff induction presentation march 2012Staff induction presentation march 2012
Staff induction presentation march 2012
 
Moodle Introduction: Develop Your Own Online Course Today
Moodle Introduction: Develop Your Own Online Course TodayMoodle Introduction: Develop Your Own Online Course Today
Moodle Introduction: Develop Your Own Online Course Today
 
Leadership Management
Leadership ManagementLeadership Management
Leadership Management
 
The elements of a computer system
The elements of a computer systemThe elements of a computer system
The elements of a computer system
 
Lucy calkins units_of_study[1] final project
Lucy calkins units_of_study[1] final projectLucy calkins units_of_study[1] final project
Lucy calkins units_of_study[1] final project
 
Search Engine Powerpoint
Search Engine PowerpointSearch Engine Powerpoint
Search Engine Powerpoint
 

Similaire à Prism

[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2Diana Tataran
 
[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2Diana Tataran
 
Schimbă-ţi lumea cu Qlikview-11martie2010
Schimbă-ţi lumea cu Qlikview-11martie2010Schimbă-ţi lumea cu Qlikview-11martie2010
Schimbă-ţi lumea cu Qlikview-11martie2010Agora Group
 
Impactul economic al saa s asupra unui imm ciobanu emanuela - ap1
Impactul economic al saa s asupra unui imm   ciobanu emanuela - ap1Impactul economic al saa s asupra unui imm   ciobanu emanuela - ap1
Impactul economic al saa s asupra unui imm ciobanu emanuela - ap1silviu_cojocaru
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Codecamp Romania
 
Asp.net mvc bad practices
Asp.net mvc   bad practicesAsp.net mvc   bad practices
Asp.net mvc bad practicesRadu Vunvulea
 
A B C in WordPress. Introducere pentru ONG-uri
A B C in WordPress. Introducere pentru ONG-uriA B C in WordPress. Introducere pentru ONG-uri
A B C in WordPress. Introducere pentru ONG-uriAsociatia Techsoup Romania
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingvabringiton
 
Content Management - Alexandru Lapusan
Content Management - Alexandru LapusanContent Management - Alexandru Lapusan
Content Management - Alexandru LapusanIDG Romania
 
Windows7 Tips&Tricks
Windows7 Tips&TricksWindows7 Tips&Tricks
Windows7 Tips&TricksTudor Galos
 
Noutăţi în ASP.NET MVC 2
Noutăţi în ASP.NET MVC 2Noutăţi în ASP.NET MVC 2
Noutăţi în ASP.NET MVC 2Enea Gabriel
 
Mihai popescu 23feb2012
Mihai popescu 23feb2012Mihai popescu 23feb2012
Mihai popescu 23feb2012Agora Group
 
Tecomm2011 mm powerpoint - ppt
Tecomm2011 mm   powerpoint - pptTecomm2011 mm   powerpoint - ppt
Tecomm2011 mm powerpoint - pptLaurentiu Marian
 
Studiu de caz SUPER in compania BitDefender
Studiu de caz SUPER in compania BitDefenderStudiu de caz SUPER in compania BitDefender
Studiu de caz SUPER in compania BitDefenderAND-UAIC
 
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...Sabin Buraga
 
Web Storage Performance
Web Storage PerformanceWeb Storage Performance
Web Storage PerformanceMihai Valache
 

Similaire à Prism (20)

MOBILI-AR.pptx
MOBILI-AR.pptxMOBILI-AR.pptx
MOBILI-AR.pptx
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
 
[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2
 
Schimbă-ţi lumea cu Qlikview-11martie2010
Schimbă-ţi lumea cu Qlikview-11martie2010Schimbă-ţi lumea cu Qlikview-11martie2010
Schimbă-ţi lumea cu Qlikview-11martie2010
 
Impactul economic al saa s asupra unui imm ciobanu emanuela - ap1
Impactul economic al saa s asupra unui imm   ciobanu emanuela - ap1Impactul economic al saa s asupra unui imm   ciobanu emanuela - ap1
Impactul economic al saa s asupra unui imm ciobanu emanuela - ap1
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
 
Asp.net mvc bad practices
Asp.net mvc   bad practicesAsp.net mvc   bad practices
Asp.net mvc bad practices
 
ERP_Socrate-Cloud
ERP_Socrate-CloudERP_Socrate-Cloud
ERP_Socrate-Cloud
 
A B C in WordPress. Introducere pentru ONG-uri
A B C in WordPress. Introducere pentru ONG-uriA B C in WordPress. Introducere pentru ONG-uri
A B C in WordPress. Introducere pentru ONG-uri
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingva
 
Content Management - Alexandru Lapusan
Content Management - Alexandru LapusanContent Management - Alexandru Lapusan
Content Management - Alexandru Lapusan
 
Windows7 Tips&Tricks
Windows7 Tips&TricksWindows7 Tips&Tricks
Windows7 Tips&Tricks
 
Noutăţi în ASP.NET MVC 2
Noutăţi în ASP.NET MVC 2Noutăţi în ASP.NET MVC 2
Noutăţi în ASP.NET MVC 2
 
Mihai popescu 23feb2012
Mihai popescu 23feb2012Mihai popescu 23feb2012
Mihai popescu 23feb2012
 
Tecomm2011 mm powerpoint - ppt
Tecomm2011 mm   powerpoint - pptTecomm2011 mm   powerpoint - ppt
Tecomm2011 mm powerpoint - ppt
 
Studiu de caz SUPER in compania BitDefender
Studiu de caz SUPER in compania BitDefenderStudiu de caz SUPER in compania BitDefender
Studiu de caz SUPER in compania BitDefender
 
Webappdev
WebappdevWebappdev
Webappdev
 
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
 
Microsoft zitec
Microsoft  zitecMicrosoft  zitec
Microsoft zitec
 
Web Storage Performance
Web Storage PerformanceWeb Storage Performance
Web Storage Performance
 

Prism

  • 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”
  • 3.
  • 4.
  • 6.
  • 9.
  • 13.
  • 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)
  • 20. Procesul de incarcarea modulelor Module catalog
  • 24. Comunicareintre module ModulA Publish Event Aggregator Subscribe ModulB ModulC ModulD
  • 25. Comunicareintre module ModulA Event Event Aggregator Event Event Event ModulB ModulD ModulC
  • 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
  • 32. CreareaBootstrapper-ului InstantiazaBootstrapper-ul Initializari, afiseaza Shell-ul, creeazacatalogul de module siincarcamodulele Servicii composite UI (Region Manager, Event Aggregator) siservicii de incarcare a modulelor Fereastra top-level (root visual)
  • 33.
  • 34. Application (permite download on demandPas optional, pot existacataloage cu functie de discovery
  • 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)
  • 36. Detalii Prism website http://compositewpf.codeplex.com/ Contact http://byteflux.me/ http://twitter.com/nseba contact@byteflux.me