Caliburn vs. Caliburn.Micro

In general, prefer to use Caliburn.Micro over Caliburn. It is a smaller, simpler framework. It can probably do everything you need and can easily be customized on a per-application basis. Below is a list (probably not-comprehensive) of some of the things that are different between the two frameworks:
  • While both frameworks use a Bootstrapper, Caliburn has many more configuration options.
  • IoC abstraction is much more involved in Caliburn than Micro. Also, Caliburn maintains adapters for major containers.
  • Caliburn services are pluggable via interface. Micro is partially pluggable via public static Fun<...> fields for major features.
  • Caliburn supports AOP and Micro does not.
  • Caliburn has a Validation abstraction. Micro does not.
  • Caliburn has a module framework. Micro does not.
  • Caliburn has an infrastructure for background processing and ExpressionTree-Based runtime delegate generation. Micro does not.
  • Caliburn has a much more advanced Inflector than Micro.
  • Caliburn has a Testability framework.
  • Caliburn has a ViewModelFactory. Micro does not.
  • Caliburn's Parameter implementation can handle "dotting" through properties. Micro cannot.
  • Caliburn supports filters. Micro only supports a Can* guard to Action execution.
  • Micro's Trigger/Action mechanism is built on System.Windows.Interactivity. Caliburn's is custom (it predates the MS implementation).
  • Caliburn has a full Dispatcher abstraction. Micro only abstract UI thread invocation.
  • Caliburn has screen subjects. Micro does not.
  • Micro does not support custom IViewStrategies or the ViewAttribute.
  • Caliburn caches metadata and attempts to optimize a lot more.
  • The conventions implementations are drastically different between the two, though the support the same conventions.
  • Caliburn has abstractions for DeepLinking storage and IsolatedStorage while Micro does not.
  • Caliburn has an InputManager. Micro does not.
  • Caliburn has a ShellFramework. Micro does not.

Last edited Feb 2, 2011 at 5:07 PM by EisenbergEffect, version 3

Comments

Farris Jan 25, 2011 at 8:48 PM 
Thanks for putting this together. I was laboring under only the differences I knew about - mainly the validation disparity.

It would be good to know more about the roadmap of the two in relation to each. Are you planning to merge them? If not, are you planning to normalize their implementation, as it were (e.g. Trigger/Action mechanism), as much as possible? Are you planning on susetting one?

If the reason to prefer Micro is because of it's light nature, it seems like the ideal thing would be to break up Caliburn into separate assemblies so that users could choose their degree of heaviness based on assembly features, if you will. I know that I'll keep using Caliburn because I don't want to paint myself into a corner that I have to make an add-on to the room to get out of (augment Micro). To me, there's not much of a down-side to Caliburn, except maybe for phone use. I work in the internal business and B2B world, so the difference in size isn't paramount. Figured I'd add that as bias disclosure.