ASP .NET Web Formの魅力

はじめにMicrosoftのWebプラットフォームにおいて、中核とも言える役割を任されているのはWebフレームワークASP.NETです。現在、ASP.NETは大別するとASP.NET Web Form(以下、Web Form)とASP.NET MVCに分類できます。本稿では、ASP.NET登場から現

ナオキ(監修:山田祥寛)

2011年3月9日 20:00

はじめに

MicrosoftのWebプラットフォームにおいて、中核とも言える役割を任されているのはWebフレームワークASP.NETです。現在、ASP.NETは大別するとASP.NET Web Form(以下、Web Form)とASP.NET MVCに分類できます。本稿では、ASP.NET登場から現在まで利用され続けているWeb Formにフォーカスを充てて、開発のポイントやWeb Formの集大成とも言える、ASP.NET 動的データ(以下、動的データ)について解説します。

ASP.NET Web Formの特徴

前回、ASP.NET Web Formは「HTMLなどの各種要素を可能な限り隠ぺいしたサーバーコントロールの利用」と、「デスクトップアプリケーションのようなイベント駆動のアプリケーション開発」と紹介しました。ここでいま一度、ASP.NET Web Formの全体像を見てみましょう。

図1:ASP.NET Web Form概要(クリックで拡大)

クライアントサイドから各ブラウザでアクセスがあると、サーバーサイドではASPXファイル(Webページ)のインスタンスを生成します。ASPXファイルにはサーバーコントロールでページのレイアウトが定義されており、これをもとにHTMLによる応答を生成します。

続いてクライアントサイドで、何らかのイベントを発生させると、同じページに対してリクエストが送られます。イベント発生時などにASPXファイルのバックエンドなどではCookieの操作やファイル転送、出力キャッシュの制御などを行うビジネスロジックなどが記載されているかも知れません。ASP.NETでは、大抵のWebアプリケーション開発に必要なクラスライブラリが用意されているので、これらを利用してビジネスロジックを組む事ができます。ASP.NET Web Formは大体このようにしてアプリケーションが作られます。

さて、さらっと記載しましたが、今の説明の中でASP.NET Web Formの重要な機能が幾つかちりばめられていますので、それらを紐解きたいと思います。

ポストバックとViewState

イベント処理を記載すると書きましたが、ASP.NETはデスクトップアプリケーションしか開発した経験がない開発者に、HTML/CSS/JavaScriptなどの言語の記載方法やHTTPプロトコルなどの特徴を知らなくても、デスクトップアプリケーションのようにイベント駆動プログラミングができるという点を当初売りにしていました。そのため、ASP.NETフレームワーク内では他のWebフレームワークでは想像できないほどの特異な処理を多く記載しています。代表的な機能として挙げられるのは、ポストバックとViewStateです。

通常のWebアプリケーションは、クライアントサイドでイベント発生後、クライアントサイドスクリプトなどで処理を実施し、別ページに対してリクエストを送信します。

しかし、ASP.NETのポストバックは、ユーザーが入力した(もしくは選択した)データを、次のページではなく同じページに対して送信する機能です。

図2:ポストバックとは?(クリックで拡大)

ViewStateはステートレスなWebアプリケーションに対して状態を保持させる仕組みです。

Webアプリケーションは多くのリクエストに対応するためにリクエスト対応後には生成されたページを破棄します。ポストバックで戻ったページは見かけは同じでも元のページとは異なるインスタンスのページです。つまり、破棄されたページの状態を保持していません。例えば、ボタンを押すたびに数字をカウントしてラベルに表示するページを作成するとします。ここでは内部変数に数字を持たせて、ボタンを押される度にポスト前のページの内部変数に1を追加する処理を記載したとしましょう。

図3:ViewStateとは?~クリック数をラベルに表示するサンプル例~(クリックで拡大)

デスクトップアプリケーションならばこの処理で問題無く実装できますが、Webアプリケーションの場合は前述の通り、リクエストで送信されたページは同一であってもインスタンスが異なるため、内部変数はリクエストの度リセットされてしまいます。ASP.NETではこの様な内部変数などの状態を保存する仕組みとしてViewStateを提供しています。ViewStateはキーバリュー形式でデータの出し入れができます。サーバーサイドで状態保持するためにViewStateを利用した場合、hiddenフィールドにエンコードした文字列を埋め込んでクライアントサイドに生成したページを送付します。クライアントサイドでユーザーの処理を受け取り、再びポストバックした際にサーバーサイドで埋め込まれたViewStateをデコードして以前のページの情報と照らし合わせて状態の差分を知ることができる様になります。

Web Formの基本はポストバックとViewStateです。Webアプリケーション開発者にはかなり癖の強い機能ですが、ここを押さえる事でWeb Form開発がグッと身近なものに感じやすくなるでしょう。

なお、冒頭では解説していませんでしたが、ASPXファイルは、ボタンやテキストボックス等のデザイン画面のコードを記載する.aspxファイルと、それらに対するアクションで発生するイベント処理を記載する.aspx.vb(または、.aspx.cs)ファイルに分離されます。この仕組みをコードビハインドと言います。デザインとコードを明確に分離する事で、開発生産性や保守性を向上させる事ができます。

続いて、AJAX機能について解説します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30