Web Forms とは
ASP.NET Web Forms は、ASP.NET Web アプリケーション フレームワークの一部であり、Visual Studio に含まれています。 これは、ASP.NET Web アプリケーションの作成に使用できる 4 つのプログラミング モデルの 1 つです。その他のプログラミング モデルは、ASP.NET MVC、ASP.NET Web ページ、ASP.NET シングル ページ アプリケーション です。
Web Forms は、ユーザーがブラウザーを使用して要求するページです。 これらのページは、HTML、クライアント スクリプト、サーバー コントロール、サーバー コードの組み合わせを使用して記述できます。 ユーザーがページを要求すると、ページはフレームワークによってサーバー上でコンパイルおよび実行されます。次に、ブラウザーでレンダリングできる HTML マークアップがフレームワークによって生成されます。 ASP.NET Web Forms ページは、任意のブラウザーまたはクライアント デバイスでユーザーに情報を提示します。
Visual Studio を使用すると、ASP.NET Web Forms を作成できます。 Visual Studio 統合開発環境 (IDE) を使用すると、サーバー コントロールをドラッグ アンド ドロップして Web Forms ページをレイアウトできます。 その後、ページ上のコントロールまたはページ自体のプロパティ、メソッド、イベントを簡単に設定できます。 これらのプロパティ、メソッド、イベントは、Web ページの動作や外観などを定義するために使用されます。 ページのロジックを処理するサーバー コードを記述するには、Visual Basic や C# などの .NET 言語を使用できます。
Note
ASP.NET と Visual Studio のドキュメントには、複数のバージョンがあります。 以前のバージョンの機能を強調するトピックは、最新バージョンを使用した現在のタスクやシナリオに役立つ場合があります。
ASP.NET Web Forms には、次の特徴があります。
- Microsoft ASP.NET テクノロジに基づいています。このテクノロジでは、サーバー上で実行されるコードが Web ページ出力をブラウザーまたはクライアント デバイスに動的に生成します。
- 任意のブラウザーまたはモバイル デバイスと互換性があります。 ASP.NET Web ページでは、スタイル、レイアウトなどの機能のために、ブラウザーに準拠した適切な HTML が自動的にレンダリングされます。
- Microsoft Visual Basic や Microsoft Visual C# など、.NET 共通言語ランタイムでサポートされている任意の言語と互換性があります。
- Microsoft .NET Framework を基盤としています。 これにより、マネージド環境、タイプ セーフ、継承など、フレームワークのすべての利点が実現されます。
- ユーザーが作成したコントロールとサード パーティ製のコントロールを追加できるため、柔軟です。
ASP.NET Web Forms は、次を実現します。
- HTML やその他の UI コードをアプリケーション ロジックから分離します。
- データ アクセスを含む、一般的なタスク用の豊富なサーバー コントロールのスイート。
- 優れたツール サポートを備えた強力なデータ バインディング。
- ブラウザーで実行されるクライアント側スクリプトのサポート。
- ルーティング、セキュリティ、パフォーマンス、国際化、テスト、デバッグ、エラー処理、状態管理など、その他のさまざまな機能のサポート。
課題の克服に役立つ ASP.NET Web Forms
Web アプリケーション プログラミングでは、従来のクライアント ベースのアプリケーションをプログラミングするときには通常発生しない課題が生じます。 特に次のような課題があります。
- 豊富な Web ユーザー インターフェイスの実装 - 特に、ページに複雑なレイアウト、大量の動的コンテンツ、フル機能のユーザー対話型オブジェクトがある場合、基本的な HTML 機能を使用してユーザー インターフェイスを設計および実装するのは困難で面倒な場合があります。
- クライアントとサーバーの分離 - Web アプリケーションでは、クライアント (ブラウザー) とサーバーは、たいていは異なるコンピューター (さらには異なるオペレーティング システム) で実行される異なるプログラムです。 このため、アプリケーションのこの両半分が共有する情報は非常にわずかです。これら両半分は通信できますが、通常は少量の単純な情報しかやり取りしません。
- ステートレス実行 - Web サーバーは、ページの要求を受信すると、そのページを検索し、処理し、ブラウザーに送信してから、すべてのページ情報を破棄します。 ユーザーが同じページを再度要求すると、サーバーはシーケンス全体を繰り返し、ページを最初から再処理します。 別の言い方をすると、サーバーには、処理したページのメモリがありません。ページはステートレスです。 そのため、アプリケーションでページに関する情報を保持する必要がある場合、そのステートレスな性質が問題になる可能性があります。
- 不明なクライアント機能 - 多くの場合、多くのユーザーがさまざまなブラウザーを使用して Web アプリケーションにアクセスできます。 ブラウザーにはさまざまな機能があるため、すべてのブラウザーで同じように適切に実行されるアプリケーションの作成が困難になります。
- データ アクセスの複雑さ - 従来の Web アプリケーションでのデータ ソースの読み取りと書き込みは、複雑でリソースを大量に消費する可能性があります。
- スケーラビリティの複雑さ - 多くの場合、既存のメソッドで設計された Web アプリケーションは、アプリケーションのさまざまなコンポーネント間の互換性がないため、スケーラビリティの目標を満たすことができません。 これは、多くの場合、成長サイクルが厳しいアプリケーションにとって共通の障害点となります。
Web アプリケーションでこれらの課題に対応するには、かなりの時間と労力が必要になる場合があります。 ASP.NET Web Forms と ASP.NET フレームワークは、次の方法でこれらの課題に対処します。
- 直感的で一貫性のあるオブジェクト モデル - ASP.NET ページ フレームワークは、フォームを、個別のクライアント部分とサーバー部分としてではなく、1つのユニットとして考えることを可能にするオブジェクト モデルを提示します。 このモデルでは、従来の Web アプリケーションよりも直感的な方法でページをプログラミングできます。これには、ページ要素のプロパティを設定したり、イベントに応答したりする機能が含まれます。 また、ASP.NET サーバー コントロールは、HTML ページの物理的なコンテンツ、およびブラウザーとサーバー間の直接の対話を抽象化したものです。 一般に、サーバー コントロールは、クライアント アプリケーションでコントロールを操作する方法で使用できます。コントロールとそのコンテンツを表示および処理するために HTML を作成する方法について考える必要はありません。
- イベント駆動型プログラミング モデル - ASP.NET Web Forms は、クライアントまたはサーバーで発生するイベント用のイベント ハンドラーを記述する使い慣れたモデルを Web アプリケーションに提供します。 ASP.NET ページ フレームワークは、クライアントでのイベントのキャプチャ、サーバーへのイベントの送信、適切なメソッドの呼び出しのための基本的なメカニズムがすべて自動でユーザーからは見えないような方法で、このモデルを抽象化します。 その結果、イベント駆動型の開発をサポートする、簡単に記述された明確なコード構造を実現できます。
- 直感的な状態管理 - ASP.NET ページ フレームワークは、ページとそのコントロールの状態を保持するタスクを自動的に処理し、アプリケーション固有の情報の状態を保持する明示的な方法を提供します。 これは、サーバー リソースを大量に使用することなく実現され、Cookie をブラウザーに送信してもしなくても実装できます。
- ブラウザーに依存しないアプリケーション - ASP.NET ページ フレームワークを使用すると、サーバー上ですべてのアプリケーション ロジックを作成できるため、ブラウザーの違いを明示的にコーディングする必要がなくなります。 ただし、今までどおり、クライアント側のコードを記述することでブラウザー固有の機能を利用して、パフォーマンスを改善し、クライアント エクスペリエンスを向上させることもできます。
- .NET Framework 共通言語ランタイムのサポート - ASP.NET ページ フレームワークは .NET Framework 上に構築されているため、フレームワーク全体を任意の ASP.NET アプリケーションで使用できます。 アプリケーションは、ランタイムと互換性のある任意の言語で記述できます。 また、ADO.NET など、.NET Framework によって提供されるデータ アクセス インフラストラクチャを使用して、データ アクセスが簡略化されます。
- .NET Framework のスケーラブルなサーバー パフォーマンス - ASP.NET ページ フレームワークを使用すると、アプリケーションのロジックに複雑な変更を加えることなく、単一のプロセッサを持つ 1 台のコンピューターから複数コンピューター環境の Web ファームに Web アプリケーションをクリーンにスケーリングできます。
ASP.NET Web Forms の特徴
- サーバー コントロール - ASP.NET Web サーバー コントロールは、ページが要求されたときに実行され、ブラウザーにマークアップをレンダリングする、ASP.NET Web ページ上のオブジェクトです。 Web サーバー コントロールの多くは、ボタンやテキスト ボックスなどの使い慣れた HTML 要素に似ています。 その他のコントロールには、カレンダー コントロールや、データ ソースへの接続やデータの表示に使用できるコントロールなど、複雑な動作が含まれます。
- マスター ページ - ASP.NET マスター ページを使用すると、アプリケーション内のページ用として一貫性のあるレイアウトを作成できます。 1 つのマスター ページで、アプリケーション内のすべてのページ (またはページのグループ) に必要な外観と標準的な動作を定義します。 その後、表示する必要があるコンテンツを含む個々のコンテンツ ページを作成できます。 ユーザーがコンテンツ ページを要求すると、これらのページはマスター ページとマージされ、マスター ページのレイアウトとコンテンツ ページのコンテンツを組み合わせた出力が生成されます。
- データの操作- ASP.NET には、データの保存、取得、表示用の多くのオプションが用意されています。 ASP.NET Web Forms アプリケーションでは、データ バインド コントロールを使用して、テーブル、テキスト ボックス、ドロップダウン リストなどの Web ページの UI 要素内のデータの表示または入力を自動化します。
- メンバーシップ - ASP.NET Identity は、アプリケーションによって作成されたデータベースにユーザーの資格情報を保存します。 ユーザーがログインすると、アプリケーションはデータベースを読み取って資格情報を検証します。 プロジェクトの Account フォルダーには、登録、ログイン、パスワードの変更、アクセスの承認など、メンバーシップのさまざまな部分を実装するファイルが含まれます。 また、ASP.NET Web Forms は OAuth と OpenID をサポートしています。 これらの認証の強化により、ユーザーは Facebook、Twitter、Windows Live、Google などのアカウントから、既存の資格情報を使用してサイトにログインできます。 既定では、テンプレートは、Visual Studio Express 2013 for Web に付属する開発データベース サーバーである SQL Server Express LocalDB のインスタンスで既定のデータベース名を使用してメンバーシップ データベースを作成します。
- クライアント スクリプトとクライアント フレームワーク - ASP.NET Web Form ページにクライアント スクリプト機能を含めることで、ASP.NET のサーバー ベースの機能を強化できます。 クライアント スクリプトを使用して、より充実した応答性の高いユーザー インターフェイスをユーザーに提供できます。 また、クライアント スクリプトを使用して、ブラウザーでページが実行されている間に Web サーバーに対して非同期呼び出しを行うこともできます。
- ルーティング - URL ルーティングを使用すると、物理ファイルにマッピングされない要求 URL を受け入れるようにアプリケーションを構成できます。 要求 URL は、ユーザーがブラウザーに入力して Web サイト上のページを検索するための単なる URL です。 ルーティングを使用して、ユーザーにとって意味的にわかりやすく、検索エンジン最適化 (SEO) の役に立つ URL を定義します。
- 状態管理 - ASP.NET Web Forms には、ページ単位基準とアプリケーション全体基準の両方でデータを保持するのに役立ついくつかのオプションが用意されています。
- セキュリティ - より安全なアプリケーションの開発の重要な部分は、アプリケーションに対する脅威を理解することです。 Microsoft は、スプーフィング、改ざん、否認、情報漏えい、サービス拒否、特権の昇格 (STRIDE) の各脅威を分類する方法を開発しました。 ASP.NET Web Forms では、拡張ポイントと構成オプションを追加して、ASP.NET Web Forms のさまざまなセキュリティ動作をカスタマイズできます。
- パフォーマンス - パフォーマンスは、Web サイトまたはプロジェクトを成功させる上で重要な要因になる可能性があります。 ASP.NET Web Forms を使用すると、ページとサーバーのコントロール処理、状態管理、データ アクセス、アプリケーションの構成と読み込み、効率的なコーディング方法に関連するパフォーマンスを変更できます。
- 国際化 - ASP.NET Web Forms を使用すると、ブラウザーの優先言語設定に基づいて、またはユーザーによる言語の明示的選択に基づいてコンテンツやその他のデータを取得できる Web ページを作成できます。 コンテンツやその他のデータはリソースと呼ばれ、このようなデータはリソース ファイルまたはその他のソースに保存できます。 ASP.NET Web Forms ページでは、リソースからプロパティ値を取得するようにコントロールを構成します。 実行時に、リソース式は、ローカライズされた適切なリソース ファイルのリソースに置き換えられます。
- デバッグとエラー処理 - ASP.NET には、Web Forms アプリケーションで発生する可能性のある問題を診断するのに役立つ機能が含まれています。 デバッグとエラー処理は、アプリケーションを効果的にコンパイルして実行できるように、ASP.NET Web Forms 内で十分にサポートされています。
- デプロイとホスティング - Visual Studio、ASP.NET、Azure、IIS には、Web Forms アプリケーションのデプロイとホストのプロセスに役立つツールが用意されています。
Web Forms アプリケーションを作成するタイミングの判断
Web アプリケーションの実装時に ASP.NET Web Forms モデルと別のモデル (ASP.NET MVC フレームワークなど) のどちらを使用するかは、慎重に検討する必要があります。 MVC フレームワークは、Web Forms モデルに取って代わるものではありません。どちらのフレームワークも Web アプリケーションに使用できます。 特定の Web サイトで Web Forms モデルと MVC フレームワークルのどちらを使用するか判断する前に、それぞれの方法の利点を比較検討してください。
Web Forms ベースの Web アプリケーションの利点
Web Forms ベースのフレームワークには、次のような利点があります。
- HTTP 経由で状態を保持するイベント モデルがサポートされます。これは、基幹業務 Web アプリケーションの開発に有用です。 Web Forms ベースのアプリケーションでは、数多くのサーバー コントロールでサポートされているさまざまなイベントを使用できます。
- 個々のページに機能を追加するページ コントローラー パターンが使用されます。 詳細については、「ページ コントローラー」を参照してください。
- ビュー状態またはサーバー ベースのフォームを使用するため、状態情報の管理が容易になります。
- Web 開発者とデザイナーで構成される小規模なチームで RAD (Rapid Application Development) のための多数のコンポーネントを活用する場合に適しています。
- 一般に、コンポーネント (Page クラス、コントロールなど) は緊密に統合されており、通常は MVC モデルよりも必要なコードが少ないため、アプリケーション開発の複雑さが少なくなります。
MVC ベースの Web アプリケーションの利点
ASP.NET MVC フレームワークには次のような利点があります。
- アプリケーションがモデル、ビュー、およびコントローラーに分離されるため、複雑さが軽減されます。
- ビュー状態やサーバー ベースのフォームは使用されません。 このため、MVC フレームワークは、アプリケーションの動作を完全に制御する必要がある開発者に向いています。
- Web アプリケーションの要求を単一のコントローラーで処理するフロント コントローラー パターンが使用されます。 これにより、多機能なルーティング インフラストラクチャをサポートするアプリケーションを設計できます。 詳細については、「フロント コントローラー」を参照してください。
- テスト駆動開発 (TDD) のサポートが向上します。
- これは、アプリケーションの動作を高度に制御する必要がある開発者や Web デザイナーの大規模なチームによってサポートされている Web アプリケーションに適しています。