SlideShare a Scribd company logo
1 of 24
28 September, 2009 Composite Application Library –  Prism v2 – Introduction
Prism – Architecture	 2 Composite Application Library –  Prism v2 – Introduction   28 September, 2009
Goals and benefits 28 September, 2009 Composite Application Library –  Prism v2 – Introduction   3
Design concepts – UI Composition 28 September, 2009 Composite Application Library –  Prism v2 – Introduction   4
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   5 Design concepts – View Discovery With the view discovery approach, modules can register views (or presentation models) against a particular named location. When that location is displayed at run time, any views that have been registered for that location will be automatically created and displayed within it.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   6 Design concepts – View Injection In the view injection approach, views are programmatically added or removed from a named location by the modules that manage them. To enable this, the application contains a registry of named locations in the UI and a module can look up one of the locations using the registry and then programmatically inject views into it.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   7 Design concepts – Commanding In a composite application, separated presentation patterns are used for decoupling the view from the presentation logic. In this case, user actions within the view have to be routed to appropriate handlers outside of the view. In addition, the UI elements associated with those actions often have to be enabled or disabled based on state changes within the application. Windows Presentation Foundation (WPF) introduces the concept of commands to support these kinds of interactions. UI elements can be bound to a command, which handles the handler execution logic. The UI element can then execute the command as the user interacts with it in the UI. The UI element will also be automatically enabled or disabled as the underlying command becomes enabled or disabled. The default WPF RoutedUICommand mechanism requires event handlers to be defined in the receiving UI element or in parent UI elements above it in the visual tree. In a composite application, command routing cannot follow the visual tree. Additionally, there are complex scenarios in composite applications where the handling of a command is delegated to child commands. To overcome this constraint, you can use WPF to create custom ICommands so that you can directly route the command to handling logic independently of the visual tree. Two common approaches are delegation and composition.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   8 Design concepts - CommandDelegation The command delegation approach uses a command that delegates its handling logic, either through events or delegates, where it can be handled externally by a class such as a presenter, service, or controller. This provides the benefit of making this handling logic more testable, by not having code in the view's code-behind.  The command requires two handlers: one for the Execute method and one for the CanExecute method. Whenever the Execute or CanExecute methods are called on the command, the handlers are called either through the event being raised or the delegate being invoked
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   9 Design concepts – Command Composition The command composition approach is a variation of command delegation. In this approach, a composite command delegates its handling logic to a set of loosely coupled child commands
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   10 Design concepts – Eventing - Event aggregation In a composite application, components, such as presenters, services, and controllers, residing in different modules, often need to communicate with one another based on state changes or application logic.  This is a challenge because of the decoupled nature of a composite application because the publisher has no direct connection to the subscriber. Additionally, there may be threading issues because the publisher is on a different thread than the subscriber.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   11 Design concepts - Modularity Modularity is designing a system that is divided into a set of functional units (named modules) that can be composed into a larger application.  A module represents a set of related concerns. It can include a collection of related components, such as features, views, or business logic, and pieces of infrastructure, such as services for logging or authenticating users.  Modules are independent of one another but can communicate with each other in a loosely coupled fashion.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   12 Design concepts – Modularity – Advantages  Simplified application architecture.  Developing and/or deploying modules independently.  You can independently version modules.  You can develop and test modules in isolation.  You can have modules developed by different teams. Loading modules from different locations.  Minimizing download time. When the application is not on the user's local computer, you want to minimize the time required to download the modules. To minimize the download time, only download modules that are required to start-up the application. The rest are loaded and initialized in the background or when they are required.  Minimizing application start-up time. To get part of the application running as fast as possible, only load and initialize the module(s) that are required to start the application.  Loading modules based on rules. This allows you to only load modules that are applicable for a specific role. An application might retrieve from a service the list of modules to load.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   13 Design concepts – Layered approach to module design Define the goals for the modular design Decide how you are going to partition your modules and define your module's responsibilities The most common approach is to partition your application so that each module has its own functional area, such as Customers or Orders Define the communication patterns between the modules.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   14 Design concepts – Bootstrapper The bootstrapper is responsible for the initialization of an application built using the Composite Application Library.  In a traditional Windows Presentation Foundation (WPF) application, a startup Uniform Resource Identifier (URI) is specified in the App.xaml file that launches the main window.  In an application created with the Composite Application Library, it is the bootstrapper's responsibility to create the shell or the main window. This is because the shell relies on services, such as the Region Manager, that need to be registered before the shell can be displayed.
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   15 Design concepts – Multitargeting WPF Silverlight
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   16 Prism - Library Baseline Architecture
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   17 Example - High level logical architecture
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   18 Example – Implementation view
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   19 Prism – Design patterns Composite User Interface patterns:  Composite and Composite View  Command Adapter Modularitypatterns:  Separated Interface and Plug In  Service Locator EventAggregator Façade Testabilitypatterns:  Inversion of Control SeparatedPresentation
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   20 Technical Concepts – Overview
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   21 Technical concepts - Modules in the Application Life Cycle
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   22 Technical concepts – module loading
28 September, 2009 Composite Application Library –  Prism v2 – Introduction   23 Resources Composite Application Guidance for WPF and Silverlight http://www.codeplex.com/CompositeWPF http://www.silverlightshow.net/items/Patterns-and-practices-in-the-Composite-Application-Library-part-1.aspx http://www.codeproject.com/KB/WPF/CompositeWpfApp.aspx http://petedoesstuff.net/Blog/?p=79 http://www.infoq.com/news/2008/07/Composite-Application-Library http://www.adronbhall.com/blogs/technology__software_development/?tag=/composite+application+library
24 Composite Application Library –  Prism v2 – Introduction   28 September, 2009

More Related Content

What's hot

D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworksSunil Patil
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo Cardin
 
Navigating the Requirements Management application: Web client
Navigating the Requirements Management application: Web clientNavigating the Requirements Management application: Web client
Navigating the Requirements Management application: Web clientIBM Rational software
 
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Madjid KETFI
 
Rhapsody Eclipse
Rhapsody EclipseRhapsody Eclipse
Rhapsody EclipseBill Duncan
 
Prism Tech Ed India
Prism Tech Ed IndiaPrism Tech Ed India
Prism Tech Ed Indiarsnarayanan
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integrationgjuljo
 
Mho Web Dynpro Abap
Mho Web Dynpro AbapMho Web Dynpro Abap
Mho Web Dynpro Abapthomas_jung
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Aditya Jha
 
Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Nikolay Grozev
 
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...Sabino Labarile
 

What's hot (16)

D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworks
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Navigating the Requirements Management application: Web client
Navigating the Requirements Management application: Web clientNavigating the Requirements Management application: Web client
Navigating the Requirements Management application: Web client
 
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
 
IBM Worklight Whitepaper
IBM Worklight WhitepaperIBM Worklight Whitepaper
IBM Worklight Whitepaper
 
C++ N Pv2
C++ N Pv2C++ N Pv2
C++ N Pv2
 
Rhapsody Eclipse
Rhapsody EclipseRhapsody Eclipse
Rhapsody Eclipse
 
Prism Tech Ed India
Prism Tech Ed IndiaPrism Tech Ed India
Prism Tech Ed India
 
Identifying and managing change
Identifying and managing changeIdentifying and managing change
Identifying and managing change
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integration
 
Mho Web Dynpro Abap
Mho Web Dynpro AbapMho Web Dynpro Abap
Mho Web Dynpro Abap
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
 
1 introduction
1 introduction1 introduction
1 introduction
 
Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...
 
0. About this course
0. About this course0. About this course
0. About this course
 
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
 

Similar to Composite Application Library, Prism v2

"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...Fwdays
 
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...Dave Bost
 
Modern webtechnologies
Modern webtechnologiesModern webtechnologies
Modern webtechnologiesBesjan Xhika
 
Integration of Struts & Spring & Hibernate for Enterprise Applications
Integration of Struts & Spring & Hibernate for Enterprise ApplicationsIntegration of Struts & Spring & Hibernate for Enterprise Applications
Integration of Struts & Spring & Hibernate for Enterprise ApplicationsIJMER
 
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEMODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEAnže Vodovnik
 
Spring Architecture | Advanced Java
Spring Architecture | Advanced JavaSpring Architecture | Advanced Java
Spring Architecture | Advanced JavaVISHAL DONGA
 
Developing microservices with Java and applying Spring security framework and...
Developing microservices with Java and applying Spring security framework and...Developing microservices with Java and applying Spring security framework and...
Developing microservices with Java and applying Spring security framework and...IRJET Journal
 
A report on mvc using the information
A report on mvc using the informationA report on mvc using the information
A report on mvc using the informationToushik Paul
 
Android DesignArchitectures.pptx
Android DesignArchitectures.pptxAndroid DesignArchitectures.pptx
Android DesignArchitectures.pptxSafnaSaff1
 
Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Chinmoy Mohanty
 
Cloud Management With System Center Application Controller ver1
Cloud Management With System Center Application Controller ver1Cloud Management With System Center Application Controller ver1
Cloud Management With System Center Application Controller ver1Lai Yoong Seng
 
Creating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPFCreating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPFChristian Thilmany
 
Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0Christian Thilmany
 
Task 2 - Educational Article – Model View Controller (MVC)
Task 2 - Educational Article – Model View Controller (MVC)Task 2 - Educational Article – Model View Controller (MVC)
Task 2 - Educational Article – Model View Controller (MVC)Shubham Goenka
 
Pattern oriented architecture for web based architecture
Pattern oriented architecture for web based architecturePattern oriented architecture for web based architecture
Pattern oriented architecture for web based architectureshuchi tripathi
 
EMC Documentum xCP 2.0 Design Patterns
EMC Documentum xCP 2.0 Design PatternsEMC Documentum xCP 2.0 Design Patterns
EMC Documentum xCP 2.0 Design PatternsHaytham Ghandour
 

Similar to Composite Application Library, Prism v2 (20)

Soft serve prism
Soft serve prismSoft serve prism
Soft serve prism
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
 
Modern webtechnologies
Modern webtechnologiesModern webtechnologies
Modern webtechnologies
 
Integration of Struts & Spring & Hibernate for Enterprise Applications
Integration of Struts & Spring & Hibernate for Enterprise ApplicationsIntegration of Struts & Spring & Hibernate for Enterprise Applications
Integration of Struts & Spring & Hibernate for Enterprise Applications
 
Spring Framework -I
Spring Framework -ISpring Framework -I
Spring Framework -I
 
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEMODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
 
Spring Architecture | Advanced Java
Spring Architecture | Advanced JavaSpring Architecture | Advanced Java
Spring Architecture | Advanced Java
 
Developing microservices with Java and applying Spring security framework and...
Developing microservices with Java and applying Spring security framework and...Developing microservices with Java and applying Spring security framework and...
Developing microservices with Java and applying Spring security framework and...
 
Design patterns
Design patternsDesign patterns
Design patterns
 
A report on mvc using the information
A report on mvc using the informationA report on mvc using the information
A report on mvc using the information
 
Android DesignArchitectures.pptx
Android DesignArchitectures.pptxAndroid DesignArchitectures.pptx
Android DesignArchitectures.pptx
 
Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)
 
Cloud Management With System Center Application Controller ver1
Cloud Management With System Center Application Controller ver1Cloud Management With System Center Application Controller ver1
Cloud Management With System Center Application Controller ver1
 
Creating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPFCreating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPF
 
Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0
 
Task 2 - Educational Article – Model View Controller (MVC)
Task 2 - Educational Article – Model View Controller (MVC)Task 2 - Educational Article – Model View Controller (MVC)
Task 2 - Educational Article – Model View Controller (MVC)
 
Pattern oriented architecture for web based architecture
Pattern oriented architecture for web based architecturePattern oriented architecture for web based architecture
Pattern oriented architecture for web based architecture
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
EMC Documentum xCP 2.0 Design Patterns
EMC Documentum xCP 2.0 Design PatternsEMC Documentum xCP 2.0 Design Patterns
EMC Documentum xCP 2.0 Design Patterns
 

More from Orbit One - We create coherence

ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...
ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...
ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...Orbit One - We create coherence
 
ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...
ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...
ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...Orbit One - We create coherence
 
ShareCafé 3 - Geef je samenwerking een technologische upgrade
ShareCafé 3 - Geef je samenwerking een technologische upgradeShareCafé 3 - Geef je samenwerking een technologische upgrade
ShareCafé 3 - Geef je samenwerking een technologische upgradeOrbit One - We create coherence
 
OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...
OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...
OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...Orbit One - We create coherence
 
OneCafé: The future of membership organizations facilitated by CRM and collab...
OneCafé: The future of membership organizations facilitated by CRM and collab...OneCafé: The future of membership organizations facilitated by CRM and collab...
OneCafé: The future of membership organizations facilitated by CRM and collab...Orbit One - We create coherence
 
Social Computing in your organization using SharePoint: challenges and benefits
Social Computing in your organization using SharePoint: challenges and benefitsSocial Computing in your organization using SharePoint: challenges and benefits
Social Computing in your organization using SharePoint: challenges and benefitsOrbit One - We create coherence
 
Marketing Automation in Dynamics CRM with ClickDimensions
Marketing Automation in Dynamics CRM with ClickDimensionsMarketing Automation in Dynamics CRM with ClickDimensions
Marketing Automation in Dynamics CRM with ClickDimensionsOrbit One - We create coherence
 

More from Orbit One - We create coherence (20)

ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...
ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...
ShareCafé: SharePoint - Een doos vol documenten of dé tool om efficiënt samen...
 
HoGent tips and tricks van een self-made ondernemer
HoGent tips and tricks van een self-made ondernemer HoGent tips and tricks van een self-made ondernemer
HoGent tips and tricks van een self-made ondernemer
 
Het Nieuwe Werken in de praktijk
Het Nieuwe Werkenin de praktijkHet Nieuwe Werkenin de praktijk
Het Nieuwe Werken in de praktijk
 
ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...
ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...
ShareCafé: Office365 - Efficiënt samenwerken met minimum aan kosten en comple...
 
ShareCafé 3 - Geef je samenwerking een technologische upgrade
ShareCafé 3 - Geef je samenwerking een technologische upgradeShareCafé 3 - Geef je samenwerking een technologische upgrade
ShareCafé 3 - Geef je samenwerking een technologische upgrade
 
ShareCafé 2 - Werk slimmer door geïntegreerde tools
ShareCafé 2 - Werk slimmer door geïntegreerde toolsShareCafé 2 - Werk slimmer door geïntegreerde tools
ShareCafé 2 - Werk slimmer door geïntegreerde tools
 
ShareCafé 1: Hou de Nieuwe Werker gemotiveerd
ShareCafé 1: Hou de Nieuwe Werker gemotiveerdShareCafé 1: Hou de Nieuwe Werker gemotiveerd
ShareCafé 1: Hou de Nieuwe Werker gemotiveerd
 
Business value of Lync integrations
Business value of Lync integrationsBusiness value of Lync integrations
Business value of Lync integrations
 
OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...
OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...
OneCafé: De toekomst van ledenorganisaties met behulp van CRM en informatie-u...
 
Identity in the cloud using Microsoft
Identity in the cloud using MicrosoftIdentity in the cloud using Microsoft
Identity in the cloud using Microsoft
 
OneCafé: The future of membership organizations facilitated by CRM and collab...
OneCafé: The future of membership organizations facilitated by CRM and collab...OneCafé: The future of membership organizations facilitated by CRM and collab...
OneCafé: The future of membership organizations facilitated by CRM and collab...
 
OneCafé: The new world of work and your organisation
OneCafé: The new world of work and your organisationOneCafé: The new world of work and your organisation
OneCafé: The new world of work and your organisation
 
Social Computing in your organization using SharePoint: challenges and benefits
Social Computing in your organization using SharePoint: challenges and benefitsSocial Computing in your organization using SharePoint: challenges and benefits
Social Computing in your organization using SharePoint: challenges and benefits
 
Windows Communication Foundation (WCF) Best Practices
Windows Communication Foundation (WCF) Best PracticesWindows Communication Foundation (WCF) Best Practices
Windows Communication Foundation (WCF) Best Practices
 
Wie is Orbit One Internet Solutions
Wie is Orbit One Internet SolutionsWie is Orbit One Internet Solutions
Wie is Orbit One Internet Solutions
 
Azure Umbraco workshop
Azure Umbraco workshopAzure Umbraco workshop
Azure Umbraco workshop
 
Marketing Automation in Dynamics CRM with ClickDimensions
Marketing Automation in Dynamics CRM with ClickDimensionsMarketing Automation in Dynamics CRM with ClickDimensions
Marketing Automation in Dynamics CRM with ClickDimensions
 
Office 365, is cloud right for your company?
Office 365, is cloud right for your company?Office 365, is cloud right for your company?
Office 365, is cloud right for your company?
 
Who is Orbit One internet solutions?
Who is Orbit One internet solutions?Who is Orbit One internet solutions?
Who is Orbit One internet solutions?
 
Azure and Umbraco CMS
Azure and Umbraco CMSAzure and Umbraco CMS
Azure and Umbraco CMS
 

Recently uploaded

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Recently uploaded (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Composite Application Library, Prism v2

  • 1. 28 September, 2009 Composite Application Library – Prism v2 – Introduction
  • 2. Prism – Architecture 2 Composite Application Library – Prism v2 – Introduction 28 September, 2009
  • 3. Goals and benefits 28 September, 2009 Composite Application Library – Prism v2 – Introduction 3
  • 4. Design concepts – UI Composition 28 September, 2009 Composite Application Library – Prism v2 – Introduction 4
  • 5. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 5 Design concepts – View Discovery With the view discovery approach, modules can register views (or presentation models) against a particular named location. When that location is displayed at run time, any views that have been registered for that location will be automatically created and displayed within it.
  • 6. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 6 Design concepts – View Injection In the view injection approach, views are programmatically added or removed from a named location by the modules that manage them. To enable this, the application contains a registry of named locations in the UI and a module can look up one of the locations using the registry and then programmatically inject views into it.
  • 7. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 7 Design concepts – Commanding In a composite application, separated presentation patterns are used for decoupling the view from the presentation logic. In this case, user actions within the view have to be routed to appropriate handlers outside of the view. In addition, the UI elements associated with those actions often have to be enabled or disabled based on state changes within the application. Windows Presentation Foundation (WPF) introduces the concept of commands to support these kinds of interactions. UI elements can be bound to a command, which handles the handler execution logic. The UI element can then execute the command as the user interacts with it in the UI. The UI element will also be automatically enabled or disabled as the underlying command becomes enabled or disabled. The default WPF RoutedUICommand mechanism requires event handlers to be defined in the receiving UI element or in parent UI elements above it in the visual tree. In a composite application, command routing cannot follow the visual tree. Additionally, there are complex scenarios in composite applications where the handling of a command is delegated to child commands. To overcome this constraint, you can use WPF to create custom ICommands so that you can directly route the command to handling logic independently of the visual tree. Two common approaches are delegation and composition.
  • 8. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 8 Design concepts - CommandDelegation The command delegation approach uses a command that delegates its handling logic, either through events or delegates, where it can be handled externally by a class such as a presenter, service, or controller. This provides the benefit of making this handling logic more testable, by not having code in the view's code-behind. The command requires two handlers: one for the Execute method and one for the CanExecute method. Whenever the Execute or CanExecute methods are called on the command, the handlers are called either through the event being raised or the delegate being invoked
  • 9. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 9 Design concepts – Command Composition The command composition approach is a variation of command delegation. In this approach, a composite command delegates its handling logic to a set of loosely coupled child commands
  • 10. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 10 Design concepts – Eventing - Event aggregation In a composite application, components, such as presenters, services, and controllers, residing in different modules, often need to communicate with one another based on state changes or application logic. This is a challenge because of the decoupled nature of a composite application because the publisher has no direct connection to the subscriber. Additionally, there may be threading issues because the publisher is on a different thread than the subscriber.
  • 11. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 11 Design concepts - Modularity Modularity is designing a system that is divided into a set of functional units (named modules) that can be composed into a larger application. A module represents a set of related concerns. It can include a collection of related components, such as features, views, or business logic, and pieces of infrastructure, such as services for logging or authenticating users. Modules are independent of one another but can communicate with each other in a loosely coupled fashion.
  • 12. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 12 Design concepts – Modularity – Advantages Simplified application architecture. Developing and/or deploying modules independently. You can independently version modules. You can develop and test modules in isolation. You can have modules developed by different teams. Loading modules from different locations. Minimizing download time. When the application is not on the user's local computer, you want to minimize the time required to download the modules. To minimize the download time, only download modules that are required to start-up the application. The rest are loaded and initialized in the background or when they are required. Minimizing application start-up time. To get part of the application running as fast as possible, only load and initialize the module(s) that are required to start the application. Loading modules based on rules. This allows you to only load modules that are applicable for a specific role. An application might retrieve from a service the list of modules to load.
  • 13. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 13 Design concepts – Layered approach to module design Define the goals for the modular design Decide how you are going to partition your modules and define your module's responsibilities The most common approach is to partition your application so that each module has its own functional area, such as Customers or Orders Define the communication patterns between the modules.
  • 14. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 14 Design concepts – Bootstrapper The bootstrapper is responsible for the initialization of an application built using the Composite Application Library. In a traditional Windows Presentation Foundation (WPF) application, a startup Uniform Resource Identifier (URI) is specified in the App.xaml file that launches the main window. In an application created with the Composite Application Library, it is the bootstrapper's responsibility to create the shell or the main window. This is because the shell relies on services, such as the Region Manager, that need to be registered before the shell can be displayed.
  • 15. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 15 Design concepts – Multitargeting WPF Silverlight
  • 16. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 16 Prism - Library Baseline Architecture
  • 17. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 17 Example - High level logical architecture
  • 18. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 18 Example – Implementation view
  • 19. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 19 Prism – Design patterns Composite User Interface patterns: Composite and Composite View Command Adapter Modularitypatterns: Separated Interface and Plug In Service Locator EventAggregator Façade Testabilitypatterns: Inversion of Control SeparatedPresentation
  • 20. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 20 Technical Concepts – Overview
  • 21. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 21 Technical concepts - Modules in the Application Life Cycle
  • 22. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 22 Technical concepts – module loading
  • 23. 28 September, 2009 Composite Application Library – Prism v2 – Introduction 23 Resources Composite Application Guidance for WPF and Silverlight http://www.codeplex.com/CompositeWPF http://www.silverlightshow.net/items/Patterns-and-practices-in-the-Composite-Application-Library-part-1.aspx http://www.codeproject.com/KB/WPF/CompositeWpfApp.aspx http://petedoesstuff.net/Blog/?p=79 http://www.infoq.com/news/2008/07/Composite-Application-Library http://www.adronbhall.com/blogs/technology__software_development/?tag=/composite+application+library
  • 24. 24 Composite Application Library – Prism v2 – Introduction 28 September, 2009