Build your professional network on facebook via our app Go to app
 
 1 of 2 in Topic  Next >>
Posted in Community :

MVC framework

Industry : IT Products Functional Area : Productivity & Performance
Activity:  0 comments  1425 views  last activity : 07 06 2010 20:18:04 +0000
 Refer 11
Share
 
 
 

Caliburn is a WPF framework geared towards the creation of testable, maintainable and extensible client applications.  It has strong support for MVC/MVP as well as many other features useful in the creation of a modern Windows application.  I started building an early version of this framework in the first quarter of last year for use on a WPF LOB my company was developing for a major state institution.  The framework turned out to be a boon for painlessly creating testable WPF applications.  A month or so ago I decided that the framework needed to be rebuilt in order to improve its design and to add a number of additional features; and to get it into a form that was acceptable for sharing with the larger .NET community.

In the process of building the new version, I spent some time studying other similar frameworks, which I had not done prior to building the original version.  I was pleasantly surprised to find out that several of my ideas were similar to the way the Cocoa framework functions.  I also spent some time looking at CAB and Acropolis and reading a variety of articles/blogs on related subjects.  It was my desire to build something that enables all of the above mentioned functionality but with a simpler usage story; one that feels like WPF and didn't force the use of special base classes, interfaces or custom property implementations.

On that note, you can find the full source code available for download under the MIT License at //bluespire.com/svn/Caliburn/trunk/.  I hope you will download it and send me some feedback.  The current version still needs work, but I think you'll get the idea by playing around with the sample a bit.  I'm going to be spending several blog posts introducing and explaining the main features of the framework and I hope you'll stick with me and provide me with constructive criticism along the way.

Next week I have an exciting opportunity to sit down with Glenn Block, the p&p team and other WPF gurus to discuss the future of a similar framework that Microsoft is building.  Releasing this code gives me a great way to tangibly express to the p&p guys some of the things I have been thinking about and the techniques I have found useful in building WPF applications.  It is my desire that the p&p team 'steal' as many of the ideas in this framework as they need and that the readers of this blog give me as much feedback as possible as to whether the techniques contained therein are beneficial to anyone else besides me.

Below is a loose listing of the framework's features.  I will be going into detail as to how to use each of these features in future posts:

  • Loose messaging between WPF UI and POCO classes:
    • Use any class as a Presenter/Controller
    • Use any control/event/gesture to send messages to a Presenter.
    • Messages can carry data bound from WPF controls to be used as method parameters on a Presenter.
    • The return value of a Presenter's action can be bound back to the UI.
    • Presenter Actions can be automatically run asynchronously.
    • Presenter Actions can leverage automatic exception handling.
    • Presenter Actions can bubble up to parent presenters if actions are not handled.
  • Loose event pub/sub:
    • Use attributes or a traditional API to register publishers and subscribers.
    • Events can bubble, tunnel or move directly in the even hierarchy.
    • Subscribers can run handlers asynchronously or a publisher can specify all subscribers to run asynchronously.
    • Use any control/event/gesture to raise application events.  Use databinding to pass 'args' along.
  • Platform Abstractions
    • Interface based versions of MessageBox, OpenFileDialog and SaveFileDialog
    • more abstractions to come...
  • Markup Extensions
    • Extensions to make all the above easier to declare in Xaml
    • ResolveExtension for using the IoC container in Xaml
  • Static Gateway
    • All services are accessible through a configurable static gateway.
  • Testable
    • All framework services are interface based.
    • Stubs/Fakes and TestConfiguration provided for all services.
  • PresenterHost
    • Used to host a presenter in markup with runtime view selection.
    • Supports animated transitions between views over a presenter.
  • Module Based Architecture
    • Build your application as pluggable modules.
  • Shell Extension Mechanism
    • The shell can easily declare extension points.
    • Modules can extend the shell through a simple API.
  • Shell State Mechanism
    • The shell can track the state of various UI elements so they can be persisted across application loads.
    • Not limited to Window Size/Position.
    • Track module state across loads.
  • IoC/DI
    • Use Windsor
    • Use Spring.net
    • Use StructureMap (adapter is not quite complete)
 
TrackBack URL:
0 comments on "Introducing 'Caliburn': An MVC/MVP WPF Framework "
Add your comment on "Introducing 'Caliburn': An MVC/MVP WPF Framework "

Rate:
Submit
Microsoft Certified Business Partner
Microsoft Certified Business Partner
Viewers also viewed
India’s Central Electricity Regulatory Commission (CERC) has announced the new regulations,...
 
130 referals 15 arguments, 1970 views
Steve Jobs is the one man who brought Apple to the heights it is right now. There cannot be two...
 
0 referals 13 arguments, 259 views
Water Management Conservation is oft talked subject with water scarcity impacting the...
 
3 referals 20 arguments, 650 views
more...  
Recent Knowledge (69)
Go to http://www.php.net/downloads.php and download the current version. PECL modules :...
40 referals 14 comments, 993 views
A Sufi Story Once upon a time, a fox that lost its legs lived in a forest. A forester who used...
 
294 referals 8 comments, 168 views
50 Things to do Before you Die Photo by  Anne Froelisch   1. Set foot on each of the seven...
 
529 referals 13 comments, 270 views
more...  
More From Author
This week I received another request from a recruiter seeking a person to fill a vacant Business Analyst (BA) position. In my role as coordinator, I am often asked by recruiters if I know of any people who are currently looking for work. During...
Generally the problem has been of technical folks thinking BA as a career progression with somewhere the feeling that as one progress one does less of technology and more of business. This makes them treat BAs as competitors... I absolutely agree....
Hedge fund is an investment technique that uses high risk techniques with an effort to make extraordinary capital gains. The reports cover market sizing and forecasts, investment strategies, regulations and customer groups. The market research...
more...