Home > C# > Toolkit > UIパターン > Prism > Prismドキュメント > Prism 6

Prismドキュメントの和訳「WPFのためのPrism Libraryの概要」

新規作成日 2017-11-16
最終更新日

原文「Introduction to the Prism Library for WPF

複合アプリケーションは、通常、高機能なユーザー・インタラクションとデータ・ビジュアライゼーションによる複数のスクリーンを特徴としています。そして、重要なプレゼンテーションとビジネス・ロジックを体系化します。これらのアプリケーションは、一般的には、複数のバックエンドシステムとサービスに相互作用し、そして、階層化アーキテクチャを使用して、物理的に複数の層にまたがって展開することができます。アプリケーションは、新しい要件と商機に対応して、その寿命にわたって、大幅に進化することが期待されます。つまり、これらのアプリケーションは、「最後に構築」され、「変更のために構築」されます。これらの特徴を要求しないアプリケーションでは、Prismを使用する利益がないかもしれません。

Prismには、参照の実装、クイックスタート、再使用できるライブラリーコード(Prismライブラリ)と広範囲なドキュメンテーションが含まれています。Prismのこのバージョンは、Microsoft .NET Framework 4.5を対象とし、Model View ViewModel (MVVM)パターン、ナビゲーションとManaged Add-in Framework(MAF)の周辺の新しい手引きが含まれています。Prismは、.NET Framework 4.5(WPFが含まれる)で構築されるため、これらの技術に精通することは、Prismを評価して、採用するために役に立ちます。

Prismを学ぶことは、開発者が、新しいかもしれない、パターンと実践の準備ができ、そして、受け入れたくなっている必要がありますが、難しくないことに着目する必要があります。経営者の理解と関与は、非常に重要です。そして、そして、プロジェクトの最終期限は、これらのパターンと実践を学ぶための優先的な時間の投資に対応する必要があります。

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

Why Use Prism?

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

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

Client Application Development Challenges

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

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

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

複合的な方法

The Composite Approach

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

複合アプリケーションには、次に示す多くの利点があります。:

  • それらは、モジュールを、異なる個人やサブチームで、個別に開発し、テストし、配布できます。;また、それらは、もっと簡単に、新しい機能で、修正し、拡張することができ、それによって、アプリケーションを、もっと簡単に拡張し、保守することができます。複合的な方法を使用して、一人のプロジェクトでも、更にテストしやすく、保守しやすいアプリケーションを作成する利点があることに注目して下さい。
  • それらは、疎く結合した方法で対話するさまざまなモジュールから、UIの構成要素で構成された共通のシェルを提供します。これは、複数の開発者が、新しい機能を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デザイン、ビジネス・ロジックの実装と基盤構造コード開発のような)、異なる機能分野に、あるいは、(プロファイル、販売、在庫、物流のような)異なるビジネス・レベルの機能領域に、フォーカスできます。
  • 品質。Prismは、共通のサービスと完全に検証された構成要素を提供し、そして、開発チームが利用できるようにすることで、アプリケーションの品質を向上することに役立ちます。加えて、共通のデザインパターンの完全にテストされた実装、そして、それらを完全に活用するために必要な手引きを提供することによって、Prismは、開発チームが、基盤構造コードを実装して、テストする代わりに、アプリケーションの要件に重点を置くことができます。

あなたが、あなたの要件とあなたのアプリケーション筋書きに依存して、個別に、Prismの機能とデザイン・パターン、あるいは、すべて、一緒にを使用するため、Prismが設計されたことに、注目することは重要です。Prismは、使用することができる機能とデザイン・パターンが、段階的に採用されることができるように、設計されました。それは、大きな構造変化を必要としない特定のアプリケーションのために、意味があります。

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

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

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

  
Prismライブラリのソースコードに含まれているユニットとUIのオートメーション・テスト
テスト 解説
UI自動化テスト 受け入れテストの限られた範囲;ユーザーの観点からアプリケーションを駆動します。
ユニット・テスト クラスの実装を検証します

Prismの主要な概念

Prism Key Concepts

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

  • モジュール。モジュールは、必要に応じて、独立して開発、テスト、配布することができる、機能のパッケージです。多くの場合、モジュールは別々のチームによって開発されて、保守されます。典型的な、Prismアプリケーションは、複数のモジュールから構築されます。モジュールは、特定のビジネスに関連する機能を表すために、使用することができます。(たとえば、プロファイル管理)そして、その機能を実装するために、すべてのビュー、サービス、そして、必要とされるデータモデルをカプセル化します。また、モジュールは、共通のアプリケーション基盤構造やサービス(たとえば、ログの記録と例外管理サービス)をカプセル化するために、使用することができます。それは、複数のアプリケーションにわたって、再利用することができます。
  • モジュール・カタログ複合アプリケーションでは、モジュールは、ホスト・アプリケーションで、実行時に見つけ、読み込まれる必要があります。Prismでは、モジュール・カタログは、読み込まれ、並べらるとき、読み込まれているモジュールを、指定するために使用されます。モジュール・カタログは、リモートの場合、それは、モジュールをダウンロードするための役割を果たすModuleManagerとModuleLoaderコンポーネントによって使用されます。モジュールを初期化するために、アプリケーション・ドメインに、モジュールのアセンブリを読み込みます。Prismは、宣言的にXAMLを使用して、あるいは、設定ファイルを使用して、プログラム的に、コードを使用することが含まれている、モジュール・カタログを、異なる方法で指定することができます。また、あなたは、行う必要がある場合、ユーザー定義したモジュール・カタログを実装することができます。
  • シェル。シェルは、モジュールが読み込まれている、ホスト・アプリケーションです。シェルは、アプリケーションの全体のレイアウトと構造を定義しますが、それは、一般的に、それをこれから格納する、正確なモジュールを知りません。これは、通常、共通のアプリケーション・サービスと基盤構造を実装しますが、ほとんどのアプリケーションの機能と内容は、モジュールの内に実装されます。また、シェルは、続いて、読み込み済みのモジュールに提供される、異なるUIコンポーネントを格納する最上位のウィンドーや視覚的な要素を提供します。
  • Viewビューは、特定の機能のためのUIやアプリケーションの機能分野をカプセル化するUIコントロールです。ビューは、UIとアプリケーションのプレゼンテーション・ロジックとデータの間で、懸念事項を明確に分離するために使用される、MVVMパターンと一緒に使用されます。ビューは、UIをカプセル化するために使用され、ユーザーとの対話処理動作を定義します。それによって、ビューは、独立して、根底にあるアプリケーションの機能を、更新し、置き換えることができます。ビューは、View Modelクラスと相互作用するために、データ結合を使用します。
  • View ModelView modelは、アプリケーションのプレゼンテーション・ロジックと状態をカプセル化するクラスです。それらは、MVVMパターンの一部です。ViewModelは、アプリケーションの機能の多くをカプセル化します。View modelは、ビュー内のコントロールに、データ結合することができる、プロパティ、コマンドとイベントを定義します。
  • ModelModelクラスは、アプリケーションデータとビジネス・ロジックをカプセル化します。それらは、MVVMパターンの一部として、使用されます。Modelは、データの整合性と完全性を確実とするために、データと関連する妥当性検証とビジネス・ルールををカプセル化します。
  • コマンド。コマンドは、それらを定義し、アプリケーションのUIを独立してテストすることができる、アプリケーションの機能をカプセル化する方法として、使用されます。それらは、コマンド・オブジェクトとして、あるいは、View Modelのコマンド・メソッドとして定義できます。Prismは、DelegateCommandクラスとCompositeCommandクラスを提供します。後者は、互いにすべての呼び出されたコマンドの、コレクションを示すために使用されます。
  • RegionRegionは、Viewが表示される中に、(シェルやViewの中で)アプリケーションのUIの範囲内で定義する、論理的なプレースホルダです。Regionは、アプリケーション・ロジックに変更を必要とすることなく、アプリケーションのUIの配置を更新できます。多くの共通のコントロールは、ContentControl、ItemsControl、ListBox、TabControlような、ビューがコントロール内に、自動的に表示できるRegionとして使用されることができます。ビューは、プログラム上で、または、自動的に、Regionの範囲内で表示されることができます。また、Prismは、Regionでナビゲーションを実装するためのサポートを提供します。Regionは、特定のRegion内のビューのディスプレイを調整するために、RegionAdapterとRegionBehaviorコンポーネントを使用するRegionManagerコンポーネントを通して、他のコンポーネントに配置できます。
  • ナビゲーション。ナビゲーションは、アプリケーションのユーザー相互作用、あるいは、内部のアプリケーションの状態の変更の結果として、アプリケーションの調整は、その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のビュー切替ナビゲーション機構を使用するでしょう。Application Controllerパターンは、この役割にマッピングする抽象概念を定義します。
  • Bootstrapper。ブートストラッパー・コンポーネントは、さまざまなPrismのコンポーネントとサービスを初期化するために、アプリケーションによって、使用されます。それは、それで、どんなアプリケーション・レベルのコンポーネントとサービスでも登録するために、依存関係注入コンテナを初期化するために、使用されます。また、それは、モジュール・カタログを構成し、シェルのViewとView Modelやプレゼンターを初期化するために、使用されます。

Prismは、あなたが、あなたの要件とあなたのアプリケーション筋書きに依存して、個別に、あるいは、両方全て、前述の機能とデザインパターンを使用することができるように設計されているため、あなたは、それら、すべてを採用することなく、どんな組合せでも、MVVMパターン、モジュラー性、Region、コマンドやイベントを使用することができます。もちろん、あなたが、分離の重要性と疎結合を提供する利益を最大限に活用したい場合、あなたは、一般的に、多くのPrismの機能、そして、互いと連携したデザインパターンを使用するでしょう。次の図は、代表的な、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アプリケーションを構築するために、使用できますが、また、あなたは、1つ以上のPrismの機能やデザイン・パターンを利用できる既存のアプリケーションに、Prismを使用することができます。

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

rismライブラリを使用する複合アプリケーションを開発するときに必要な共通の活動

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

Activities for creating a composite application

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

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

シェルを定義する

Define the Shell

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

ェルのようなビューは、内容が追加できる発見可能な領域を定義するために、Regionを使用する

アプリケーションの最上位のView

locationsという名前は、Viewが注入されるUIで制御するために、添付されます。

1つ以上のユーザー・コントロール、ページ、データ・テンプレートなど

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

Create the Bootstrapper

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

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

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

ブートストラッパーの役割

bootsrapperを開始する

初期化を実行し、シェルを表示し、モジュール・カタログを作成して、モジュールを読み込みます。

必要とするサービスと他の依存関係モジュールを注入します

最上位のウィンドウは、モジュールに寄与する内容を格納します。

アプリケーション機能のバーチャルスライス

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

モジュールの作成

Create the Module

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

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

Add a Module View to the Shell

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

ドキュメントの残りのトピックは、Prismの重要な概念についての詳細を説明します。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」