この特集のトップページへ
Chapter 7:プレゼンテーション層の構築

head2.gif 7.9.3 サーバーの負担を抑えるよう努力する
 本章では,処理をわかりやすくするために,どんどんビジネスロジックのメソッドを呼び出したが,このような実装はサーバーの負担をかける要因となる。よって,実際にアプリケーションを構築する際には,ビジネスロジックの呼び出しを極力避けるようにしたほうがよい。

 たとえば,今回のアプリケーションの場合,FormCustomerフォーム(Fig.7-16)とFormProductフォーム(Fig.7-67)はグローバル変数g_objRecに,それぞれ全顧客を含むADODB.Recordsetオブジェクトと全製品を含むADODB.Recordsetオブジェクトを保持している。よって,顧客情報の一覧を得たい場合には,その都度Business.CustomerコンポーネントのGetCustomersメソッド(List 6-51)を呼び出す必要はない。FormCustomerフォームのグローバル変数g_objRecを参照すればよいのである。この点は,製品情報の一覧を得たい場合も変わらない。その都度Buusiness.ProductコンポーネントのGetProductsメソッド(List 6-68)を呼び出すのではなく,FormProductフォームのグローバル変数g_objRecを参照すればよい。そうすれば,いちいちサーバーに接続することなく顧客や製品の情報にアクセスすることができ,サーバーの負担は軽減される。


One Point! そうした場合,カレント行を動かすような処理をすると,ADODB.Recordsetオブジェクトと結び付けられているデータグリッドコントロールのマーキーの位置が移動してしまい,画面表示が見苦しくなるという問題が発生するおそれがある。しかし,ADODB.Recordsetオブジェクトには,その複製を作成するCloneというメソッドが用意されている。Cloneメソッドを使ってADODB.Recordsetオブジェクトの複製を作ると,複製元のADODB.Recordsetオブジェクトにおけるカーソル位置と,複製先のADODB.Recordsetオブジェクトにおけるカーソル位置は独立するので,この問題は解決される。

Prev 133/134 Next