次の方法で共有


概要 : ASP.NET Web サイトの計画

更新 : 2007 年 11 月

Web サイトの作成にあたって、ページの作成およびコードの記述を開始する前に、サイトの計画を立てておくと便利です。事前にサイトの計画を立てておくと、サイトおよびサイト ナビゲーション全体の作成が容易になります。

多くの場合は、Web サイトのサイズによって、どの程度の計画を行う必要があるかが決まります。静的な情報のみを提供するパンフレットのようなタイプの小規模な Web サイトは、比較的基本的なサイトであり、計画も簡単なもので済みます。データ ストアへのアクセス、ユーザーの認証、およびローカリゼーションの制約とアクセシビリティの制約への対応を行う Web サイトでは、計画事項は多くなります。計画を立てておくと、サイトの開発と保守に関する時間を節約できます。

以下のトピックでは、Web サイト全体に関連する情報について説明します。次の情報が含まれています。

  • 選択する Web サイトの種類。

  • サイト内の移動方法。

  • サイトのすべてのページに対し一貫した外観およびレイアウトを作成する方法。

  • データ ストアのデータにアクセスする方法。

Web サイト プロジェクトの種類の決定

Visual Studio 2008 で作成できるプロジェクトは 2 種類あります。既定の Web サイト プロジェクト モデルでは、プロジェクトのコンテンツを定義するファイル ディレクトリ構造が使用されます。このモデルにはプロジェクト ファイルが存在せず、ディレクトリ内のすべてのファイルによりプロジェクトが構成されます。

一方、Web アプリケーション プロジェクトでは、ソリューションのプロジェクト ファイルで明示的に参照されているファイルのみでプロジェクトが構成されます。これらのファイルはソリューション エクスプローラに表示されます。ビルド時にコンパイルされるのは、これらのファイルのみです。

Web アプリケーション プロジェクトのプロジェクト ファイルにより、一部のシナリオをより簡単に実装できます。たとえば、異なるプロジェクト ファイルでファイルを参照することで、単一の ASP.NET アプリケーションを複数の Visual Studio プロジェクトに分割できます。また、プロジェクトからのファイルの除外も簡単です。

以下を行う場合、Web アプリケーション プロジェクトを使用します。

  • 大規模な Visual Studio .NET 2003 アプリケーションを Visual Studio 2008 に移行する。

  • 出力アセンブリの名前を制御する。

  • スタンドアロン クラスを使用して、ページ クラスおよびユーザー コントロール クラスを参照する。

  • 複数の Web プロジェクトを使用して Web アプリケーションを構築する。

  • コンパイル時にビルド前のステップおよびビルド後のステップを追加する。

データ ストアのデータへのアクセス

ASP.NET のデータ バインディングを使用すると、コンポーネントをデータ ソースにバインドしたり、単純なプロパティ、コレクション、式、およびメソッドにバインドしたりできます。これにより、データベースやその他のソースからデータを使用する場合に、非常に柔軟に使用できます。

Web サイトからデータ ストアにアクセスする場合、データ ソース コントロールの使用を検討する必要があります。これは、これらのコントロールが共通するデータ パターンの一部であるためです。このデータ パターンでは、Web サイトのプレゼンテーション層を形成する Web ページからデータ アクセス コードとビジネス ロジック コードが分離されます。データ アクセス層は、データ ストアにアクセスするために使用されるメソッドで構成されます。ビジネス ロジック層は、データ アクセス層にルールを追加します。たとえば、データを表示できるユーザーまたはデータを変更できるユーザーを制限するアクセス制限などのルールです。プレゼンテーション層は、データの表示および変更のためにユーザーがアクセスするページで構成されます。これらの層の作成については、「チュートリアル : ASP.NET でのデータ アクセス層とビジネス ロジック層の作成」を参照してください。

ASP.NET のデータ ソース モデルを使用して、データ層およびビジネス ロジック層からプレゼンテーション層を分離することで、この共通のデータ パターンを実装できます。LinqDataSourceObjectDataSource、および SqlDataSource などの各コントロールを使用して、プレゼンテーション層から分離したデータ アクセス層とプレゼンテーション層を作成します。

また、Web サイトでインメモリ (キャッシュ) データを使用する必要があるかどうかも検討する必要があります。アプリケーション データの重要な部分が頻繁には変更されず、またそれらをセッションまたはユーザーが共有する場合、Web サーバーのメモリ内にそれらのデータを保持できます。これにより、データベースへの要求の数を削減すること、およびユーザーの操作を高速化することができます。インメモリ データベースを作成するには、DataSet クラスを使用します。DataSet オブジェクトには、もう 1 つ便利な点があります。このオブジェクトを使用すると、アプリケーションで、1 つ以上のデータ ソースからデータのサブセットをアプリケーション空間に取り込むことができます。その後、データのリレーショナル形状を維持したまま、アプリケーションでメモリ内のデータを処理できます。

サイト ナビゲーション

サイトが拡大し、サイトでのページ間の移動量が増すと、すぐにすべてのリンクを管理するのが困難になる可能性があります。ASP.NET のサイト ナビゲーションは、サーバー コントロールとクラスで構成されます。これらを使用すると、ユーザーは一貫した方法でサイト内を移動できます。すべてのページへのリンクを 1 か所 (通常は XML ファイル) に保存できます。各ページの一覧またはナビゲーション メニューにこれらのリンクを表示するには、SiteMapDataSource コントロールを組み込んでサイト情報を読み込みます。次に、TreeView コントロール、Menu コントロールなどのナビゲーション サーバー コントロールを使用して、サイト情報を表示します。

ASP.NET のサイト ナビゲーションの主要部分は、サイト マップ プロバイダです。これは、サイト マップ データ ソースを扱い、ナビゲーション情報を公開するクラスです。たとえば、既定の ASP.NET サイト マップ プロバイダは、Web.sitemap という名前の XML ファイルからサイト マップ データを取得し、そのデータを SiteMapPath Web サーバー コントロールに直接送信します。

Web サイトの一貫した外観の定義

ASP.NET テーマ、ASP.NET マスタ ページなど、ASP.NET のいくつかの機能を使用すると、Web サイトの一貫した外観およびデザインを作成して維持できます。これらの機能は、Web サイトに一貫した外観を与えるために、サイト開発プロセスの早い段階で使用できます。

ASP.NET テーマは、Web サイトのページおよびコントロールの外観を定義します。ASP.NET テーマには、ASP.NET Web サーバー コントロールのプロパティ設定を定義するスキン ファイルを含めることができます。またテーマには、カスケード スタイル シート ファイル (.css ファイル) とグラフィックも含めることができます。テーマを適用することで、Web サイト内のページに一貫した外観を与えることができます。開発プロセスの早い段階でサイトに対しテーマまたはテーマのセットを作成すると、それらのテーマを、作成する新しい個々のページに適用できます。テーマの詳細については、「ASP.NET のテーマとスキンの概要」を参照してください。

ASP.NET マスタ ページを使用すると、Web サイトの選択したページ (コンテンツ ページ) に適用できるページ レイアウト (マスタ ページ) を作成できます。マスタ ページを使用すると、一貫した外観のサイト作成が容易になります。また、マスタ ページは入れ子にできます。たとえば、1 つのマスタ レイアウトを作成してサイト全体に適用し、別のマスタ レイアウトを作成してサイトの個々のセクションに適用するには、入れ子になったマスタ ページを使用します。また、テーマとマスタ ページを併用することもできます。マスタ ページの詳細については、「ASP.NET マスター ページの概要」および「入れ子にされた ASP.NET マスタ ページ」を参照してください。

AJAX 機能の追加

ASP.NET の AJAX 機能を使用することにより、応答性に優れ使いやすいユーザー インターフェイス (UI) 要素が用意された、ユーザーが利用しやすい Web ページをすばやく作成できます。また、ポストバックせずにページを更新できるようになります。AJAX 機能には、ブラウザ間の ECMAScript (JavaScript) テクノロジとダイナミック HTML (DHTML) テクノロジを組み込んだクライアント スクリプト ライブラリ、ASP.NET サーバー ベース開発プラットフォームとの統合機能などが含まれます。AJAX 機能を使用することで、Web アプリケーションのユーザー エクスペリエンスと効率を向上させることができます。詳細については、「ASP.NET AJAX の概要」を参照してください。

状態管理機能の使用

HTTP は状態のないプロトコルです。要求が到着するとそれぞれ処理され、処理が終了すると、すべてのデータが破棄されます。複数の要求にまたがって状態を保持することはできません。これは、同じクライアントからの要求であっても同じです。しかし、ほとんどの Web アプリケーションでは、複数の要求にまたがって状態を保持できると便利です。

ASP.NET には、顧客情報やショッピング カートの内容など、複数のページ要求にまたがる情報を格納できる直感的な状態管理機能が用意されています。アプリケーション固有の情報、セッション固有の情報、ページ固有の情報、ユーザー固有の情報、および開発者が定義した情報を保存して管理できます。ASP.NET には、Cookie、ビュー ステート、セッション状態、アプリケーション状態、プロファイル プロパティなど複数の状態管理方式があり、任意のものを選択できます。このような情報は、ページ上のコントロールに依存しないようにできます。

Web サイトを計画する場合、必要な状態管理方式はどれかを検討する必要があります。詳細については、「ASP.NET の状態管理の概要」を参照してください。

パフォーマンスを高めるためのデータのキャッシュ

頻繁にアクセスされるデータ、および作成に長い処理時間を必要とするデータをメモリに格納しておくと、多くの場合、Web サイトのパフォーマンスを向上させることができます。たとえば、アプリケーションが複雑なロジックを使用して大量のデータを処理し、レポートとしてデータを返す場合、ユーザーがそのレポートを要求するたびに再作成することは避けた方が適切です。同様に、アプリケーションに複雑なデータを処理するページが含まれていて、そのページの更新の頻度がそれほど高くない場合、要求があるたびにサーバーでこのページを再作成するのは効率的ではありません。

ASP.NET キャッシュは、Web サイトに対応した汎用的なキャッシュ機能です。このキャッシュ機能には、キャッシュのためのシンプルなインターフェイスと、有効期限サービスと依存関係の変更サービスを公開する高度なインターフェイスが用意されています。前に述べたような状況でアプリケーションのパフォーマンスを向上させるために、ASP.NET には 2 つのキャッシュ機構が用意されています。1 つはアプリケーション キャッシュで、これを使用すると、生成されるデータ (DataSet、カスタム レポートのビジネス オブジェクトなど) をキャッシュできます。2 番目のキャッシュはページ出力キャッシュで、ページを処理した出力をキャッシュに保存し、ユーザーが再びページを要求したときにページを再処理する代わりにキャッシュに保存した出力を再利用します。Web サイトのデザインにおいて特定のページをキャッシュすると、より効率的な Web サイトを作成できます。

セキュリティ インフラストラクチャ

ASP.NET には、.NET Framework のセキュリティ機能に加えて、ユーザー アクセスの認証および承認や、その他のセキュリティ関連タスクを実行するためのセキュリティ インフラストラクチャが用意されています。IIS が提供する Windows 認証を使用することで、ユーザーを認証できます。または、ASP.NET フォーム認証と ASP.NET メンバシップを使用することによっても、認証を管理できます。さらに、Windows グループ、またはカスタム ロール データベースと ASP.NET ロールを使用して、Web アプリケーションのリソースにアクセスするための承認を管理できます。これらのスキームは、アプリケーションでの必要性に応じて簡単に削除、追加、または置換できます。詳細については、次のトピックを参照してください。

ASP.NET は常に特定の Windows ID で実行されるので、NTFS ファイル システムのアクセス制御リスト (ACL: Access Control List) などの Windows 機能とデータベース アクセス許可を使用することで、アプリケーションをセキュリティで保護できます。ASP.NET が実行時に基づく ID の詳細については、「ASP.NET プロセス ID の構成」および「ASP.NET の偽装」を参照してください。

その他の注意事項

このセクションのトピックについても、Web サイトのコーディングを開始する前に検討する必要があります。これらのトピックの情報を計画に組み入れることで、時間を節約すること、および現在の Web の標準にサイトを準拠させることができます。

ユーザー補助

ユーザー補助プログラミングは、コンピュータのオペレーティング システムを操作して、動作や視覚の障害などの特定の障害に対応するアプリケーションを設計および開発するプロセスです。ASP.NET を使用すると、障害を持つユーザーがアクセスできる Web アプリケーションを作成できます。ユーザー補助 Web アプリケーションでは、ユーザーがスクリーン リーダーなどの補助技術を使用して Web ページを操作できます。ユーザー補助 Web アプリケーションには次のような利点があります。

  • 非常に広範囲にわたるユーザーが利用できます。

  • 障害を持つユーザーだけでなく、多くの場合すべてのユーザーに利点のあるデザイン原則が適用されます。

  • すべての Web アプリケーションにユーザー補助機能を備えることを求める多くの機関の要件を満たします。

ユーザー補助ガイドラインと ASP.NET でこれらのガイドラインを満たす方法について理解すると、障害を持つユーザーが簡単に操作できるアプリケーションを作成できます。ユーザー補助ガイドラインの詳細については、「ASP.NET におけるユーザー補助のサポート」を参照してください。

ほとんどの場合、ASP.NET コントロールは、ユーザー補助標準を満たすページを作成するマークアップをレンダリングします。これらは、ページでユーザー補助機能を有効にするために設定できるプロパティを公開していることもあります。ただし、ASP.NET コントロールは一部のユーザー補助標準には準拠しない出力を表示する場合があります。詳細については、「ASP.NET コントロールとユーザー補助」を参照してください。

グローバリゼーションとローカリゼーション

グローバリゼーションとは、複数のカルチャで使用できるアプリケーションをデザインおよび開発するプロセスです。ローカリゼーションとは、特定のカルチャおよびロケールを対象にアプリケーションをカスタマイズするプロセスです。さまざまな言語のユーザーが閲覧する Web ページを作成する場合、ユーザーがそれぞれの使用言語でページを表示できるようにする必要があります。ASP.NET を使用すると、ブラウザの優先言語設定またはユーザーの明示的な言語選択に基づいてコンテンツとその他のデータを取得できるページを作成できます。このコンテンツとその他のデータはリソースと呼ばれ、リソース ファイルやその他のソースに保管できます。ASP.NET Web ページでは、リソースからコントロールのプロパティ値を取得するようにコントロールを構成します。実行時には、リソース式が適切なリソース ファイルのリソースで置き換えられます。詳細については、「ASP.NET Web ページのリソースの概要」を参照してください。

個々のページのビルドとプリコンパイル

ページまたは Web サイトのビルドは、サイト開発の一部であり、サイト内で発生するコンパイル時エラーを見つけることが目的です。ビルドではページがコンパイルされますが、配置できるアセンブリは生成されません。

Web サイト内のすべてのファイルを運用サーバーにコピーすることにより、コンパイルなしでサイトを配置できます。ユーザーが運用サーバーのページを要求すると、ASP.NET によってサイトが動的にコンパイルされ、Visual Studio でビルド プロセスを実行するのと同じ手順が効率的に実行されます。このとき、要求のたびにページを再コンパイルしなくて済むように、ASP.NET により出力結果がキャッシュされます。

アセンブリや配置する他のファイルにサイトをコンパイルする必要がある場合には、サイトを公開できます。公開では、ビルドと同じコンパイル処理が実行されますが、その出力結果が運用サーバーに配置できるフォルダとサブフォルダに保存されます。

詳細については、「ASP.NET 配置の概要」を参照してください。

参照

概念

ASP.NET の概要