アプリケーション アーキテクチャ ガイド 2.0
更新日: 2011 年 4 月 25 日
このガイドは、開発者とソリューション アーキテクトが、十分に試行されて信頼できるアーキテクチャ、設計原理、およびパターンを活用することによって、マイクロソフト プラットフォームと .NET Framework で実行する効果的で高品質のアプリケーションを少ないリスクですばやく構築できるようにすることを目的としています。
このガイドでは、優れたアプリケーション アーキテクチャとアプリケーション設計の堅固な基盤を提供する基になる原理とパターンの概要を紹介します。
著作権
このドキュメントに記載されている情報 (URL 等のインターネット Web サイトに関する情報を含む) は、将来予告なしに変更することがあります。別途記載されていない場合、このソフトウェアおよび関連するドキュメントで使用している会社、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、出来事などの名称は架空のものです。実在する商品名、団体名、個人名などとは一切関係ありません。お客様ご自身の責任において、 適用されるすべての著作権関連法規に従ったご使用を願います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡、あるいは検索システムに格納または公開することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。
マイクロソフトは、このドキュメントに記載されている内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。別途マイクロソフトのライセンス契約上に明示の規定のない限り、このドキュメントはこれらの特許、商標、著作権、またはその他の無体財産権に関する権利をお客様に許諾するものではありません。
© 2009 Microsoft Corporation. All rights reserved.
Microsoft、MS-DOS、Windows、Windows NT、Windows Server、Active Directory、MSDN、Visual Basic、Visual C++、Visual C#、Visual Studio、および Win32 は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
記載されている会社名、製品名には、各社の商標のものもあります。
はじめに
1. ソフトウェアのアーキテクチャと設計
このセクションは、アーキテクチャと設計の基礎を理解するのに役立つ一連のトピックで構成されています。まず、ソフトウェア アーキテクチャとその重要性について説明します。要件や制約、ユーザー、ビジネス、アプリケーションを実行するシステムの共通部分など、考慮しなければならない一般的な問題についても取り上げます。その後、基本的な設計原則の定義、現在一般的に使用されているアーキテクチャのパターンとスタイルについて説明し、最後にアーキテクチャを設計する際に推奨する手法を紹介します。
第 1 章: ソフトウェア アーキテクチャとは [XPS、936 KB | PDF、883 KB]
ソフトウェア アプリケーション アーキテクチャは、技術上および運用上のすべての要件を満たす構造化されたソリューションを定義して、パフォーマンス、セキュリティ、管理容易性など、一般的な品質特性を最適化するプロセスです。これには、さまざまな要因に基づいた判断を下す必要があります。この判断は、品質、パフォーマンス、管理容易性、およびアプリケーションの全体的な成功に大きな影響を及ぼす可能性があります。
第 2 章: ソフトウェア アーキテクチャの基本原理 [XPS、883 KB | PDF、829 KB]
この章では、ソフトウェア アーキテクチャの主要な設計原理とガイドラインを紹介します。ソフトウェア アーキテクチャは、システムの構成や構造だとされています。この "システム" とは、特定の機能または一連の機能を実行するコンポーネントのコレクションのことを表します。
この章のガイドラインでは、アプリケーションのアーキテクチャを設計する際に考慮すべき、さまざまな関連領域を取り上げます。
第 3 章: アーキテクチャのパターンとスタイル [XPS、1.10 MB | PDF、1.02 MB]
この章では、現在アプリケーションで一般的に使用されている高度なパターンと原理について説明します。これらは "アーキテクチャ スタイル" と呼ばれ、クライアント/サーバー アーキテクチャ、レイヤー型アーキテクチャ、コンポーネント ベースのアーキテクチャ、メッセージ バス アーキテクチャ、サービス指向アーキテクチャ (SOA) などのパターンがあります。この章では、それぞれのスタイルに関して、概要、基本原理、主なメリット、およびアプリケーションに適したアーキテクチャ スタイルを選択するのに役立つ情報を提供します。
2. 設計の基礎
このセクションは、レイヤー型アーキテクチャの基礎を理解するのに役立つトピックで構成されています。プレゼンテーション レイヤー、ビジネス レイヤー、データ レイヤー、サービス レイヤーなど、多くのアプリケーションで一般的に使用されているレイヤーについての実用的なガイドを提供します。
第 4 章: アーキテクチャと設計の手法 [XPS、1.29 MB | PDF、1.21 MB]
この章では、使用する候補となるアーキテクチャについて考えたりその概要を作成したりするために使用できる反復手法について説明します。この章は、このガイドで説明する主要な決定事項 (品質特性、アーキテクチャ スタイル、アプリケーションの種類、テクノロジ、配置に関する決定など) を 1 つにまとめるのに役立ちます。
第 5 章: レイヤー型アプリケーションのガイドライン [XPS、909 KB | PDF、843 KB]
この章では、アプリケーションの全体的な構造を、相互に通信したり、他のクライアントやアプリケーションと通信したりする個別のレイヤーにコンポーネントを論理的にグループ化することによって説明します。
この章では、アプリケーションを別個の論理的な区分に分割する方法、アプリケーションに適した機能レイアウトを選択する方法、およびアプリケーションで複数の種類のクライアントをサポートする方法について紹介します。また、レイヤーでロジックを公開するために使用できるサービスについても概説します。
第 6 章: プレゼンテーション レイヤーのガイドライン [XPS、1.13 MB | PDF、1.06 MB]
この章では、アプリケーションのプレゼンテーション レイヤーの設計に関する主要なガイドラインを示します。このガイドラインは、一般的なレイヤー型アプリケーション アーキテクチャにプレゼンテーション レイヤーにおける位置付け、プレゼンテーション レイヤーに通常含まれるコンポーネント、およびプレゼンテーション レイヤーの設計時に直面する主な問題について理解するのに役立ちます。また、設計、推奨される設計手順、関連する設計パターン、およびテクノロジの選択肢に関するガイドラインも紹介します。
第 7 章: ビジネス レイヤーのガイドライン [XPS、1.08 MB | PDF、1.03 MB]
この章では、アプリケーションのビジネス レイヤーの設計に関する主要なガイドラインを示します。このガイドラインは、一般的なレイヤー型アプリケーションのアーキテクチャにおけるビジネス レイヤーの位置付け、ビジネス レイヤーに通常含まれるコンポーネント、およびビジネス レイヤーの設計時に発生する主要な問題について理解するのに役立ちます。また、設計、推奨される設計手順、関連する設計パターン、およびテクノロジの選択肢に関するガイドラインも紹介します。
第 8 章: データ レイヤーのガイドライン [XPS、1.17 MB | PDF、1.10 MB]
この章では、アプリケーションのデータ レイヤーの設計に関する主要なガイドラインを示します。このガイドラインは、一般的なレイヤー型アプリケーション アーキテクチャにおけるデータ レイヤーの位置付け、データ レイヤーに通常含まれるコンポーネント、およびデータ レイヤーの設計時に発生する主要な問題について理解するのに役立ちます。また、設計、推奨される設計手順、関連する設計パターン、およびテクノロジの選択肢に関するガイドラインも紹介します。
第 9 章: サービス レイヤーのガイドライン [XPS、1.14 MB | PDF、1.07 MB]
サービスを通じてアプリケーションの機能を提供する場合は、サービスの機能を別個のサービス レイヤーに分離することが重要です。この章は、アプリケーション アーキテクチャにおけるサービス レイヤーの位置付けについて理解し、サービス レイヤーの設計手順を学ぶのに役立ちます。また、サービス レイヤーの設計時に発生する一般的な問題に関するガイダンスを提供し、サービス レイヤーを設計する際に使用する主要なパターンとテクノロジに関する主要な考慮事項についても説明します。
第 10 章: コンポーネントのガイドライン [XPS、1.05 MB | PDF、0.98 MB]
コンポーネントでは、他の機能から切り離して配布およびインストールできる、特定の単位に含まれる一連の機能を分離する方法を提供します。この章では、コンポーネントの作成に関する一般的なガイドラインをいくつか紹介します。また、このガイドの他の章で取り上げているレイヤー型の手法で設計したアプリケーションの各レイヤーで一般的に使用するコンポーネントの種類についても説明します。
第 11 章: プレゼンテーション レイヤーのコンポーネントの設計 [XPS、1.19 MB | PDF、1.11 MB]
この章では、プレゼンテーション レイヤーに含まれるユーザー インターフェイス コンポーネントとプレゼンテーション ロジック コンポーネントを設計する際に従う必要がある手順について説明します。
まず、UI の要件を理解し、適切なテクノロジを選択する必要があります。適切なテクノロジを選択したら、プレゼンテーション ロジックとデータを UI コントロールにバインドする方法を決定できます。また、UI でのエラー ハンドルと検証に関する要件も理解する必要があります。この章の以降のセクションでは、プレゼンテーション レイヤーのコンポーネントを設計する手順について詳しく説明します。
第 12 章: ビジネス レイヤーのコンポーネントの設計 [XPS、0.78 MB | PDF、0.71 MB]
この章では、まず、アプリケーションの設計で一般的に使用される、さまざまな種類のビジネス コンポーネントについて概説します。その中でも特に、ビジネス ロジック コンポーネントに主眼を置きます。また、アプリケーションの設計、トランザクションの要件、および処理の規則のさまざまな側面が、採用する設計にどのような影響を及ぼすかについても取り上げます。要件を理解したら、その要件をサポートする設計パターンに重点を置いて説明します。
第 13 章: ビジネス エンティティの設計 [XPS、0.78 MB | PDF、0.72 MB]
この章では、ビジネス エンティティ コンポーネントの設計について説明します。まず、さまざまなデータ形式と、データがアプリケーションで使用される方法を確認します。次に、選択したデータ形式によって、設計にビジネス ルールを実装する方法がどのように決まるかを説明します。最後に、カスタム オブジェクトの設計オプションを紹介し、さまざまなデータ形式でシリアル化をサポートする方法について説明します。
第 14 章: ワークフロー コンポーネントの設計 [XPS、0.96 MB | PDF、0.91 MB]
この章では、さまざまなシナリオを考察し、ワークフロー コンポーネントの設計方法についてのガイダンスを提供します。まず、実際のシナリオと主要なワークフロー シナリオの対応を確認して、アプリケーションに適したワークフロー スタイルを特定できるようにします。次に、要件と規則が、ワークフロー コンポーネントの実装で使用できるオプションに、どのような影響を及ぼすかを考察します。最後に、使用可能なさまざまなオプションをサポートするワークフロー コンポーネントの設計についてのガイダンスを提供します。
第 15 章: データ レイヤーのコンポーネントの設計 [XPS、0.87 MB | PDF、0.81 MB]
この章では、データ コンポーネントを設計する基本的な手順を理解するのに役立つ情報を提供します。まず、アクセスするデータに関連する制約を特定します。制約を特定すると、適切なデータ アクセス テクノロジを選択するのに役立ちます。次に、マッピングの方針を選択して、データ アクセスの手法を決定します。この時点で、使用するビジネス エンティティとエンティティの形式も特定します。その後、データ アクセス コンポーネントをデータ ソースに接続する方法を決定できます。最後に、データ ソースの例外を管理するためのエラー ハンドル戦略を決定します。
第 16 章: 品質特性 [XPS、0.84 MB | PDF、0.78 MB]
この章では、アプリケーションの設計時に考慮する必要がある品質特性について解説します。この章を最大限に活用するには、まず、次のセクションの表を使用して、品質特性がシステムとアプリケーションの品質要因にどのように対応しているかを理解し、各品質特性の説明を確認します。その後、品質特性ごとに主要なガイドラインを提示しているセクションを使用して、その特性が設計に及ぼす影響を理解し、このような問題に対処するために判断が必要な事項を特定します。この章ではすべての品質特性を紹介しているわけではなく、アーキテクチャに関して適切な検討を行う出発点となる情報を提供していることに注意してください。
第 17 章: 横断的関心事 [XPS、1.10 MB | PDF、1.03 MB]
この章では、アプリケーションで横断的関心事が果たす役割を理解し、アプリケーション内で横断的関心事が使用される領域を特定するための情報を提供します。また、横断的関心事を設計する際の一般的な問題について説明します。
第 18 章: 通信とメッセージ [XPS、0.89 MB | PDF、0.83 MB]
この章では、適切な通信手法を選択し、選択した手法で最高の結果を得るための方法を理解して、発生する可能性があるセキュリティと信頼性に関する問題の予測に役立つ設計ガイドラインを示します。ただし、この章の大部分では、適切なメッセージ ベースの通信メカニズムの設計と、非同期通信および同期通信、データ形式、パフォーマンス、セキュリティ、相互運用性、および実装テクノロジの選択に関するガイドラインに重点を置いて説明します。
3. アプリケーションの原型
このセクションは、一般的なアプリケーションの種類ごとに、その機能、メリット、およびデメリットを理解するのに役立つトピックで構成されています。1 つ目のトピックでは、Web アプリケーション、モバイル アプリケーション、リッチ クライアント アプリケーション、サービス アプリケーション、RIA など基本的な種類のアプリケーションに関する概要を提供します。それ以降のトピック (章) では、各アプリケーションの種類の詳細について説明します。また、ホストされているクラウド ベースのサービス、SharePoint や Microsoft Office を活用するアプリケーションなど、特殊な種類のアプリケーションについて説明します。
第 19 章: 物理ティアと配置 [XPS、1.38 MB | PDF、1.29 MB]
この章では、分散スタイルと非分散スタイルなど、さまざまな種類のアプリケーションの配置に使用できるオプション、アプリケーションの拡張方法、およびパフォーマンス、信頼性、セキュリティの各問題についてのガイダンスとパターンについて説明します。設計プロセスの一環としてアプリケーションで可能な配置シナリオを考慮することで、技術的なインフラストラクチャの制限事項によりアプリケーションを正常に配置できなかったり設計要件を達成できなかったりする事態を回避できます。
第 20 章: アプリケーションの種類の選択 [XPS、0.99 MB | PDF、0.92 MB]
この章では、このガイドで紹介するアプリケーションの種類、必要なトレードオフ、およびアプリケーションを選択することによる設計への影響について理解するのに役立つ情報を提供します。この章を読むと、シナリオと要件に適したアプリケーションの種類を決定できるようになります。この章では、5 つの基本的なアプリケーションの原型について簡単に説明し、詳細情報を提供している他の章へのリンクを提示します。
第 21 章: Web アプリケーションの設計 [XPS、1.15 MB | PDF、1.08 MB]
この章では、Web アプリケーションの設計に関する一般的な考慮事項と主要な特性について紹介します。具体的には、レイヤー型構造のガイドライン、パフォーマンス、セキュリティ、および展開のガイドライン、主要なパターンとテクノロジに関する考慮事項などについて説明します。
第 22 章: リッチ クライアント アプリケーションの設計 [XPS、1.23 MB | PDF、1.14 MB]
この章では、リッチ クライアント アプリケーションの使用に関する主要なシナリオ、リッチ クライアント アプリケーションで使用されるコンポーネント、およびリッチ クライアント アプリケーションの設計に関する重要な考慮事項について説明します。また、リッチ クライアント アプリケーションの配置シナリオと、リッチ クライアント アプリケーションを設計する際の主要なパターンとテクノロジに関する考慮事項についても紹介します。
第 23 章: リッチ インターネット アプリケーションの設計 [XPS、1.20 MB | PDF、1.12 MB]
この章では、リッチ インターネット アプリケーション (RIA) の主要なシナリオについて説明し、RIA で使用されるコンポーネントについて説明します。また、RIA の設計に関する重要な考慮事項についても紹介します。具体的には、パフォーマンス、セキュリティ、および配置のガイドラインに加え、RIA を設計する際の主要なパターンとテクノロジに関する考慮事項についても説明します。
第 24 章: モバイル アプリケーションの設計 [XPS、1.15 MB | PDF、1.08 MB]
この章では、モバイル アプリケーションが適切なソリューションとなる場合や状況、およびモバイル アプリケーションの設計に関する重要な考慮事項を理解するのに役立つ情報を提供します。モバイル アプリケーションに含まれるコンポーネント、モバイル アプリケーション固有の問題 (配置、消費電力、同期など)、および主要なパターンとテクノロジに関する考慮事項についても説明します。
第 25 章: サービス アプリケーションの設計 [XPS、1.15 MB | PDF、1.07 MB]
この章では、サービスの性質と使用方法、さまざまなサービスのシナリオに関する一般的なガイドライン、およびサービスの主要な特性について紹介します。また、サービス アプリケーションのレイヤーに関するガイドラインや、パフォーマンス、セキュリティ、配置、パターン、およびテクノロジに関する考慮事項の観点から検討する必要がある主な要素についても説明します。
第 26 章: ホストされているクラウド サービス [XPS、1.30 MB | PDF、1.21 MB]
この章では、リモートでホストされているサービスやアプリケーションを構築して使用するための、新しい成長中のテクノロジや手法を紹介します。このようなサービスやアプリケーションは、インターネット経由でアクセスして、クラウドと呼ばれる場所で実行することから、一般に "クラウド コンピューティング" と呼ばれます。
この章では、クラウドでホストされているサービスやアプリケーションの性質と使用方法を理解するのに役立つ情報を提供します。また、メリット、設計に関する一般的な問題、およびこのようなアプリケーションを構築して使用する際に発生する制約やテクノロジに関する考慮事項についても説明します。
第 27 章: Office Business Application の設計 [XPS、1.25 MB | PDF、1.16 MB]
この章では、Office Business Application (OBA) について説明し、一般的な OBA アーキテクチャと関連コンポーネントを示します。OBA の使用が適している一般的なシナリオについて説明し、OBA の設計に関する考慮事項と重要なパターンについてのガイダンスを提供します。また、Microsoft Office SharePoint Server (MOSS) および基幹業務 (LOB) アプリケーションと OBA の統合に関する情報も提供します。
第 28 章: SharePoint LOB アプリケーションの設計 [XPS、1.02 MB | PDF、0.98 MB]
この章では、典型的な SharePoint 基幹業務 (LOB) アプリケーションのアーキテクチャとこのアプリケーションに含まれているコンポーネントを紹介します。また、SharePoint LOB アプリケーションの主要なシナリオと設計に関する重要な考慮事項についても説明します。さらに、SharePoint LOB アプリケーションを設計する際の、配置、主要なパターン、およびテクノロジに関する考慮事項についても紹介します。
付録
このセクションは、マイクロソフト アプリケーション プラットフォームの概要、プレゼンテーション、データ アクセス、統合に関するテクノロジの一覧表など、開発するアプリケーションのシナリオに適したテクノロジを評価して選ぶのに役立つ付録トピックで構成されています。
付録 A: マイクロソフト アプリケーション プラットフォーム [XPS、0.95 MB | PDF、0.88 MB]
この付録では、まず、マイクロソフト プラットフォームの機能の概要について説明します。この情報は、.NET Framework とマイクロソフト サーバー テクノロジを対象とするアプリケーションの作成に慣れていない場合に、適切なテクノロジを特定するのに役立ちます。
付録 B: プレゼンテーション テクノロジ [XPS、0.84 MB | PDF、0.76 MB]
この付録は、プレゼンテーション テクノロジを選択する際に必要となるトレードオフについて理解するのに役立ちます。また、特定のテクノロジによる設計への影響を把握したり、シナリオやアプリケーションの種類に基づいて使用するプレゼンテーション テクノロジを選択したりする際にも役立ちます。
付録 C: データ アクセス テクノロジ [XPS、0.89 MB | PDF、0.83 MB]
この付録は、データ アクセス テクノロジを選択する際に必要となるトレードオフについて理解するのに役立ちます。また、特定のテクノロジによる設計への影響を把握したり、シナリオやアプリケーションの種類に基づいて使用するデータ アクセス テクノロジを選択したりする際にも役立ちます。
付録 D: 統合テクノロジ [XPS、0.70 MB | PDF、0.64 MB]
この付録は、統合テクノロジを選択する際に必要となるトレードオフについて理解するのに役立ちます。また、特定のテクノロジによる設計への影響を把握したり、シナリオやアプリケーションの種類に基づいて使用する統合テクノロジを選択したりする際にも役立ちます。
付録 E: ワークフロー テクノロジ [XPS、0.68 MB | PDF、0.63 MB]
この付録は、ワークフロー テクノロジを選択する際に必要となるトレードオフについて理解するのに役立ちます。また、各テクノロジによる設計への影響を把握したり、シナリオやアプリケーションの種類に基づいて使用するワークフロー テクノロジを選択したりする際にも役立ちます。
付録 F: patterns & practices の Enterprise Library [XPS、0.83 MB | PDF、0.77 MB]
この付録では、patterns & practices の Enterprise Library について説明します。また、お使いのアプリケーションで Enterprise Library を使用して、ログ記録、例外ハンドル、データ アクセスなどの横断的関心事をすばやく簡単に実装する方法を紹介します。
付録 G: patterns & practices パターン カタログ [XPS、0.85 MB | PDF、0.80 MB]