web-dev-qa-db-ja.com

MVVM Light + UnityまたはPrism?

私は今WPFで少し時代遅れになっています。Prismの最新バージョン(以前にいくつかのバージョンを使用しました)とMVVM Light + Unityアプローチ(これまで行ったことがない)に関する人々の意見を聞きたいと思います。 -適切な例のURLが適切です)。

私のプロジェクトは、数人の開発者によって書かれた複数のモジュールで構成される大きなプロジェクトになります。豪華なドッキング/ワークスペースレイアウトマネージャーの1つを使用してニースワークスペースを設定するために、サードパーティのコントロールスイートを導入するための資金もあります(私は、Prismリージョンで他のリージョンよりも優れていることを知っています)。

今、プロジェクトをゼロから始める場合、何をしますか、そしてその理由は?特定の推奨アーキテクチャパターンの詳細が役立ちます(たとえば、モジュールdllの自動検出?ロギングサービスの注入?)。基本的に、どんな考えやアドバイスでもいいでしょう。良い議論をしたいのですが。おそらく、あなたが行くことを提案する別の方向性があるのでしょうか?私は研究段階にいるので、できるだけ多くの情報を入力してください。

Prism/MVVM Lightフォーラムよりも偏見が少ないと思ったので、これをここに配置しましたが、この質問により適した場所がある場合は、その方向に向けてください。

39
David

モジュール性が必要な場合は、Prismを検討してください。 Prismには、MVVMを支援するsome要素(DelegateCommandやCompositeCommandなど)がありますが、別のMVVMフレームワークを使用するとより完全になると思います。

数日前、Prismをモデル化する方法について質問がありました。 Prismの機能を検討する方法の詳細な説明については、それをチェックしてください。 Prism MVVMの高レベルモデリングのアドバイス

Unityはコントロールコンテナーの反転の実装であり、それは間違いなく優れていますが、Prismは他のコンテナーを使用することができます。 MEFのサポートが組み込まれています(つまり、.NET 4.0に組み込まれています)が、これが唯一の選択肢ではありません。 Prismに含まれているサンプルのいくつかを見て、どのアプローチがより良いかを判断してください。私の考えでは、UIはそれだけでは完全なUI合成ではありません。 UIをMVVMフレームワーク+ IoCフレームワークアプローチで合成しようとする場合は、MEFを選択する方がよいでしょう。

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

  • MVVM Foundation(非常に軽量...小規模プロジェクトに最適)
  • Caliburn(非常に堅牢なフレームワーク)
  • Caliburn Micro(Caliburnの名前と著者を共有していますが、これはMVVM Lightに似ており、いくつかの慣例があります)
  • ReactiveUI (以前は「ReactiveXAML」。これはちょっとした頭の痛い人ですが、.NET(Rx)のReactive Extensionsを学べば、このフレームワークは単に素晴らしいです...私の意見では不思議です。)

新しいプロジェクトを開始する場合は、PrismとReactiveUIを使用します。

大規模なプロジェクトにはモジュール性が必要であり、DLLを削除または追加するだけで機能の大きな単位をアプリに削除および追加できる機能が好きです(そして、DLLスニッフィングを実装する必要がないためです。 IoC + MVVMアプローチの場合と同じように機能します)。テストしやすく、デバッグしやすく、個別に開発しやすい。すべての周りニース。

最近のUIプログラミングでは、ほとんどの時間がUIスレッドでの時間の管理に費やされているため、ReactiveUIです。ブロックは不可です...ユーザーはUIのフリーズを見たくありません。彼らは、アニメーションGIFの待機シンボルの回転を確認して、データの読み込み中に他の作業を行えるようにしたいと考えています。さらに、最近アプリケーションが提供する価値の多くは、異種システムからデータを取得してUIにまとめることです...優れた合成システム(プリズム)だけでなく、優れたMVVMフレームワークも必要です。非同期操作をパンとバターとして扱います... ReactiveUIはそれです。

55
Anderson Imes