MVVM Light と Caliburn.Micro は基本的に同じことを行いますが、MVVM では相反する「開発哲学」を使用しています。
MVVM Light は「ビュー ファースト」のアプローチです。このアプローチでは、ViewModel は View によってインスタンス化されます。MVVM Light では、これは ViewModelLocator と呼ばれるものを介して行われます。これは、パブリック プロパティをビューの DataContext に直接バインドする静的クラスです。
Caliburn.Micro は、「ビューモデル ファースト」のアプローチです。ここでは、viewmodel とビューが、2 つを結合する IOC メカニズムによって作成されていることがわかります。ViewModel へのナビゲーションに応答して生成されるビューを使用して、ViewModel から ViewModel に移動します。
どちらも異なる機能を持っています:
MVVM Light には、ビュー モデルが疎結合の方法で相互に通信できるようにするための非常に優れたメッセージング システムがあります。
MVVM Light には、デザイン時のデータをビューに挿入するための非常に単純なメカニズムがあります。基本的に、ランタイム サービスを、データをビューモデルにフィードし、ビューモデルにフィードするデザインタイム サービスに置き換えます。これにより、設計時のデータが非常に使いやすくなります。
Caliburn.Micro には驚くべきデータ バインディング設定があり、データ バインディングの足場のほとんどを処理します。基本的に、メソッドとプロパティの名前をビュー内のコントロールの名前にマップし、それらを自動配線します。これにより多くのコードが節約され、非常に優れた機能です。
Caliburn.Micro は、「Convention over Configuration」メカニズムを使用して、ビューをビューモデルにマップします。MainView は MainViewModel などにマップされます。これは、構成がないことを意味します。命名規則が整理されていることを確認するだけで済みます。
私は両方のフレームワーク (WP7 用の Caliburn.Micro と Windows 8 ストア アプリ用の MVVM Light) を使用してきましたが、さまざまな理由からどちらも気に入っています。MVVM Light の方が使い始めやすいですが、Caliburn.Micro の方がおそらく強力です。どちらも、適度に複雑なアプリケーションをすばやく作成するのに十分すぎることがわかりました。