連載

ASP.NET 2.0が変えるWebアプリ開発の世界

第8回 新キャッシュ&コールバック機能でパフォーマンス改善

山田 祥寛
2005/03/26
Page1 Page2 Page3

○データベース・キャッシングを確認してみる

 それではまず、dbcache.aspxのWebページにアクセスしよう。

初回アクセス時のサンプル・プログラムの実行結果

 次に、データベースを変更しないままで120秒以内にページを参照する。

2回目アクセス時のサンプル・プログラムの実行結果

 初回アクセス時と最終更新日時が変わっておらず、メモリ上のキャッシュ・データが使われていることが確認できるはずだ。

 しかし、今度は、wingsデータベース上のmasterテーブルの内容を更新したうえでアクセスしてみるとどうだろうか。

データベースを変更した場合のサンプル・プログラムの実行結果

 確かに、最終更新日時が変更されており、データベース更新のタイミングで、キャッシュ・データもリフレッシュされたことが確認できるはずだ。

●<軽い>ポストバックを実現する「クライアント・コールバック」

 いまさら繰り返し述べるまでもなく、ASP.NETの代表的な特徴の1つとして、従来のWindowsアプリケーションに限りなく近い「イベント駆動モデル」を提供している点が挙げられる。イベント駆動モデルの導入によって、開発者がプログラミング時に「Web」を意識しなければならない局面は限りなく少なくなったはずだ。

 しかし、ASP.NETにおけるイベント駆動モデルはあくまで「疑似的」なものであり、Windowsアプリケーションのそれとは異なることに注意しなければならない。

 というのも、Windowsアプリケーションでは、原則として、クライアントで発生したイベントはクライアントで処理される。しかし、ASP.NETではクライアントで発生したイベントは、いったんサーバにポストバックされたうえで、サーバ側で処理される。つまり、ASP.NETではイベントが発生するたびにページ内で生成されるすべての状態データ(ビューステート)をサーバに送信しなければならないため、効率が悪い。また、イベントが発生するたびにページ全体をリフレッシュしなければならないため、エンドユーザーにとっては画面のちらつきなども気になるところだろう。

ASP.NETのイベント処理の仕組み
ASP.NETにおけるイベント駆動モデルはあくまで「疑似的」なものだ。ASP.NETではクライアントで発生したイベントは、いったんサーバにポストバックされたうえで、サーバ側で処理される。

 しかし、ASP.NET 2.0から導入されたクライアント・コールバックを利用することで、<軽い>ポストバックを実現することができる。

 クライアント・コールバックとは、XML-HTTP(=HTTPベースでXML形式のデータをやり取りする方法)によって実現されるコールバック処理のことで、これを利用すると、ポストバックのときのようにイベント処理のたびにページ全体をリフレッシュする必要がなくなる。

 XML-HTTPによるコールバックでは、JavaScriptなどのクライアントサイド・スクリプトからサーバにリクエストを発行し、その結果をクライアントサイド・スクリプトの関数により受け取ることができる。この関数はリクエストの処理完了時に自動的に呼び出される(コールバックされる)ことになる。

 この仕組みを利用して、イベント処理に必要なデータだけがサーバに送信され、処理結果のみクライアントに送信されるというわけだ。当然、大きなページになれば、パフォーマンスの大幅な改善が期待できるし、ページのちらつきなども(当然)発生しない。

 実行にはInternet Explorer 5.0以降が必要であり、クライアントの環境には依存するものの、利用ユーザーが限られたイントラネットなどの環境では有効な機能といえるだろう。

 それでは実際に、クライアント・コールバックを利用した例を見てみよう。


 INDEX
  ASP.NET 2.0が変えるWebアプリ開発の世界
  第8回 新キャッシュ&コールバック機能でパフォーマンス改善
    1.「データベース・キャッシング」でキャッシング機能を強化
  2.<軽い>ポストバックを実現する「クライアント・コールバック」
    3.クライアント・コールバックを利用した例
 
インデックス・ページヘ  「ASP.NET 2.0が変えるWebアプリ開発の世界」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間