ホーム > コンピュータ > C# > WPF in C# > Prism

ベクトルドロー・レベルゼロ+

Prism Library 5.0 for WPFの序論 02[C# WPF Prism]

概要

MVVMパターン調べていて、Prismというツールキットを見つけました。MVVMパターンを使用するためのもっとも人気のあるツールキットのようです。

原文

Introduction to the Prism Library 5.0 for WPF」(外部サイト)の和訳です。

訳文

Introduction to the Prism Library 5.0 for WPF(外部サイト)

パターンと実践 ディベロパー・センター

Microsoft Prism Library 5.0 for WPFの開発者のガイドから:

なぜ、Prismを使用するのでしょうか?

Why Use Prism?

高機能なWPFクライアント・アプリケーションを設計・構築することは、保守に挑戦することが、柔軟で簡単になります。 この項目では、WPFクライアント・アプリケーションを構築するとき、あなたが遭遇するかもしれない一般的な難題のいくつかを示します。 そして、それらの難問に取り組むために、Prismが、あなたをどのように助けるかについて説明します。

クライアントアプリケーション開発の課題

Client Application Development Challenges

一般的に、クライアント・アプリケーションの開発者は、かなり多くの難問に取り組みます。 アプリケーションの要件は、時間とともに変更することができます。新しい商機と挑戦は、それら自身に存在するかもしれません。 新技術は、利用できるようになるでしょう。あるいは、開発サイクルの間の継続的な利用者のフィードバックでさえ、 アプリケーションの要件にかなり影響を与えるかもしれません。その結果、それで、柔軟で、時間とともに、簡単に、修正し 、拡張することができるアプリケーションを構築することは重要です。この種の柔軟性のための設計は、達成するのが困難です。 それは、アプリケーションの残りの部分に影響を与えることなく、 分離して、後で、修正や、更新することができる、独立して開発され、テストされた、 アプリケーションのそれぞれの部品を提供する、アーキテクチャが必要です。

ほとんどのエンタープライズ・アプリケーションは、おそらく、開発者の大規模なチームでさえ、複数の開発者を必要とするために、 いやというほど複雑です。それは、開発者に加えて、ユーザーインターフェイス(UI)設計者とローカライザが含まれています。 これは、アプリケーションを、どのように設計するか、決定するための重要な挑戦することができます。それで、その複数の開発者やサブチームは、 独立して、アプリケーションの異なる部分の上で、効果的に作業することができます。 それでも、アプリケーションに統合されるとき、破片が継ぎ目なく集まることは、確実です。

統一されたスタイルでアプリケーションを設計・構築することは、極めて難しく、保守することが非効率的な、 アプリケーションに導くことができます。この場合、「モノリシック」は、コンポーネントは、 極めて密接に結合したアプリケーションを参照します。そして、両者の間に明確な分離がありません。 通常は、このように設計・構築されたアプリケーションは、開発者の生活を厳しくする問題で苦しみます。 これは、新しい機能をシステムに追加したり、既存の機能を置き換えることは困難です。 それは、システムの他の部分を壊すことなく、バグを解決することは困難です。 そして、それは、テストして、配布するのが困難です。 また、それは、互いに効率的に作業するための、開発者とデザイナーの機能に衝撃を与えます。

複数の要素で構成されたアプローチ

The Composite Approach

これらの課題のための効果的救済策は、いくつかの別々の、疎く結合した、半ば独立した構成要素にアプリケーションを分割することです。 それは、続いて、首尾一貫したソリューションのためのアプリケーション「シェル」に、互いに簡単に統合できます。 このように設計・構築されたアプリケーションは、多くの場合、複合アプリケーションとして、知られています。

それらは、異なる個人やサブチームで、モジュールを個別に開発し、テストし、配布して提供します。; また、それらは、それらを、もっと簡単に新しい機能性で、修正し、拡張することができます。 それによって、アプリケーションは、もっと簡単に拡張し、保守することができます。 複数の要素で構成されたアプローチを使用して、よりテストしやすく、保守しやすいアプリケーションを作成する際に 、一人のプロジェクトさえ利益を経験できることに注目してください。

それらは、疎く結合した方法で実行する、さまざまなモジュールに寄与する、一般的なUIの構成要素で成り立つシェルを提供します。 これは、新しい機能をUIに追加する複数の開発者から生じる競合を削減します。そして、それは、一般の外観を促進します。

それらは、ログの記録と認証と、このような、あなたのアプリケーションに固有のビジネス機能のような、垂直機能のような、 アプリケーションの水平機能の間で、再使用と関心事の明確な分離を促進します。 また、これは、あなたが、より簡単に依存関係、そして、アプリケーション構成要素間の相互作用を管理することができます。

それらは、異なる個人、あるいは、特定のタスクに集中するサブチーム、 あるいは、それらの焦点や専門知識に応じた機能の一部にまかせることによって、役割の分離を維持するのを助けます。 特に、それは、UIとアプリケーションのビジネス・ロジックの間で、よりきれいな分離を提供します。 -これは、UIの設計者が、より高機能なユーザー・エクスペリエンスを作成することに、集中できることを示しています。

複合アプリケーションは、クライアント・アプリケーションの筋書きの範囲では、とても適切です。 例えば、複合アプリケーションは、対照的なバックエンドシステムに比べて、高機能なエンド・ユーザー・エクスペリエンスを作成するために理想的です。 次の説明は、複合アプリケーションのこの形式の使用例を表示します。

複数のバックエンドシステムと複合アプリケーション

複数のバックエンドシステムと複合アプリケーション

この種のアプリケーションにおいて、ユーザーは、各々は、タスク指向の焦点を提供する機能上に、複数の特定の目的のモジュールによって、 複数のバックエンドシステム、サービス、および、データ・ストアに及ぶ場所に、表示される、高機能で柔軟なユーザー・エクスペリエンスを提出できます。 アプリケーション・ロジックとUIの間の明確な分離は、アプリケーションが、同一のもの、そして、すべての構成モジュールの中の区別された外観を提供することができます。

さらに、複合アプリケーションは、役に立つことがあります。UIの構成要素が独立して進化しているとき、互いにかなり統合され、そして、別々のチームによって頻繁に維持されています。 次の図は、この種のアプリケーションのスクリーン・ショットを示します。強調されたそれぞれ領域は、UIで構成される独立した構成要素を表しています。

株トレーダー参考になる実装複合アプリケーション

株トレーダー参考になる実装複合アプリケーション

この場合、複合アプリケーションは、UIを、ダイナミックに構成できます。これは、柔軟なユーザー・エクスペリエンスを提供します。 例えば、それは、新しい機能性を、アプリケーションの実行時に、動的に追加することができます。それは、高機能なエンドユーザー・カスタマイズと拡張を可能にします。

Prismで対処されない難問

Challenges Not Addressed by Prism

Prismは、あなたが、直面するかもしれない、多くの難問に対処することを助けますが、WPFアプリケーションを構築するとき、 あなたは、あなたのアプリケーションの筋書きと要件に応じて、それに、直面するかもしれない、 他の多くの課題があります。例えば、Prismは、次に示す項目を、直接、対処しません。:

  • 不定期な接続とデータの同期
  • サービスとメッセージ送信基盤構造設計
  • 認証と認可
  • アプリケーションのパフォーマンス
  • アプリケーションのバージョン管理
  • エラー処理と耐障害性

前提条件

Prerequisites

Prismは、あなたが、WPFを実際に経験していることを前提としています。Prismが、大量に使用するいくつかの重要な概念があります。 そして、あなたは、それらに慣れる必要があります。それらは、次のものを含みます:

  • XAML(Extensible Application Markup Language)
  • WPFアプリケーションでは、言語は、宣言的に定義され、そして、ユーザー・インターフェイスを初期化します。

  • データ結合
  • これは、WPFで、どのように、UI要素が、構成要素とデータに接続されるかです。

  • リソース
  • これらは、WPFで、スタイル、データテンプレートとコントロール・テンプレートが、どのように、作成され、管理されるかです。

  • コマンド
  • これらは、ユーザー・ジェスチャーと入力が、どのように、コントロールに接続されるかです。

  • ユーザー・コントロール
  • これらは、ユーザー定義した動作やユーザー定義した外観を提供する構成要素です。

  • 依存関係プロパティ
  • これらは、設定するプロパティ・システムを有効にするために、共通言語ランタイム(CLR)を拡張します。 そして、データ結合、コマンドとイベントのルーティングのサポートの監視をします。

  • 動作
  • 動作は、簡単に、ユーザー・インターフェイスで、コントロールに適用することができる、双方向機能をカプセル化するオブジェクトです。

Prismの概要

An Overview of Prism

構造的なゴール

Architectural Goals

手引きは、設計者と開発者が、次の目的を達成するのを助けるために設計されています。:

  • WPFを使用する、独立チームによって、構築され、組み立てられ、そして、必要に応じて配布されるモジュールから、アプリケーションを作成します。
  • ユーザー・インターフェイス(UI)設計、ビジネス・ロジック実装、基盤構造コード開発のような、横断して結びつける依存関係を最小にし、 いろいろな分野で、専門化するために、結びつけることができます。
  • 独立したチーム全体で、再利用性を促進する、アーキテクチャを使用します。
  • 共通のサービスを抽象化することによって、すべてのチームが利用できる、アプリケーションの品質を増加させます。
  • 段階的に統合された新しい機能。

Prismの設計目標

Prism Design Goals

Prismは、あなたが、柔軟で、保守するのが簡単なWPFアプリケーションを、高機能な設計・構築するのを助けるために、設計されました。 Prismライブラリは、デザインパターンを実装しています。重要な構造的な設計原理を実現しています。 分離の重要性と疎結合のような、Prismライブラリで提供されるデザインパターンや能力を使用して、 あなたは、疎く結合した構成要素を使用しているアプリケーションを設計し、構築することができます。 それは、独立して進化することができます。 しかし、それは、全体的なアプリケーションに、簡単に、継ぎ目なく、統合することができます。

Prismは、関係と疎結合の分離の中心的な構造的設計原理の周辺で設計されています。 これは、Prismが、次に含まれる、多くの利点を提供できます。:

  • 再使用
  • Prismは、複数のアプリケーションで、テストされ、 統合される、コンポーネントとサービスが、簡単に開発できことで、再使用を促進します。 再使用は、ユニットでテストされたコンポーネントの再使用を通して、実行時で、依存関係の注入に通して、 簡単に見つけ出し、そして、統合されることができる、コンポーネント・レベルで達成することができます。 そして、モジュールを用いることによりアプリケーション層で、それは、アプリケーション・レベルの機能をカプセル化します。 それは、アプリケーション全体で再利用することができます。

  • 拡張性
  • Prismは、アプリケーションを作成するのに役に立ちます。 それは、コンポーネント依存関係を管理することで、拡張することが簡単です。 コンポーネントは、より簡単に統合、あるいは、実行時に代わりの実装に置き換えることができます。 そして、それは、アプリケーションをモジュールに分解するための機能を提供することによって、独立して更新し、配布することができます。 また、Prismライブラリそれ自身のコンポーネントの多くは、拡張、あるいは、置き換えることができます。

  • 柔軟性
  • 新しい機能が開発され、統合されるように、より簡単に更新できることで、 Prismは、柔軟なアプリケーションを作成するのに役に立ちます。 また、Prismは、WPFアプリケーションを、共通のサービスとコンポーネントを使用して開発することができます。 アプリケーションは、最も適切な方法で、配布し、利用することができます。 また、それは、アプリケーションが、役割に基づいた異なる経験と構成を提供することができます。

  • チーム開発
  • Prismは、チーム開発を促進します。 別々のチームが開発することを可能にすることによって、そして、独立したアプリケーションの異なる部品さえ配備します。 Prismは、横断して結びつける依存関係を最小限にするのを助けます。そして、チームは、異なる機能分野でフォーカスできます。 (UIデザイン、ビジネス・ロジックの実装と基盤構造コード開発のような)、 あるいは、異なるビジネス・レベルの機能領域に、(profile、sales、inventoryやlogisticsのような)。

  • 品質
  • Prismは、アプリケーションの品質を向上することに役立ちます。 共通のサービスとコンポーネントを提供することによって、開発チームに、完全に、利用できるように、テストされ、作成されます。 加えて、共通のデザインパターンの完全にテストされた実装を提供することによって、そして、手引きは、それらを完全に活用するために必要です。 Prismは、開発チームが、基盤構造コードを実装して、テストする代わりに、アプリケーションの要件に重点を置くことができます。

Prismが設計されたことに、注目することは重要です。 それで、あなたは、それぞれ、または、一斉に、どんなPrismの能力とデザインパターンでも使用できます。 あなたの要件とあなたのアプリケーション筋書きに依存します。 Prismは、大きな構造変化を必要とせずに、段階的に採用されることができるように、設計され、 あなたが、特定のアプリケーションのために、意味がある、能力とデザインパターンを使用することができます。

最後に、ソフトウェアの検査は、最上の開発作業と考える必要があるため、 そして、しっかりと開発プロセスに組み込まれ、Prismは、ソフトウェア検査のさまざまな種類のために、 広範囲なサポートを提供しています。それによって、あなたは、テストするのが簡単なアプリケーションを設計・構築することができます。 Prismそれ自体は、テストすることを意識して開発されました。 これは、確実に、Microsoftセキュリティ基準を満たすために、複数の厳しい品質のゲートを満たすために開発されました。 そして、それは、複数のオペレーティング・システムとVisual Studioの複数のバージョン、そして、複数の開発言語上で正しく機能します。 単体テストは、各々のチェックインの後に、実行されました。 加えて、Prismライブラリは、次に示す表で一覧に示されるように、複数の追加された品質のゲートに対してテストされました。

Test Description
合格判定試験 試験要件を駆動するために、ユーザーの筋書きを使用して、アプリケーション機能を確認します。 テストは、手で実行したり、自動することができます。
アプリケーションの構築演習 チーム・メンバーは、配布可能なソフトウェアを利用しているアプリケーションを構築します。
ブラックボックステスト 手動の受け入れテストは、ユーザーの視点から実行します。
クロスプラットフォーム・テスト すべての自動化されたテストは、複数のプラットホーム上で実行されます。
グローバリゼーションテスト すべての自動化されたテストは、複数の開発言語上で実行されます。
性能テスト 不十分な負荷で、システムの速く特定の測面が、どのように、実行するかを測定します。
セキュリティ検査 内部のMicrosoftセキュリティ監査基準は、スレッド・モデルを取り扱います。 セキュリティ分析ツールをとおして、攻撃要因を識別し、コードを実行します。
ストレス試験 極端な負荷の下で、システムの安定度を測定します;特に、特にメモリリークとスレッディングのような問題を追い出すために、探します。
ホワイトボックス法 徹底的に、ソースコードは、コーディング基準、構造、そして、それは、アーキテクチャ全体に、どのように、マッピングするかを検証します。

Prismライブラリのソースコードには、次の表に示すように、ユニットとUIのオートメーション・テストが含まれています。 あなたは、教育資源として、これらを使用することができます。あるいは、あなたは、Prismライブラリそれ自身に対して、テストを実行することができます。 これは、Prismライブラリの修正版を、Prismのチームとして同じような品質のゲートを使用して、カスタマイズ、再コンパイル、テスト、配布することができます。

Test Description
UI自動化テスト 受け入れテストの限られた範囲;ユーザーの観点からアプリケーションを駆動します。
単体テスト クラスの実装を検証します

Prismの主要な概念

Prism Key Concepts

Prismは、あなたが、よく知らないかもしれない、機能とデザインパターンを提供します。 特に、あなたが、デザインパターンと複合アプリケーション開発に不慣れな場合、 この項目は、Prismの背後にある、中心となる概念の概要を簡単に提供します。 そして、用語の一部を定義します。あなたが、ドキュメンテーションとコードを通して使用するのを見るでしょう。

  • モジュール
  • モジュールは、必要に応じて、独立して開発、テスト、配布することができる、機能のパッケージです。 多くの状況では、モジュールは、別々のチームにより、開発され、保守されます。 典型的な、Prismアプリケーションは、複数のモジュールから構築されます。 モジュールは、特定のビジネスに関連する機能を表すために、使用することができます。 (例えば、プロファイル管理)、そして、その機能を実装するために、すべてのビュー、サービス、そして、必要とされるデータモデルをカプセル化します。 また、モジュールは、共通のアプリケーション基盤構造やサービスをカプセル化するために、使用することができます。 (例えば、ログの記録と例外管理サービス)それは、複数のアプリケーションにわたって、再利用することができます。

  • モジュールのカタログ
  • 複合アプリケーションでは、モジュールは、ホスト・アプリケーションで、実行時に見つけ、読み込まれる必要があります。 Prismでは、モジュール・カタログは、読み込まれ、並べられるとき、読み込まれているモジュールを、指定するために使用されます。 モジュール・カタログは、ModuleManagerとModuleLoaderコンポーネントによって使用されます。 それは、モジュールをダウンロードするための役割を果たします。それらが、リモートの場合、モジュールを初期化するために、 アプリケーション・ドメインに、モジュールのアセンブリを読み込みます。Prismは、モジュール・カタログを、異なる方法で指定することができます。 コードを使用して、XAMLを宣言的に使用して、あるいは、設定ファイルを使用して、プログラムに組み込まれます。 また、あなたは、行う必要がある場合、ユーザー定義したモジュール・カタログを実装することができます。

  • シェル
  • シェルは、モジュールが読み込まれている、ホスト・アプリケーションです。 シェルは、アプリケーションの全体のレイアウトと構造を定義しますが、それは、一般的に、それをこれから格納する、 正確なモジュールを知りません。これは、通常、共通のアプリケーション・サービスと基盤構造を実装しますが、 ほとんどのアプリケーションの機能と内容は、モジュールの内に実装されます。 また、シェルは、最上位のウィンドーや視覚的な要素を提供します。 それは、続いて、ロード済みモジュールに提供される、異なるUIコンポーネントを格納するでしょう。

  • View
  • ビューは、特定の機能のためのUIやアプリケーションの機能分野をカプセル化するUIコントロールです。 ビューは、MVVMパターンと一緒に使用されます。それは、UIとアプリケーションのプレゼンテーション・ロジックとデータの間で、 懸念事項を明確に分離するために使用されます。ビューは、UIをカプセル化するために使用され、ユーザーとの対話処理動作を定義します。 それによって、ビューは、独立して、根底にあるアプリケーションの機能を、更新し、置き換えることができます。 ビューは、View Modelクラスと相互作用するために、データ結合を使用します。

  • View Model
  • View modelは、アプリケーションのプレゼンテーション・ロジックと状態をカプセル化するクラスです。 それらは、MVVMパターンの一部です。 View modelは、アプリケーションの機能の多くをカプセル化します..View modelは、ビュー内のコントロールに、 データ結合することができる、プロパティ、コマンドとイベントを定義します。

  • Model
  • Modelクラスは、アプリケーションデータとビジネス・ロジックをカプセル化します。 それらは、MVVMパターンの一部として、使用されます。Modelは、データの整合性と完全性を確実とするために、 データと関連する妥当性検証とビジネス・ルールをカプセル化します。

  • コマンド
  • コマンドは、いくつか、アプリケーションの機能をカプセル化するために、使用されます。 それは、それらを、定義し、アプリケーションのUIを独立してテストすることができます。 それらは、コマンド・オブジェクトとして、あるいは、View Modelのコマンド・メソッドとして定義できます。 Prismは、DelegateCommandクラスとCompositeCommandクラスを提供します。 後者は、互いにすべての呼び出されたコマンドの、コレクションを示すために使用されます。

  • Region
  • Regionは、アプリケーションのUIの範囲内で定義する、論理的なプレースホルダです。 (シェルやビューの中で)中に、そのビューが表示されます。Regionは、アプリケーション・ロジックに変更を必要とすることなく、 アプリケーションのUIの配置を更新できます。多くの共通のコントロールは、Regionとして使用されることができます。ビューは、 ContentControl、ItemsControl、ListBox、TabControlような、コントロール内に、自動的に表示できます。 ビューは、プログラム上で、または、自動的に、Regionの範囲内で表示されることができます。また、Prismは、 Regionでナビゲーションを実装するためのサポートを提供します。Regionは、RegionManagerコンポーネントを通して、他のコンポーネントに配置できます。 それは、特定のRegion内のビューのディスプレイを調整するために、RegionAdapterとegionBehaviorコンポーネントを使用します。

  • ナビゲーション
  • アプリケーションが、そのUIに変更を調整するプロセスとして、ナビゲーションは定義されます。 アプリケーションのユーザー相互作用、あるいは、内部のアプリケーションの状態の変更の結果を示します。 Prismは、ナビゲーションの2つのスタイルをサポートします。:すでに存在するビューの状態が、 単純なナビゲーションの筋書きで、実装するために、更新される状態に基づいたナビゲーション、 そして、アプリケーションUI内で、新しいビューが作成された、あるいは、古いビューが置き換えられた場所で表示を切り替えるナビゲーション。 ビュー切り替えナビゲーションは、柔軟なナビゲーション方式を実装するために、 PrismのRegionとともに統一リソース識別子(URI)に基づいたナビゲーション機構を使用します。

  • EventAggregator
  • 複合アプリケーションのコンポーネントは、多くの場合、疎く結合する方法でアプリケーションの他のコンポーネント、 そして、サービスと通信する必要があります。これに対応するために、Prismは、pub-subイベント機構を実装する、 EventAggregatorコンポーネントを提供します。それによって、コンポーネントは、それらの他への参照のどちらも必要とせずに、 イベントを公開でき、他のコンポーネントにそれらのイベントを追加します。EventAggregatorは、 多くの場合、互いに通信するために、異なるモジュールのコンポーネントを定義するために使用されます。

  • 依存関係注入コンテナ
  • 依存関係注入(DI)パターンは、管理されるコンポーネントの間で、依存関係を可能にするために、 Prismを通して使用されます。依存関係注入は、実行時に、コンポーネントに依存関係を実現することができます。 そして、それは、拡張性とテスト容易性をサポートします。 Prismは、UnityやMEF、あるいは、ServiceLocatorを経由して、 他の依存関係注入コンテナと一緒に動作するように設計されています。

  • サービス
  • サービスは、UIに関連していない機能をカプセル化するコンポーネントです。 ログの記録、例外管理とデータアクセスのような、サービスは、アプリケーションによって、または、モジュール内で定義することができます。 サービスは、多くの場合、依存関係注入コンテナで登録されます。それで、それらに依存する、 他のコンポーネントによって、必要、そして、使用されるように、それらは、配置、あるいは、構築できます。

  • コントローラ
  • コントローラは、アプリケーションUI内のRegionで表示される、 ビューの構築と初期化を調整するために使用されるクラスです。 コントローラは、どのビューが表示されるか決定する、プレゼンテーション・ロジックをカプセル化します。 コントローラは、構築を調整するため、そして、Region内のビューの配置に、拡張可能なURIに基づくナビゲーション機構を提供する、 Prismのビュー切替ナビゲーション機構を使用するでしょう。 アプリケーションのよりコントロールのパターンは、この責任にマッピングする抽象概念を定義します。

  • ブートストラッパー
  • ブートストラッパー・コンポーネントは、さまざまなPrismのコンポーネントとサービスを初期化するために、 アプリケーションによって、使用されます。それは、それで、どんなアプリケーション・レベルのコンポーネントとサービスでも登録するために、 依存関係注入コンテナを初期化するために、使用されます。また、それは、モジュール・カタログを構成し、 シェルのViewとView Modelやプレゼンターを初期化するために、使用されます。

Prismは、あなたが、個別に、あるいは、すべて、一緒に、前述の機能とデザインパターンを使用することができるように、 設計されています。あなたの要件とあなたのアプリケーション筋書きに依存します。あなたは、それら、すべてを採用することなく、 どんな組合せでも、MVVMパターン、モジュラー性、Region、コマンドやイベントを使用することができます。もちろん、 あなたが、利益を最大限に活用したい場合、それは、分離の重要性と疎結合を提供します。 あなたは、一般的に、多くのPrismの機能、そして、互いと連携したデザインパターンを使用するでしょう。 次の図は、代表的な、Prismアプリケーション・アーキテクチャを示しています。 そして、Prismのすべてのさまざまな能力が、複数のモジュールが複合したアプリケーションの内で、どのように、互いに動作するかを示します。

複合したアプリケーション

Prismライブラリによる代表的な複合アプリケーション・アーキテクチャ

Typical composite application architecture with the Prism Library

ほとんどのPrismアプリケーションは、最上位のビューを表示するためのRegionと共有サービスを定義する、 読み込み済みのモジュールで、アクセスされることができる、シェル・アプリケーションから構成されています。 シェルは、適切なように、モジュールが、起動時に、指定するために、読み込まれることになっている適当なカタログを定義します。 また、依存関係注入コンテナが、定義されます。それは、実行時に、コンポーネントの依存関係を実現することができます。 共有サービスとコンポーネントは、アプリケーションが開始するブートストラッパーで、コンテナに登録されます。

個別のモジュールは、MVVM、定義されたビュー、View Model、モデルとサービス・コンポーネントのような、 全体的なアプリケーションの機能の一部と切り離されたプレゼンテーション・パターンを使用して、カプセル化します。 モジュールが読み込まれるとき、モジュール内で定義されたビューは、シェルで定義されるRegion内で表示されます。 初期化が完了した後、ユーザーは、続いて、状態に基づいたもの、あるいは、視覚的な更新を調整するビュー切り替えナビゲーション、 あるいは、アプリケーションのRegion内の新しいビューの表示を使用して、アプリケーション内で操作します。

Prismを使用する

Using Prism

今、あなたは、Prismがサポートする主要な機能とデザインパターンを見てきました。 あなたが、新しいアプリケーションを開発するとき、どれくらい簡単に、Prismを使用し始めることができるかについて、見る時間です。 この項目では、基本的なPrismアプリケーションを作成するために要求される、最初のいくつかの手順の概要を提供します。 あなたは、追加の機能を活用するために、この基本的なアプリケーションを拡張することができます。 そして、あなたの筋書きで必要とされるように、デザインパターンは、Prismによって、提供されます。

備考

Prismライブラリは、簡単に、新しい複数の要素で構成されたWPFアプリケーションを構築するために、使用できますが、 また、あなたは、それを、あるいは、もっと、Prismの機能やデザインパターンを利用したい既存のアプリケーションに、Prismを使用することができます。

一般的に、Prismアプリケーションは、シェル・プロジェクトと複数のモジュール・プロジェクトから構成されています。 次の図は、Prismライブラリを使用する複合アプリケーションを開発するとき、必要な共通の活動を示しています。

複合アプリケーションの共通の活動

複合アプリケーションを作成するための動作

Activities for creating a composite application

代表的なPrismアプリケーションは、Prismの機能の大部分、あるいは、すべてを活用します。 そして、デザインパターンは、早い段階で、疎結合の利益、そして、構造的な設計の関係の分離を完全に認識することができるように、記述されます。 しかしながら、この使用例のため、手順は、一つのモジュールから構成される、基本的なPrismアプリケーションを作成する必要があります。 それは、1つのビューの定義が説明されています。

備考

Prismライブラリの参照

あなたのプロジェクトのほとんどは、Prismライブラリ・アセンブリを参照する必要があるでしょう。 Prismは、NuGetパッケージを通じて、署名したバイナリを提供します。 それで、あなたは、それらに参照を追加するために、Visual Studio NuGetパッケージ管理ダイアログボックスを使用することができます。 また、あなたは、あなたのソリューションに、Prismライブラリ・プロジェクトを含めることができ、そして、それらにプロジェクト参照を使用します。 後者は、Prism型に、段階的に下げるために、Go To Definition(定義に移動)のような、機能を使用できる利点を持っています。 あなた独自の厳密な名前、あるいは、あなたのビルド・プロセスの一部の証明書で、Prismライブラリ・アセンブリを構築し、署名できるだけでなく。

シェルを定義する

アプリケーション・シェルは、アプリケーションのための基本的なレイアウトを提供します。このレイアウトは、 Regionを使用して、ビューを配置するために、使用できるモジュールが、定義されています。 次の図に示すように、シェルのようなビューは、内容が追加できる発見可能な領域を定義するために、 Regionを使用することができます。シェルは、一般的に、アプリケーション全体のための外観を設定し、 そして、アプリケーションを通して使用されるスタイルが含まれています。

アプリケーションのための基本的なレイアウト

シェル、ビューと領域

Shells, views, and regions

ブートストラッパーを作成する

Create the Bootstrapper

ブートストラッパーは、アプリケーションをPrismライブラリ・サービス、そして、UnityやMEFコンテナと結合する接着剤です。 それぞれのアプリケーションは、一般的に、UnityBootstrapperやMefBootstrapperのどちらからでも継承する、 アプリケーション固有のブートストラッパーを作成します。次の図に示すように、 あなたは、モジュール・カタログを取り付けるために、使用したい方法を決定する必要があるでしょう。 最小限、それぞれのアプリケーションは、モジュール・カタログとシェルを提供するでしょう。

既定では、ブートストラッパーは、.NET Framework Traceクラスを使用して、イベントを記録します。 ほとんどのアプリケーションは、企業ライブラリ・ログの記録のような、それら独自のログの記録サービスを提供することを、望むでしょう。 アプリケーションは、それらのブートストラッパーで、それらのログの記録サービスを提供することができます。

既定では、UnityBootstrapperとMefBootstrapperは、Prismライブラリ・サービスを有効にします。 これらは、あなたのアプリケーション固有のブートストラッパーで、無効にしたり、置き換えたりすることができます。

Prismライブラリへの結合

図表は、Prismライブラリへの結合を説明します。

モジュールの作成

Create the Module

モジュールには、特定のアプリケーションの機能の一部に、ビューとサービスが含まれています。 しばしば、これらは、別々のアセンブリにおいて、含まれ、別々のチームによって開発されます。 IModuleインターフェースを実装するクラスによって、モジュールは表されます。これらのモジュールは、 初期化の間、それらのビューとサービスを登録し、シェルに、複数のビューを追加することもできます。 あなたのモジュール発見アプローチに応じて、あなたは、あなたのモジュール・クラスに、属性を適用することを必要とするかもしれません。 あるいは、あなたのモジュールの間で依存関係を定義します。

シェルに、モジュール・ビューを追加する

Add a Module View to the Shell

モジュールは、内容を配置するために、シェルの領域を利用します。 初期化の間、モジュールは、シェルの中や追加されたものの中に、領域を配置するために、 RegionManagerを使用します。あるいは、これらの領域に、より複数のビュー、 あるいは、それらの領域の中で作成される、複数のビュー型を登録します。 RegionManagerは、アプリケーション、そして、ブートストラッパーから、 初期化された中心的なサービスを通して、領域の履歴を維持するための、役割を果たします。

Copyright (C) 2011-2016 kukekko All Rights Reserved.
kukekko@gmail.com
ご連絡の際はアドレスの@は半角にしてください。 また、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません 」。
inserted by FC2 system