Cloud Foundry: Design and Architecture
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Abel Avram on Aug 19, 2010
WPF Application Framework (WAF) and Caliburn are two open source frameworks offering the foundation to developers to write WPF/Silverlight applications based on the Model-View-ViewModel (MVVM) pattern using a layered architecture.
WAF uses the Model-View-ViewModel (MVVM) pattern, which is quite similar to the PresentationModel, as defined by Martin Fowler. This pattern, as used by WAF, can be described by the following UML diagram:
View – this class contains all the GUI widgets, but not their state nor behavior.
IView – an interface for the View class.
ViewModel – contains the state and behavior for the GUI widgets. The reason those elements are saved here is to avoid tying the application code to the GUI interface, so the application can be easily ported to a different GUI system. The ViewModel can interact with View through its interface.
Controller – The MVVM pattern does not mention a controller but WAF contains one, having the responsibility to direct the flow of the application. If necessary, ViewModel informs the Controller on changes through events.
Model – An underlying domain class. Changes in the Model are transmitted to the View or ViewModel via events.
WAF is built with a layered architecture in mind as the one presented below:
The framework contains basic classes/interfaces which are to be extended to fit the application, such as Controller, IView, ViewModel, Model, and also a number of file dialog/message service classes. The framework also comes with code samples for a book library, an email client, a document oriented application, and also basic support for unit tests. WAF has been submitted to CodePlex by user jbe2277, which did not decline his identity, but he seems to be a developer on the Microsoft pattern&practices Smart Client Contrib team.
Caliburn is yet another open source WPF and Silverlight framework, built around the same MVVM pattern. The project’s website mentions the following features:
- Extends data binding to methods, making MVVM architectures simple and intuitive.
- Adds pre/post execution filters and rescues to MVVM actions.
- Simplifies asynchronous programming through a powerful implementation of co-routines.
- Provides base classes supporting common UI roles such as Screen Activator, Screen Conductor, Screen Collection and Application Controller.
- Encourages a convention over configuration approach to architecting solutions.
- Supports TDD by providing a powerful data binding validation framework for WPF.
- Enables use of the same API for WPF and Silverlight architectures
The framework seems to be similar to WAF in many ways but it is more mature having over 100 classes/interfaces. It also comes with Silverlight and WPF samples such as a Contact Manager and a Game Library. Caliburn is backed by Blue Spire.
RDBMS to NoSQL: Managing the Transition
Automating Error Reporting for .NET Applications
Troubleshoot Java/.NET performance while getting full visibility in production
Visual Studio vNext: ALM features for Agile Planning, Team Collaboration
The WebSphere Liberty Profile for Developers: An Introduction
Features:
* "Blendability" - integration with Blend (and Visual Studio project templates)
* "light" - only essential components (as stated at MIX 2010 live.visitmix.com/MIX10/Sessions/EX14)
Backed by identitymine.com (author of framework and author of book "Advanced MVVM" work there).
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Andrew Watson talks about the work of the OMG, where CORBA is alive and well (hint: in your car), UML and UML Profiles vs. custom Modeling languages, DDS and other middleware, and much more.
Sohil Shah discusses creating iPhone and Android enterprise mobile applications based on cloud services using the open source platform OpenMobster.
Paul Sanford presents the transformations supported by data throughout its life cycle, and how that can be better done with Splunk, an engine for monitoring and analyzing machine-generated data.
A common “best practice” for unit tests is to only write a one assertion in each test. I intend to question this advice by showing that multiple assertions per test are both necessary and beneficial.
John Rauser presents the architectural and technological evolution of Amazon retail websites starting with 1994 and ending with adopting Amazon Web Services.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
1 comment
Watch Thread Reply