2012年08月14日

ASP.NETのお作法

ASP.NETお作法

目的:WebとASP.NETの独特の仕組みとルールを知り、最初につまづく障害を取り除く。

概要:

1,Webの基本的な仕組みの説明
2,ASP.NETの基本的なイベントの流れ(どこに何を書くか)
3,ASP.NET独特の仕組み(ViewState、PostBack、Session)
4,ASP.NETの処理の流れで何が実行されているか

詳細内容:

1,Webの基本的な仕組みの説明
Webは下記の手順で動くシステムである。

 ブラウザからURLを叩く
→Webサーバーに問い合わせる(Get)
→Webサーバーで返すべきページの文字列を生成する
→Webサーバーからブラウザにページを転送する
→ブラウザがページ(html)を解析し表示する


基本的にはWebサーバーに問い合わせる以外にはクライアント(ブラウザ)側では何も処理をする事が出来ない。

2,ASP.NETの基本的なイベントの流れ(どこに何を書くか)
ASP.NETではWebサーバーにブラウザから問い合わせがあると、ある決まった順序で処理が実行される様になっている。この原則を変える事は出来ないし、この順序に合わせずに処理を書くと思ったように動かない。
イベントの流れ順は下記。
・Init
・Load
・(Validate)
・Clik etc.
・PreRender
・Render
・UnLoad

日本語表記だと
・初期化
・読込
・(検証)
・各種イベント処理
・描画前処理
・描画
・終了
・メモリ解放

それぞれに何を書くのか?
・Init → 基本は書かない。動的に生成したい物を初期化する処理を記述。
・Load → インスタンス生成時に設定したいプロパティ等を記述。
・(Validate) → 基本は書かない。検証時に記述したい処理を記述。
・Clik etc. → オブジェクトのイベント処理等を記述。
・PreRender → 描画直前に指定したい処理を記述。
・Render → 描画時の処理を記述。
・UnLoad → 基本は書かない。終了処理を記述。

おかしな動きをする時には、各イベントに記載した処理を見直し、別のイベントに記載してみる等調整してみる。それぞれのイベントに必要な処理を分散させながら書くことを身に付ければ、ASP.NETでは猛者になれる。

3,ASP.NET独特の仕組み(ViewState、PostBack、Session)
ViewState(ビューステート)
ページ上に配置された画面オブジェクトのState(状態)を、サーバーとのデータ送受信時にやり取りする技術。これにより、以前の画面オブジェクトのStateを把握しながら処理を記述できる。
送受信されるデータはアルファベットの羅列に暗号化されているため、送受信データを送信途中に取得されてもすぐには悪用されない。
デメリットとしては送受信データに本来ないデータを追加してしまうため、やり取りするデータの量を多くしてしまう。注意点は便利だからといってあまり大きな情報を載せてはいけない点。

PostBack(ポストバック)
ページ上に配置された画面オブジェクトの一部の情報だけをやり取りする技術。
活用すると一部の画面オブジェクトのみ更新させたりする事が出来る。

Session(セッション)
サーバー側でクライアントからアクセスされると、サーバー側でメモリ上にそのクライアントのインスタンスを生成しクライアント情報を保持するやり方。
ViewStateではやり取り出来ない様な大きな情報であってもサーバーの処理能力を生かして扱うことが出来る。
ただしクライアントの数だけセッション情報を作ってしまうため、あまりにも多くのクライアントからのアクセスがあるとサーバー側の処理が重くなる原因となる。
これを回避するためにセッションにはタイムアウト時間が設定されている。
ある一定時間アクセスがないとサーバー側でそのクライアントのセッション情報を削除する。

4,ASP.NETの処理の流れで何が実行されているか

・Init → 初期化。
  各画面オブジェクトのインスタンス生成。この冒頭ではViewStateも生成されていない状態。

・Load → 読み込み。
  各画面オブジェクトのインスタンスの初期処理。基本的なプロパティの初期設定等。

・(Validate) → 検証(入力値チェック)。
  受信データの値の検証を行う。Exception発生時には以降の処理で正常系を処理しない記述が必要。

・Clik etc. → 各オブジェクトのイベント処理。画面オブジェクトのイベント処理を実行する。

・PreRender → 描画直前処理。このタイミングでしか実行できない処理の実行。

・Render → 描画。ページや画面オブジェクトの実際の描画処理を実行。

・UnLoad → 終了。終了処理を実行。インスタンスのメモリ解放等も行う。


結論:

ASP.NETでサーバーとの通信が発生すると、サーバー側でページの処理をするのに「初期化→読込→・・中略・・→描画」という手順が毎回発生する。

これはWindosアプリの画面の場合、何かする度に毎回画面を「閉じて→開いて」をやっているのと同じ事になる。

この特殊さを理解してコードを書かないといけない言語である。

posted by 敏腕プログラマー at 07:58| プログラム言語解説 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。