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

  COLUMN    トランザクショナルASP

 IIS 4.0以降では,ASPファイル自身がCOM+(MTS)のトランザクション機能を使い,トランザクションに参加することができるようになった。この機能を使うと,ASPファイルでServer.CreateObjectメソッドやOBJECTエレメントを使ってADOコンポーネントを実体化してデータベースにアクセスした場合,その処理がトランザクションとしてひとまとまりになる。

 トランザクション機能を有効にするには,ASPファイルの冒頭に次のような行を記述する。

<%@ TRANSACTION = Required %>

 この行が冒頭にあるASPファイルでは,そのファイル内でのデータベース処理がトランザクション処理として扱われる。

 トランザクションをコミットするには,次のようにObjectContextオブジェクトのSetCompleteメソッドを呼び出す。

<% ObjectContext.SetComplete %>

 そうではなく,アボートしたい場合には,次のようにSetAbortメソッドを呼び出す。

<% ObjectContext.SetAbort %>

 なお,デフォルトのトランザクションの状態はコミットである。すなわち,ObjectContext.SetAbortメソッドを呼び出していなければ,ObjectContext.SetCompleteメソッドを明示的に呼び出さなくても,ASPファイルの実行が終了した時点で,トランザクションはコミットされる。

 ASPでは,トランザクションの単位は基本的に1つのASPファイルのみであるため,ユーザーが別のASPファイルに移動したときにトランザクションを引き継ぐことはできない。ただし,Server.TransferメソッドやServer.Executeメソッドを使って,ASPファイルから別のASPファイルを呼び出した場合には,トランザクションの状態も引き継がれる。

 また,ObjectContextオブジェクトは,OnTransactionAbortイベント(トランザクションが失敗したときに発生する)とOnTransactionCommitイベント(トランザクションが成功したときに発生する)の2つのイベントをサポートしている。開発者は,これらのイベント処理を記述することもできるようになっている。

 ASPのトランザクション機能は,主にASPから直接データベースに対して処理を実行するような2階層アプリケーションで使われる。

 今回は,すでにChapter 6でビジネスロジック層を構築し,トランザクション処理はCOMコンポーネント内で完結するようにしてあるため,ASPのトランザクション機能は使わない。よって,本稿での詳細説明は省く。

 ASPのトランザクション機能の詳細については,IISのオンラインヘルプ,もしくは拙著『Windows NT 4.0 Webアプリケーション構築ガイド Phase 2 IIS 4.0によるサーバーサイドプログラミング』(ソフトバンクパブリッシング刊)を参照してほしい。

Prev 29/43 Next