I have long considered HTML to be a hindrance to user experience in business applications. This old "language" was designed for simple hypertext informational pages but patched and bandaged to support the ever-growing expectations of corporate clients. I was very excited to hear of Microsoft's new Presentation Foundation and have been working toward promoting it as a replacement to HTML for intranet style projects.
After much research, my path is chosen. I have focused my initial research on Silverlight for its flexibility and cross-platform support, but I plan on including WPF in my long-term efforts. I have also chosen Model-View-ViewModel (MVVM) as the design pattern for its intuitive elegance with Silverlight's declarative model. WPF has better support for some of the MVVM's architecture, so I have taken a simplistic approach to some of the challenges in order to keep the implementation relatively light-weight.
I have been inspired and guided by tutorials and blogs that I have seen, so thanks to the online community for the invaluable information they provide. Thanks to all.
It basically states that modern design patterns follow a simple philosophy:
- Applications implement a model that represent the data store. This is the "Model".
- The "View" renders the display and allows users to interact with data.
- Business rules and application workflow are handled by the "ViewModel". This component provides endpoints for declaratively binding to data and actions.
There is also an article by Dr. WPF about Model-View-Poo that I enjoyed.
I chose to build an administration module for a web application as a goal to work towards. Basically, it would display a list of users and allow editing of a user in a detail screen.
The solution plan would be as follows:
|Admin||The Silverlight app., implementing the Views and View Models|
|ClientLibrary||Functionality shared between Silverlight apps. including the Model|
|DataService||A WCF service providing database operations to the client|
|Web||The web application hosting the Silverlight apps.|
|Base||Common functionality for all MVVM style solutions|
For my next trick, I'd like to describe the Base and ClientLibrary projects in detail. The Web and DataService are not really relevant for UX discussion, so I will not be getting into them.