3. Background:
Enterprise Application Definition
∗ Targets
∗ Any type of organization
∗ Any type of industry
∗ Not intended for consumers
∗ Function focused, such as, accounting, purchasing,
sales, etc.
6. Background:
XAML Definition
∗ Declarative markup language for .NET API with XML
nodes equating to CLR objects
∗ Features include
∗ Rich eventing support
∗ Declarative databinding
∗ Developer friendly conventions, such as, the content
property equals the “inner xml” of many nodes
8. Background:
Ramifications
∗ Enterprise applications do not ruthlessly follow well
trodden UI guidelines; business users know what they
want
∗ XAML does not mirror ASP.NET or Windows Form
technologies, blindly adhering to their patterns &
practices may result in harder to build and maintain
Silverlight/WPF applications
9. Architecture Considerations:
Options
∗ Patterns ∗ Toolkits
∗ Code Behind ∗ Caliburn Micro
∗ MVC ∗ Catel
∗ MVP ∗ MVVM Foundation
∗ MVVM ∗ MVVM Light Silverlight
∗ Simple MVVM
∗ Prism
Note: The above lists are NOT exhaustive.
Many other relevant patterns and toolkits exist.
11. Architecture Considerations:
UI Pattern Picking
∗ Theoretical considerations
∗ Not the same as most software patterns (maybe why
some call them “frameworks”?)
∗ Technology dominates
∗ Practical considerations
∗ Application complexity and life span
∗ Development team’s abilities and interests
∗ Organizational resources and support
12. Architecture Considerations:
UI Patterns and Technology
∗ MVC (Model-View-Controller)
∗ Conceived when viewers offered very little support for a
software developer writing presentation code
∗ Built with language and platform specific helpers
∗ MVP (Model-View-Presenter)
∗ 2nd generation MVC; facilitated testing
∗ Response to feature rich viewers
∗ MVVM (Model-View-ViewModel)
∗ 3rd generation MVC; reduced coder/designer friction
∗ Response to XAML
13. Architecture Considerations:
Toolkit Overview
∗ Plugs gap between technology and its use; maybe
entitled “helper” code!?
∗ Considerations
∗ Fit (Simple as possible, but not simpler)
∗ How well does it plug the gap?
∗ Does it include more than required?
∗ Obsolescence susceptibility
∗ Handle newer, better technologies
∗ Ingest requirement/application changes
14. Architecture Considerations:
Prism Toolkit
∗ Overview
∗ Supports WPF and Silverlight
∗ Available on Microsoft Download Center
∗ V4 (11/2010)
∗ Supports MVVM many features, such as,
∗ Bootstrapper
∗ Dependency Injection (Unity & MEF)
∗ Composition (über)
∗ Event Aggregator
∗ Wiring Commands & Events
16. Architecture Considerations:
Caliburn Micro Toolkit
∗ Overview
∗ Supports WPF, Silverlight and Windows 7
∗ Paired down version of Caliburn (10X smaller)
∗ Available on CodePlex
∗ V1.2 RTW (7/2011)
∗ 2,000+ downloads
∗ Supports MVVM and MVP with
∗ Bootstrapper
∗ Composition
∗ Event Aggregator
∗ Window Manager
∗ Wiring Commands & Events
17. Architecture Considerations:
MVVM Light Toolkit
∗ Overview
∗ Supports WPF, Silverlight and Windows 7
∗ Available on CodePlex
∗ V3 SP1 (2/2011)
∗ 20,000+ downloads
∗ Supports MVVM with
∗ Event Aggregator
∗ Service Locator
∗ Wiring Commands & Events
18. Side Note:
What about CSLA.NET, Enterprise Library & Entity Framework?
∗ CSLA.NET
∗ Solves data access & business logic problems
∗ Works with most .NET UI technologies, especially those
leveraging databinding
∗ Not focused on specific UI pattern or technology
∗ Enterprise Library
∗ Addresses aspect oriented & generic problems
∗ Not associated with any UI pattern or technology
∗ Entity Framework
∗ Handles database exchanges
∗ Not associated with any UI pattern or technology
20. Toolkit Demonstration:
Overview
∗ Work thru a simple client information application with
Silverlight (out of browser)
∗ Implement three iterations (as projects)
∗ 1st Iteration constructed as a basic non-MVVM
∗ 2nd Iteration converted to an MVVM to help handle
additional requirements
∗ 3rd Iteration incorporate MVVM Light to fix a few
architecture issues uncovered in 2nd Iteration
25. Toolkit Demonstration:
Sample Application 2nd Iteration
∗ MainPage.xaml.cs indirectly communicates with three
models (ClientInformation, ClientPreferences and
ClientSale) via two ViewModel classes
∗ Databinding employed; UI events initiate data access
26. Toolkit Demonstration:
Sample Application 3rd Iteration
∗ 2nd iteration + MVVM Light Toolkit
∗ Databinding and commands leveraged to allow all logic to
live within the ViewModels
27. Toolkit Demonstration:
Recap
∗ 1st Iteration – architecture typical of many Windows
Form-based applications
∗ 2nd Iteration – MVVM pattern applied with a few
resulting “programming holes”
∗ Communications limited between controls
∗ Events to commands not fully supported
∗ 3rd Iteration – MVVM Light Toolkit addresses
shortcomings from the 2nd Iteration
28. Toolkit Demonstration:
Some Other MVVM Light Features…
∗ Ability to dynamically load appropriate ViewModel
classes (ServiceLocation)
∗ Designed to work well with Blend
∗ Developer Candy
∗ NuGet support
∗ Visual Studio templates
∗ C# snippets