Prismで学ぶデザインパターン

2017/06/18 WPF::Prism

Prismって何?

現在はオープンソースになっていますがその昔、マイクロソフトのサイトにpatterns & practices(p & Pと略されていたり)と言うページがありました。(今でも残ってました)
patternsはデザインパターン、practicesはベストプラクティスの意味だと思います。アプリを設計する際こうしておけば後々苦労しないよ、という匠達のノウハウ集です。Prism5.0までここで公開されていました。
なんとそれ以前はComposite Application Guidance for WPFとして公開されていたようで、当時の日本語ドキュメントが残ってました(2017/10/01)。消えたようです(2018/06/25)。
このあたり見るとShellやRegion、CompositeCommand、EventAggregatorとNameSpace変わった(Microsoft.Practices.Composite→Microsoft.Practices.Prism→Prism)だけ?と言いたくなります。
(私が昔ダウンロードしたPrismのサンプルソースのNameSpaceはMicrosoft.Practices.Compositeのままでした。気づきませんでした…)

PrismはMVVMパターンのライブラリとして有名ですが、それ以外にも色んなパターン(Dependency Injection:依存性の注入とInversion of Control:制御の反転が別物になってる…。同じものだと思ってました)が使われています。
C#でデザインパターンの勉強を始めようという場合、Prismはなかなか良い教材ではないかと思い始めました。
WPFもデザインパターンも詳しくありませんが、勉強を兼ねてまとめていけたらと思います。

Prismが目指すもの

  • 変化(仕様変更、新たな技術の登場等)に強い、拡張可能でメンテナンスが容易なアプリケーションを作る。
  • 一つの大きな塊を作るのではなく、機能単位で独立した部品を組み合わせるようにすることによって、チーム開発を容易にする。テストも容易になる。

Prismに求めてはいけないもの

  • OCC(Occasionally connected computing:モバイル端末等で回線が切れやすい環境でも同期を保つ。2008版ですが、機械翻訳ではない説明
  • サービスとメッセージのインフラストラクチャ…こんなの
  • 認証(本人確認)と承認(アプリ使用の許可)
  • アプリケーションのパフォーマンス(!)
  • アプリケーションの世代管理
  • エラー制御とフォールトトレランス

インストール

  • Nugetで。Formの付いているのはXamarin.Form用。WPFとUWPは付いていない方を選択。ContainerはDIコンテナのこと? どれも使ったことない、どれ選べばいいの?という人はマイクロソフトさんのUnityあたりがサンプル多いのでは(確認してないので嘘かも)

ドキュメントはどこ?

使われているデザインパターン

OK キャンセル 確認 その他