Is Caliburn Micro the 'right' first MVVM Framework?

Apr 26, 2011 at 5:44 PM

I am just starting out with MVVM and just wanted to ask if Caliburn Micro is unsuitable for newcomers (steep learning curve etc). 

Although I've worked for few years with C# / WPF, I havent managed to get my mind around MVVM yet.

Would just jumping right in completely confuse a newbie?

 

Coordinator
Apr 26, 2011 at 5:47 PM

I recommend taking some time to read the docs and go through the samples and see for yourself.

Apr 26, 2011 at 6:14 PM

Thanks, I am watching the MIX10 demo right now, and downloading the framework !

 

Apr 26, 2011 at 7:16 PM

Watch Rob's video, and check out what you can find from Rockford Lhotka and Laurent Buignon as well - contributions from these three gentlemen were what made MVVM 'click' for me. Lhotka's BXF is so small that you can get a good grasp of the basics required, so I'd recommend looking through his sources as well. Didn't particularly like Buignon's MVVM Light toolkit (his videos etc are fine though). Caliburn Micro is nice and pretty straightforward :)

Apr 26, 2011 at 7:19 PM

"confuse a newbie"? Absolutley Not! - I'm in the same situation, getting up to speed on MVVM. I'm a fan of conventions, the video is great. I only wish the documentation was a single (printable) download!

Apr 27, 2011 at 1:37 PM

I started MVVM using the MVVM Light framework and recently discovered Caliburn Micro. Caliburn micro is great for simplfieing the the plumbing that goes on and they both have their own learning curves.

I found with frameworks like MVVM Light the learning curve was with getting the bindings to work between view and viewmodel, relaycommands instead of click events and the more advanced things like messaging between viewmodels and event to commands. 

With Caliburn Micro all the stuff i mentioned is abstracted away by conventions so the learning curve becomes the conversion. In saying that alot of the conventions are most likely the same as what you would use in any MVVM Framework. Its alot better when something just works because you used the same name in the view and viewmodel or the prefix of the view and viewmodel match. A Painpoint for me though was knowing where to start, theres a lot of documentation and new concepts that even though you have an idea of what it can do it can be a be scary going into. I would have like to have seen some more video tutorials, pluralsight videos have a really good format that would explain this framework in a matter of minutes rather than the days of reading and contemplation. 

After using both i defiantly like caliburn better. If i had of used Caliburn Micro first i may not have understood as much in regards to how the pattern and framework works but i think for the basics it would be alot easier.  Screens, Conductors and bootstrappers were kinda new to me and took awhile to get used to. 

Apr 27, 2011 at 6:53 PM

I appreciate all the shared experiences ,

I suppose I find myself overwhelmed with the deluge of design patterns (screen conductors, dependency injection) the advanced C# programming tricks (coroutings, reflection), and even the use of newer C# features all over the place (lambda expressions)...

I admit I am attracted to the sophistication of how the whole thing works, and of course lured by the promise of maintability, testability etc ... but nonetheless the reality is that my productivity is seriously impacted in this new world (at least in the short to medium term).   

It is intimidating to see the speed at which the complexity of software is evolving and how high the bar has become just to build a LOB application : - ( 

I suppose building applications in this style on makes sense for a certain complexity / size and above?

Any suggestions there?

 

 

Coordinator
Apr 27, 2011 at 7:22 PM
Edited Apr 27, 2011 at 7:35 PM

I recommend that you try not to worry about screens and conductors at all at first. They will make sense when the time is right. Focus on the features like Actions. Don't worry about coroutines. They will make sense when the time is right ;) Just start by trying to use actions with a little bit of dependency injection (a little can go a long way). Try to master the notion of composition and modeling "state" in your view models.

The truth is that very few people do UI programming well. It is difficult to create a maintainable and extensible presentation tier unless you've spent years focusing on nothing but that. I've tried to make it easier to do the right thing with this framework, but it's still a difficult area to master.

If you like, start with MVVM Light. It's a solid toolkit. But, you are going to write a lot more code...that's why I normally recommend that people start by focusing on CM's Actions (esp. in combination with conventions). That will give you an immediate productivity boost and drastically reduce the amount of code you have to write.

Apr 28, 2011 at 4:12 PM

Yeah i understand where your coming from. I'm a self taught developer that only started about 2 years ago. The very first program i made was a little util app to help me at work. I kept finding stuff to add to it and and due to my inexperience i found it becoming very tightly coupled and hard to extend. Thats where my interest in MVVM came in. If you understand the View, ViewModel, Model part of MVVM the you can get a long way with CM but just naming the controls in your view and your properties and methods in your view model the right way.  To do just the MVVM part in MVVM Light and other frameworks there's a lot more code involved. I remember the bindings alone used to give me a lot of hassle until i discovered you can do it through visuals studio's property window. Once your comfortable with that look into the mode advance stuff to help you design more robustly.