2011-01-20 27 views
39

私は現在、WPFで少し古くなっており、最新のバージョンのPrism(これまで私がいくつかのバージョンを使用していました)とMVVM Light + Unityのアプローチ(これは私が持っていますまともな例 - URLは良いだろう)。MVVM Light + UnityまたはPrism?

私のプロジェクトは、複数の開発者によって書かれた複数のモジュールで構成される大きなプロジェクトになります。また、ファンシードッキング/ワークスペースのレイアウトマネージャーを使って素敵なワークスペースをセットアップするために、サードパーティ製のコントロールスイートを導入するための資金もあります。

今すぐプロジェクトを最初から開始していた場合は、どのような理由がありますか?その理由は何ですか? 特定の推奨アーキテクチャパターンの詳細は便利です(例えば、モジュールdllの自動検出?ロギングサービスの注入?)。 基本的には、どんな考えやアドバイスも良いでしょう。良い話し合いをしたいのですが。おそらく、あなたが入ることを示唆する別の方向性があるでしょうか?私は非常に研究段階にあり、できるだけ多くの情報を提供したいと考えています。

私は、Prism/MVVM Lightフォーラムより偏向された視点が少なくなると考えていたので、ここに載せましたが、この質問のためのより適切な場所がある場合は、その方向を教えてください。

答えて

55

モジュール性が必要な場合は、Prismを参照してください。 PrismにはMVVM(DelegateCommandやCompositeCommandなど)のお手伝いをするいくつかの要素がありますが、別のMVVMフレームワークではさらに完成したと思います。

数日前にプリズムをモデル化する方法について質問がありました。 Prismの機能を検討する方法の詳細については、それを確認してください。 High Level Modelling Advice for Prism MVVM

ユニティはコントロールコンテナの反転の実装であり、間違いなく良いですが、プリズムは他のコンテナを使用できます。 MEF(.NET 4.0に組み込まれています)をサポートしていますが、これはあなたの唯一の選択肢ではありません。プリズムに含まれるいくつかのサンプルを見て、どのようなアプローチが良いかを決めます。私の意見では、UIの合成に関して、Unity自体は完全ではありません。 MVEFフレームワーク+ IoCフレームワークアプローチを使用してUIを合成しようとする場合、MEFはより近い選択肢になります。

MVVM Lightは、実際にはPrismのフレームワークです。考慮すべきその他のMVVMフレームワーク:

  • MVVM財団(非常に軽量...小さなプロジェクトのために良い)
  • カリバーン(非常に堅牢なフレームワーク)
  • カリバーンマイクロ(株名とカリバーンからの著者が、
  • ReactiveUI(以前の "ReactiveXAML"。これは脳のメルターのビットですが、Reactive Extensions for .NET(Rx)を学ぶと、このフレームワークは単に素晴らしいです...私の意見では魔法のように)

私が新しいプロジェクトを始めるなら、私はPrismとReactiveUIに行くだろう。

プリズム大規模なプロジェクトでモジュール性を持たなければならず、単にDLLを削除または追加するだけで大​​量の機能を削除したり追加したりする機能が好きです(DLLスニッフィング機能を実装する必要はありませんちょうどIoC + MVVMのアプローチで)。テストが容易で、デバッグが容易で、別々の開発が容易です。ニースの周り。

最近のUIプログラミングでは、ほとんどの時間がUIスレッドで時間を管理するために費やされます。ブロッキングはノー・ノーです...ユーザーはUIのフリーズを望んでいません。彼らはアニメーションGIF待機シンボルが回転しているのを見て、あなたのデータがロードされている間に他の何かに取り組むことができることを知りたいと思っています。さらに、アプリケーションの価値の大部分は、異種のシステムからデータを取り込んでUIにまとめることです。優れた合成システム(Prism)が必要なだけでなく、優れたMVVMフレームワークも必要です非同期操作をそのパンとバターとして扱う... ReactiveUIはそれです。

+0

これに遅れて申し訳ありませんが、突然他のプロジェクトが優先され、これが私の心の後ろに押し込まれました。 非常に役に立ちましたが、私が指摘してくれた他のスレッドやフレームワークを見ていきます。 – David

+0

私は、Prismの構成の側面としてSilverlightのMEFとアドオンまたは置換をチェックすることをお勧めします。 –

関連する問題