Composite Application Guidance for WPF


We try to regularly update our guidance library with content we have developed to meet the demands of architects and application developers seeking guidance on how to apply Microsoft’s array of products and technologies to common application development scenarios and technical challenges, 


 


We recently shipped the latest edition to our guidance library – Composite Application Guidance for WPF


 


This composite guidance covers many of the scenarios covered by our Composite Application Block (CAB),   With this new release, we target WPF and incorporate feedback and learnings from CAB. This guidance package is designed to help developers more easily build enterprise-level Windows Presentation Foundation (WPF) client applications.  This guidance will guide developers through the design and build steps for flexible composite WPF client applicationscomposite applications use loosely coupled, independently evolvable pieces that work together in the overall application.  The solutions built in this manner will take advantage of the full power of WPF and will be highly maintainable, testable, and broken down in such a way that the various pieces can be developed by separate teams.


 


Composite Application Guidance and CAB were inspired by applications such as the Dell call center application that is used by call center representatives to provide a task centric experience. This reduced the need to copy and paste between applications. Additionally it reduced the average call time and increased efficiency and effectiveness of the sales process.


Some of the focus areas for this guidance package include:


§  Modularity: The Composite Application Library promotes modularity by allowing you to implement business logic, visual components, infrastructure components, presenter or controller components, and any other objects the application requires, in separate modules. Developers can easily create the UI and implement business logic independently of each other.


§  User Interface Composition: The Composite Application Library promotes user interface composition by allowing you to implement visual components from various loosely coupled visual components, known as views, which may reside in separate modules. The visual components may display content from multiple back-end systems. To the user, it appears as one seamless application.


 


Within this package you will find a reference implementation, a composite application library for WPF, Quickstart guides, a Hands on Lab and over 300 pages of documentation including UI designer guidance and How-To’s.


 


You can get access to this guide via MSDN here, or through the CodePlex here.  There are various customers who are using this guidance today to build their real world applications including accounting firms, large banks and government agencies.


 


Namaste!

Comments (23)

  1. cjm55 says:

    I presume you didn’t mean to say that this "reduced the average call time AND efficiency AND effectiveness"…

  2. Tomer Shamam says:

    Can you give names of companies or references to projects using CAG4WPF?

  3. Somasegar says:

    Thanks CJM55 for catching the typo.  I have fixed the text to reflect "reduced the average call time and INCREASED efficiency and effectiveness".

    -somasegar

  4. Publicación del inglés original : martes 15 de julio de 2008 12:20 PM PST por Somasegar Intentamos actualizar

  5. hpatel_it says:

    are there any source codes available with sample application to understand PRISM better?

  6. Somasegar says:

    Hi Tomer,

    Here are a couple of customers that use this WPF guidance.

    IdeaBlade (ISV) – http://www.ideablade.com/

    iDesign (SI consultancy) – http://www.idesign.net/idesign/desktopdefault.aspx

    -somasegar

  7. Somasegar says:

    Hi,

    the StockTrader Reference Implementation http://msdn.microsoft.com/en-us/library/cc707869.aspx (with source code) is probably the best place to start – it illustrates the baseline architecture for our composite application guidance and library and it demonstrates solutions for common and recurring challenges for developers that are looking to build composite WPF applications.

    We also have provided Quick Starts http://msdn.microsoft.com/en-us/library/cc707865.aspx – for those developers that are looking for brief, quick-and-dirty illustrations – and prefer to start by looking at the code.

    The Patterns the Composite Application Library (http://msdn.microsoft.com/en-us/library/cc707841.aspx in ) is another good place to understand the patterns that our team encountered when they began working with customers and partners that have built Composite WPF applications. It is a good complement to the source code view.

    Hope these pointers help.

    -somasegar

  8. Rudi Grobler says:

    Sorry for not blogging anything for the last few weeks but thinks are very busy at this moment… preparing

  9. phcmi says:

    I have gotten to know the original CAB offering and its implementation of the Model-View-(Controller/Presenter) patterns there-in.

    I recently taken a look at Composite UI for WPF and I must admit I am greatly disappointed.

    I have spoken to a number of other developers and they agree that it is immensely difficult to understand what is going on in the framework with regard to Model-View Presenter, especially if one is well versed in CAB and/or SCSF.

    The samples provided cause more confusion than anything else. They’re all over the place. Perhaps it would be a good idea to stick with outlining consistent Model-View Presenter type projects.

  10. Hi Phcmi – thank you for considering the Composite Application Guidance for WPF.

    We work with a number of customers and partners to scope and drive the requirements for our guidance deliverables. For instance, a large global financial institution has told us that that this deliverable ‘is meeting and exceeding in terms of simplicity and clarity’.

    However, we seem to have disappointed you in this case. We are sorry to hear that our samples were not effective.

    I lead the p&p team at Microsoft – and I am committed to ensuring that we address your  needs here. Can I please ask you to reach out to me at jdevados@microsoft.com?

    thank you again for considering our guidance deliverables.

    john devadoss

    jdevados@microsoft.com

  11. Hi All!

    2 Questions – Has any of this been applied to Silverlight even if in prototype form, and what is the roadmap to help folks build composite Silverlight applications?

  12. David says:

    Hi!

    Can someone in the p&p team please talk about the popularity of Prism, future plans, is it strategic step of Microsoft for Composite Applications next Gen? Future support and Features?

    It is very important to know if it a right step to start using it.

    Thanks!

  13. Somasegar says:

    Hi Eduardo and David,

    We are working on extending Prism to support SL as well as WPF.  As well as providing support for building composite SL based RIA applications, we are also focused on building applications that can target the two environments – so that you can build a smart client WPF version of an application and a browser hosted SL version of hte same application by re-using modules and servcies across the two environments.

    This effort is in its early stagesbut there have been a few spikes already checked into TFS on the Prism CodePlex site.  Later in the year, you will hear more from us on this.

    -somasegar

  14. David says:

    Hi Somasegar,

    Thanks a lot for answering my question, but what I really interesting in is the future of Prism for WPF, popularity, etc.

    Thanks

  15. Somasegar says:

    Hi David,

    We have just released Prism (Composite WPF Guidance) and if the popularity of the previous generation of this guidance i.e. the Composite Application Block for Windows Forms is any indication then we expect Prism to be extraordinarily popular.

    Our intention is that Prism enable for Composite WPF applications what the CAB was able to do for Composite Windows Forms applications. And the interest from our customers and partners, and our own field architects and developer evangelists indicates that we are on a good path here.

    We are committed to enhancing and supporting Prism as our platform evolves. We are currently working on extending Prism to support Silverlight as well as WPF. A key investment we are making here is providing support building applications that can target both WPF and Silverlight – so you can build a smart client WPF version of an application and a browser hosted Silverlight version of the same application by re-using modules and services across the two environments.

    In addition we have built Prism to specifically allow incremental adoption of only the capabilities that you need, which was not always the case with the CAB.

    If you are building a composite application and you are using WPF then yes please definitely consider using Prism.

    Our patterns & practices team is working with a number of early adopters (customers and partners) and will also be happy to help you.

    -somasegar

  16. Elisy says:

    We are developing some composite application approaches for Silverlight. I don’t see the need to port Prism to Silverlight one to one.

  17. David says:

    Thanks Somasegar for this valuable information. Be sure that I will use Prism for future WPF Composite Applications.

  18. hpatel_it says:

    How can i integrate MAF in Composite WPF (PRISM)?

    Does prism support MAF?

  19. jdevados says:

    Hi HPatel_it – I am assuming that you are referring to the Managed Add-in Framework.

    yes, we have several customers in the Composite WPF Customer Advisory Board that are working with both. Composite WPF (Prism) uses an IModuleLoader and IModuleEnumerator for discovery and loading of modules. When using MAF you will want to use MAF specific versions of these services.

    There are also MAF-specific constraints – particularly wrt contracts among others.

    Would you please contact me on email at jdevados@microsoft.com and we can help you with the specifics of this integration for your scenario?

    thank you for considering Composite WPF.

    john devadoss

    http://blogs.msdn.com/jdevados

  20. Tomer Shamam says:

    Hi Somasegar,

    We are at the beginning of a new WPF UI project, and I wonder if Prism is the correct infrastructure to use.

    The project is kind of a cosmetic simulator, sits in cosmetic stores, running as a standalone Kiosk.

    It is actually composed of few screens (welcome, registration, photo capture and main screen). All the work is actually done on the main screen through a touch screen.

    The UI itself is not a real Composite UI, but it can be separated into several modules since there should be different components for different customers and we want to compose the UI based on configuration per customer.

    We think that Prism is a good point to start since it provides an infrastructure for working with modules, services, event aggregator and commands. But we don’t really need to separate the UI into regions. Also the flow and maybe UI parts may change from customer to customer.

    Do you think that picking up Prism is a good choice for this kind of project?

    If so, how can I use Prism for picking up a different UI flow based on modules (for example displaying registration screen first, and photo screen after or no registration screen at all)?

    Is it right to have a "UI flow" module for deciding what screen should be shown first?

    Best Regards,

  21. jdevados says:

    Hi Tomer – thank you for considering Prism.

    As you have called out, Prism is a good start since it provides an infrastructure for working with modules, services etc.

    We have designed Prism to not be an all-or-thing choice – you can adopt a subset of the functionality. It sounds like you would like to decompose your application into modules and load them based on the specific customer needs – and we can address your requirement.

    We have used a Supervising Controller in the Reference Implementation and from my limited understanding of your ‘UI Flow’ I believe we can meet your requirement here as well.

    But, could you please share with me at jdevados@microsoft.com additional context on your application and we can help you.

    thanks

    john

    http://blogs.msdn.com/jdevados

  22. Hi John,

    I sent you an Email one month ago, unfortunately I got no respond.

  23. Publicación del inglés original : Jueves 30 de octubre de 2008, 4:07 PM PST por Somasegar He escrito