Prismで学ぶデザインパターン
2017/06/18
Prismって何?
現在はオープンソースになっていますがその昔、マイクロソフトのサイトにpatterns & practices(p & Pと略されていたり)と言うページがありました。(今でも残ってました)patternsはデザインパターン、practicesはベストプラクティスの意味だと思います。アプリを設計する際こうしておけば後々苦労しないよ、という匠達のノウハウ集です。Prismは5.0までここで公開されていました。
なんとそれ以前はComposite Application Guidance for WPFとして公開されていたようで、
このあたり見ると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あたりがサンプル多いのでは(確認してないので嘘かも)
ドキュメントはどこ?
使われているデザインパターン
- Adapter(アダプタ)
- Application Controller Pattern(アプリケーション コントローラー パターン)
- Command Pattern(コマンドパターン)
- Composite and Composite View(コンポジットパターン)
- Dependency Injection Pattern(依存性の注入)
- Event Aggregator Pattern(イベントアグリゲーター)
- Façade Pattern(ファサードパターン)
- Inversion of Control Pattern(制御の反転)
- Observer Pattern(オブザーバーパターン)
- Model-View-ViewModel Pattern(MVVMパターン)
- Registry Pattern(レジストリパターン)
- Repository Pattern(リポジトリパターン)
- Separated Interface and Plug-In(インターフェイスの分離とプラグイン)
- Service Locator Pattern(サービスロケーター)