.NET & Funky Fresh

Syndication

News

  • <script type="text/javascript" src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822/US/bluspiconinc-20/8001/8b68bf4b-6724-40e7-99a5-a6decf6d8648"> </script>
Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
Caliburn and Prism

I've had a number of people commenting or sending emails with a statement like this:

I was reading your blog and also looked into the caliburn homepage and I was wondering how this project compares/relates to PRISM.  Is it the same kind of problems that are targeted?  We are about to start looking more into PRISM for our new development project and found this information about Caliburn very interesting.

In short, Caliburn is geared towards solving many of the same types of problems that Prism does.  Prism's primary focus is on Composite Applications.  Caliburn covers these scenarios, but also has a number of features designed to make general WPF development easier - regardless of the size or complexity of the project you are building. 

Caliburn has at least a year's head start on Prism and is a fully-baked reusable framework, whereas Prism is presently only available as a reference implementation.  You can contrast Prism's origins with the fact that Caliburn's  primary features are based on real world struggles I've had building WPF applications and it (earlier versions of it) have already been deployed in the wild.  Additionally, I am currently using the latest Caliburn bits to build a product for my company and we also plan to use them on a new WPF project starting in a couple of weeks.

Caliburn is presently in Beta 1.  I'm not planning on adding too many additional features before Beta 2 and hopefully zero breaking changes.  My goals for Beta 2 are simple:

  1. To have adequate developer documentation and samples.
  2. To have a working implementation running on Silverlight Beta 2 with as many features ported as SL will easily allow and that make sense for the platform.

As you can see, my release schedule is somewhat dependent on the Beta 2 release of Silverlight.

I'd like to point out that I am a member of the Prism Advisory Board and am working with the P&P team along with a number of other qualified individuals to insure that Prism is the best it can be.  I'm seeking to give practical advice while not forcing the team to make some strange Microsoft clone of Caliburn.  That's not easy for me.  But I believe that for Prism to be successful, it is important that the team have their own struggles and solve them in their own way, with a gentle nudge from the PAB when necessary. 

That said, it's truly interesting how similar some of the solutions the Prism team finds are to Caliburn's implementation.  Here's a few examples:

  1. Both abstract a DI container through an IContainer interface.
  2. Both enable composite views.  Prism through IRegion and Caliburn through IComposite.
  3. Both favor the Model/View/Presenter pattern with additional use of Presentation Model (aka MVVM for those of you who have been reading Gossman or Crevier).
  4. Both are seeking to make async code easier to write.
  5. Both enable modular application architectures and I have an IModule interface.
  6. Both have a strong emphasis on Testability and Plugability.

There are many other similarities and I can't deny that seeing the Prism team come to many of the same conclusions as me makes me feel good about my contribution.  Indeed, the Prism team should feel pretty well justified in their solution as well - unless all of us are crazy, of course.

So, in short, Caliburn and Prism are very similar.  Of course I'm partial to my own creation, but I'm hopeful about what Microsoft is working on.  Since both frameworks are so componentized and pluggable, there is, in fact, no reason why you can't use them in tandem.  If you like Caliburn's Action Messages (and related goodies) but prefer the IRegion implementation of Prism over Caliburn's IComponent, why not use both?


Posted 04-28-2008 4:55 PM by Rob Eisenberg

[Advertisement]

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Subscribe
Google Reader or Homepage

del.icio.us CodeBetter.com Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl CodeBetter.com Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of Devlicio.us
Red-Gate Tools For SQL and .NET

NDepend

SlickEdit
 
SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
LiteAccounting.Com
DevExpress
Fixx
NHibernate Profiler
Unfuddle
Balsamiq Mockups
Scrumy
JetBrains - ReSharper
Umbraco
NServiceBus
RavenDb
Web Sequence Diagrams
Ducksboard<-- NEW Friend!

 



Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers

 

Community Server (Commercial Edition)