Web Formsとは

ASP.NET Web Formsは、ASP.NET Web アプリケーション フレームワークの一部であり、Visual Studio に含まれています。 これは、ASP.NET Web アプリケーションの作成に使用できる 4 つのプログラミング モデルの 1 つであり、その他は MVC、ASP.NET Web ページ、ASP.NET シングル ページ アプリケーション 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 言語を使用できます。

注意

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 アプリケーション プログラミングは、従来のクライアント ベースのアプリケーションをプログラミングするときに通常発生しない課題を提示します。 課題の 1 つを次に示します。

  • 豊富な Web ユーザー インターフェイスの実装 - 基本的な HTML 機能を使用してユーザー インターフェイスを設計して実装するのは困難で面倒な場合があります。特に、ページに複雑なレイアウト、大量の動的コンテンツ、およびフル機能のユーザー対話型オブジェクトがある場合。
  • クライアントとサーバーの分離 - Web アプリケーションでは、クライアント (ブラウザー) とサーバーは、多くの場合、異なるコンピューター (および異なるオペレーティング システムでも) で実行される異なるプログラムです。 その結果、アプリケーションの 2 つの半分は、ほとんど情報を共有します。これらは通信できますが、通常は単純な情報の小さなチャンクのみを交換します。
  • ステートレス実行 - Web サーバーは、ページに対する要求を受信すると、ページを検索して処理し、ブラウザーに送信して、すべてのページ情報を破棄します。 ユーザーが同じページを再度要求すると、サーバーはシーケンス全体を繰り返し、ページを最初から再処理します。 別の言い方をすると、サーバーには処理されたページのメモリがなく、ページはステートレスです。 そのため、アプリケーションでページに関する情報を保持する必要がある場合、そのステートレスな性質が問題になる可能性があります。
  • 不明なクライアント機能 - 多くの場合、さまざまなブラウザーを使用して多くのユーザーが Web アプリケーションにアクセスできます。 ブラウザーにはさまざまな機能があるため、すべてのアプリケーションで等しく実行されるアプリケーションを作成するのが困難です。
  • データ アクセスの複雑 さ - 従来の Web アプリケーションでのデータ ソースからの読み取りとデータ ソースへの書き込みは、複雑でリソースを大量に消費する可能性があります。
  • スケーラビリティの複雑さ - 多くの場合、既存のメソッドで設計された Web アプリケーションは、アプリケーションのさまざまなコンポーネント間の互換性がないため、スケーラビリティの目標を達成できません。 これは、多くの場合、大きな成長サイクルの下でのアプリケーションの一般的な障害点です。

Web アプリケーションに対してこれらの課題を満たすには、かなりの時間と労力が必要な場合があります。 ASP.NET Web Formsと ASP.NET フレームワークは、次の方法でこれらの課題に対処します。

  • 直感的で一貫性のあるオブジェクト モデル - ASP.NET ページ フレームワークでは、フォームを個別のクライアントとサーバーの部分としてではなく、単位として考え出すことが可能なオブジェクト モデルが提供されます。 このモデルでは、ページ要素のプロパティを設定してイベントに応答する機能など、従来の 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 台のプロセッサを搭載した 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 ID は、アプリケーションによって作成されたデータベースにユーザーの資格情報を格納します。 ユーザーがログインすると、アプリケーションはデータベースを読み取って資格情報を検証します。 プロジェクトの Account フォルダーには、メンバーシップのさまざまな部分 (登録、ログイン、パスワードの変更、アクセスの承認) を実装するファイルが含まれています。 さらに、ASP.NET Web Formsでは OAuth と OpenID がサポートされます。 これらの認証の強化により、ユーザーは Facebook、Twitter、Windows Live、Google などのアカウントから、既存の資格情報を使用してサイトにログインできます。 既定では、テンプレートは、SQL Server Express LocalDB のインスタンス (web 用Visual Studio Express 2013 に付属する開発データベース サーバー) に既定のデータベース名を使用してメンバーシップ データベースを作成します。
  • クライアント スクリプトとクライアント フレームワーク - ASP.NET Web フォーム ページにクライアント スクリプト機能を含めることで、ASP.NET のサーバーベースの機能を強化できます。 クライアント スクリプトを使用すると、ユーザーにより充実した応答性の高いユーザー インターフェイスを提供できます。 また、ブラウザーでページが実行されている間に、クライアント スクリプトを使用して Web サーバーへの非同期呼び出しを行うこともできます。
  • ルーティング - URL ルーティングを使用すると、物理ファイルにマップされない要求 URL を受け入れるようにアプリケーションを構成できます。 要求 URL は、ユーザーが Web サイト上のページを検索するためにブラウザーに入力する URL です。 ルーティングを使用して、ユーザーにとって意味のある URL を定義し、検索エンジンの最適化 (SEO) に役立ちます。
  • State Management - 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 アプリケーションを作成するタイミングの決定

ASP.NET Web Forms モデルまたは別のモデル (ASP.NET MVC フレームワークなど) を使用して Web アプリケーションを実装するかどうかを慎重に検討する必要があります。 MVC フレームワークは、Web フォーム モデルに取って代わるものではありません。どちらのフレームワークも Web アプリケーションに使用できます 特定の Web サイトに対してWeb Forms モデルまたは MVC フレームワークを使用する前に、各アプローチの利点を検討してください。

Web フォーム ベースの Web アプリケーションの利点

Web フォーム ベースのフレームワークには、次のような利点があります。

  • HTTP 経由で状態を保持するイベント モデルがサポートされます。これは、基幹業務 Web アプリケーションの開発に有用です。 Web フォーム ベースのアプリケーションでは、数多くのサーバー コントロールでサポートされているさまざまなイベントを使用できます。
  • 個々のページに機能を追加するページ コントローラー パターンが使用されます。 詳細については、「 ページ コントローラー」を参照してください。
  • ビュー ステートまたはサーバー ベースのフォームを使用するため、状態情報の管理が容易になります。
  • Web 開発者とデザイナーで構成される小規模なチームで、RAD (Rapid Application Development) のための多数のコンポーネントを活用する場合に適しています。
  • 一般に、コンポーネント ( Page クラス、コントロールなど) は緊密に統合されており、通常は MVC モデルよりも少ないコードを必要とするため、アプリケーション開発の複雑さが少なくなります。

MVC ベースの Web アプリケーションの利点

ASP.NET MVC フレームワークには次のような利点があります。

  • アプリケーションがモデル、ビュー、およびコントローラーに分離されるため、複雑さが軽減されます。
  • ビュー状態やサーバー ベースのフォームは使用されません。 このため、MVC フレームワークは、アプリケーションの動作を完全に制御する必要がある開発者に向いています。
  • Web アプリケーションの要求を単一のコントローラーで処理するフロント コントローラー パターンが使用されます。 これにより、多機能なルーティング インフラストラクチャをサポートするアプリケーションを設計できます。 詳細については、「 フロント コントローラー」を参照してください。
  • テスト駆動開発 (TDD) のサポートが向上しています。
  • これは、アプリケーションの動作を高度に制御する必要がある開発者や Web デザイナーの大規模なチームによってサポートされている Web アプリケーションに適しています。