ASP.NET 4.0は、新しいメカニズムを提供している。ビューステートを有効/無効にし、以前よりも相当簡単に制御できるようにする。その状態を保存するために、 ASP.NETコントロールは今までデフォルトで有効になったビューステートを使用する。この振る舞いは、時々クライアントとサーバ間で大量のデータが転 送されるという結果になることがある。
ASP.NETのビューステートの全体的な概念は、2006年8月にDave Reed氏(リンク)によるTruly Understanding Viewstate(リンク)のブログ記事で徹底的に取り上げられた。またそれは、ASP.NETプラットフォームで作業をしているすべてのデベロッパが読むべきだ と推奨されている。Dave氏が指摘するように「ViewStateは 誤解された動物」であり、注意して扱われるべきだという。ビューステートの動作方法を経験したことがないデベロッパは、クライアントブラウザにHTMLが 返されるのを見ると時々驚く。ビューステートがどう使用されるのかを意識していないと、ユーザに返されるページのサイズは極めて大きくなり、潜在的に Webサイトのパフォーマンスが低くなる。
PDC2008で、ASP.NETのプログラムマネージャであるScott Hunter氏(リンク)がASP.NET 4.0ロードマップ(リンク)について語った。その講演で、氏は4.0でのビューステートが変化する様子について説明した。
ビューステートの、いわゆる粒度の細かい制御について話していく。それは、ページでオフにすることができ、必要とするコントロールでオンにすることができ る。オンと対比して、大量の場でオフできる。そのページではオフしたい、この3つのコントロールではオンにしたい、などと簡単に言うことができる。
要約すると、これによって以下のことが可能になる。
- ページで無効にし、特定のコントロールで有効にする。
- コントロールで無効にし、子コントロールで有効にする。
また、GridView/ListViewはビューステートなしに、さらによく動作することを保証されている。
Scott氏は、PDC2008で録音されたgetpixel8ed.com(リンク)のポッドキャストによるインタビューで、ビューステートがデフォルトで無効になるかどうか(リンク)聞かれた。
それは、まだはっきりしていない。できれば、デフォルトにしたいと思う。おそらく4.0アプリケーションを構築する場合、デフォルトでオフになる。マルチターゲットや3.5または2.0アプリケーションをしている場合、元の振る舞いになる。
Scott氏のASP.NET ロードマップに関するPDCセッション(リンク)には、ASP.NET 4.0で来るべき変更が含まれている。