1

私は、プリズムを非常に強く支持しているWPFアプリケーションで他の開発者と協力していますが、その利点を理解していません。依存性注入フレームワークと EventAggregator を使用したモジュール性のアイデアが得られました。しかし、これら 2 つのことがなければ、Prism を使用することの主な利点はありますか?

基本的に、ビューを動的にロードしてリージョンに配置する必要がある理由がわかりません。開発中にビューがどこに行くのかがわかっているのに、そこから変更されることはありません。

私がオンラインで見つけたものはすべて、DI の利点が Prism の唯一の利点であると述べています。不足しているものはありますか?

4

3 に答える 3

1

PRISMは、モジュール方式でアプリケーションを構成するためのフレームワークを提供します。したがって、ビューをリージョンに挿入する必要はありませんが、より柔軟になります。さまざまなビューでより簡単に遊んで、それらを自分の地域に注入することができます。

DIはおそらくPRISMの最も使用されている機能であり、間違いなくそれを使用する最も説得力のある理由であることに同意します。一般に、PRISMを使用する必要はありません。特に、アプリが十分に小さい場合は、PRISMを使用する必要はありませんが、将来の変更に対してより柔軟になります。コンポーネントのデカップリングは優れており、PRISMはそれを実現する手段を提供します(唯一の手段ではありません)。

HTH。

于 2012-06-07T19:33:20.590 に答える
1

私の私見

PRISM についてのあなたの考えが間違っているところ:

  • PRISMはフレームワークです。したがって、任意の部分を独立して使用できます。それは、DI コンテナー、ナビゲーション フレームワーク、EventAggregator、DelegateCommand、NotificationObject、モジュール構造、リージョン、および他の多くのものです。
  • DI はPRISM とは一切関係ありません。これは独立したものです。Unity (または MEF、ただしこれは真の DI コンテナーではありません) は、 PRISMなしで簡単に使用できます。PRISM は、すべての統合を提供するだけです。

PRISM についての私の考え:

  • 「彼らはそれから決して変わらないだろう」 - もしあなたがすでにそれを知っているなら、このプロジェクトから離れてください. プロジェクトが変更されない場合、それは死んでいます。私の経験から、プロジェクトが生きていれば、何でも変更できます。変わらないものも。私は 1 つの保険会社と非常に密接に仕事をしていましたが、彼らは 1 つのことは決して変わらないと言っていました。彼らには数十万のクライアントがありました。そして 5 年 (!!!) 年後に変更されました... とてもクールでした。神に感謝します。私はいつも、何でも変えることができると思っています。
  • PRISM のもう 1 つの長所は「標準化」です。標準クラスはすべて同じ名前で、同じプロパティとメソッドを持ち、プロジェクトには標準構造などがあります。
  • PRISM の領域は、XAML の DI に類似しています。あなたはそれなしでそれを行うことができますか?もちろんできます。しかし、繰り返しますが、これは「標準的な」方法です。あなたは非常に簡単に別のプロジェクトにジャンプすることができ、お互いに「貧乏人フレームワーク」を研究することはありません.

繰り返しますが、これは私の私見です。確かに、私は間違っている可能性があります..

于 2012-06-08T12:51:32.060 に答える
0

私はリージョンとナビゲーションを多用しています。あなたのシナリオには当てはまらないかもしれませんが、私の場合、(ナビゲーション経由で) TabControl で開く複数のビューがあります。パラメーター (クエリ文字列) を渡し、ターゲット (NavigationAware) を制御できることは、私にとって大きな問題です。

Customers と Orders を含む UI があるとします。顧客とその注文が表示されます。特定の注文をクリックすると、別のページが開きます。次のようなナビゲーションで注文ビューにアクセスできます。

  1. /オーダービュー

  2. /OrderView?OrderKey=123

最初のものはあなたのビューを開きます。2 番目のものが開き、必要な注文に移動します。注文ビューから顧客ビューへのリンクを配置することもできます

/CustomerView - 新規顧客画面を開きます

/CustomerView?CustomerKey=123 - 顧客を開くか、すでに開いていたビューに戻ります。

このようなシナリオが気になる場合は、PRISM が役に立ちます。

あなたのチームが同じビューでリージョンを使用している場合、あまりメリットはありません。そして、私はこのような地域を持っていません。

別の使用例:

領域を持つ MenuStackPanel があります。ユーザーのアクセス許可に応じて、アプリケーションはこのユーザーが使用できるモジュールをロードします。モジュールがロードされると、モジュールはそのピースを登録し、メニューにオプションを入力します。

于 2012-06-07T23:51:35.947 に答える