[トランザクション オブジェクト ウィザード]
[ファイル]メニュー への移動
[ファイル|新規作成|その他...]
新しい[トランザクション オブジェクト ウィザード]を使用すると、MTS や COM+ で実行されるサーバー オブジェクトを作成できます。トランザクション オブジェクトは、分散アプリケーションにおいて、MTS や COM+ からリソース管理、トランザクション サポート、セキュリティなどのために提供される特別なサービスを利用するのに使用されます。
項目 | 説明 |
---|---|
[CoClass 名] |
実装するオブジェクトの名前を指定します。ウィザードは、これと同じ名前で先頭に 'I' が付くインターフェイスと、これと同じ名前で先頭に 'T' が付く実装クラスを生成します。 |
[スレッド モデル] |
トランザクション オブジェクトのインターフェイスへの呼び出しを MTS や COM+ がシリアル化する方法を示すスレッド モデルを選択します。選択したスレッドモデルによって、オブジェクトの登録方法が決まります。選択したモデルに従ったオブジェクト実装を行う必要があります。スレッド モデルの値は、以下の表に示します。 |
[トランザクション モデル] |
オブジェクトを登録するときにそのオブジェクトに割り当てるトランザクション属性を指定します。取り得る値は、以下の表に示します。 |
[イベント サポートのためのコードを生成] |
[OK]や[キャンセル]などの標準ボタンを記述しないでください。 |
[スレッド モデル]コンボ ボックスで取り得る値は次のとおりです。
モデル | 説明 |
---|---|
[シングル スレッド モデル] |
コードでスレッド サポートする必要はありません。一度にサービスできるクライアント スレッドは 1 つだけです。 |
[アパートメント スレッド モデル] |
COM+ では、クライアントによってインスタンス化された各オブジェクトは、一度に 1 つのスレッドによってアクセスされます。複数のスレッドからグローバル メモリにアクセスすることがないようにする必要がありますが、オブジェクトはそれ自身のインスタンス データ(オブジェクト プロパティおよびメンバ)には安全にアクセスできます。MTS では、すべてのクライアント呼び出しが、オブジェクトが作成されたスレッドを使用する場合もあります。 |
[フリー/アパートメント両用] |
クライアントへのコールバックもシリアル化される点を除いて[アパートメント スレッド モデル]と同じです。 |
[ニュートラル] |
複数のクライアントから異なるスレッドでオブジェクトを同時に呼び出すことができますが、2 つの呼び出しが衝突することがないよう COM によって保証されます。グローバル データや複数のメソッドがアクセスするインスタンス データにかかわるスレッドの衝突から保護する必要があります。このモデルはユーザー インターフェイスを持つオブジェクトでは使用しないでください。このモデルは COM+ でのみ使用できます。COM の場合は、[アパートメント スレッド モデル]にマップされます。 |
メモ: オブジェクト呼び出しのシリアル化は、アクティビティへの参加方法の影響も受けます。MTS では、オブジェクトは常に現在のアクティビティによって同期化されます。COM+ では、これはタイプ ライブラリ エディタの[COM+]ページまたは COM+ コンポーネント マネージャを使用して構成できます。
[トランザクション モデル]コンボ ボックスで取り得る値は次のとおりです。
値 | 意味 |
---|---|
[トランザクションが必要] |
オブジェクトは、トランザクションのスコープ内で実行する必要があります。新しいオブジェクトが作成されると、そのオブジェクト コンテキストはクライアントのコンテキストからトランザクションを継承します。クライアントにトランザクション コンテキストがない場合、新しいトランザクション コンテキストが自動的に生成されます。 |
[新規トランザクションが必要] |
オブジェクトは、自らのトランザクション内で実行する必要があります。新しいオブジェクトが作成されると、クライアントがトランザクションを持っているかどうかに関係なく、新しいトランザクション コンテキストが自動的に生成されます。オブジェクトは、クライアントのトランザクションのスコープ内で実行されることはありません。代わりに、システムが常に、新しいオブジェクト用の独立したトランザクションを作成します。 |
[トランザクションをサポート] |
オブジェクトは、クライアントのトランザクションのスコープ内で実行できます。新しいオブジェクトが作成されると、そのオブジェクト コンテキストはクライアントのコンテキストがあればそこからトランザクションを継承します。それがなければ、オブジェクトはトランザクションのスコープ内には作成されません。 |
[トランザクションのサポートなし] |
MTS では、この設定は COM+ 下で[トランザクションを無視]と同様の動作になります(下記参照)。COM+ では、オブジェクトをトランザクションのコンテキスト内で実行することはできません。クライアントにトランザクションがある場合、オブジェクトの作成を試みますが失敗します。 |
[トランザクションを無視] |
オブジェクトは、トランザクションのスコープ内では実行されません。新しいオブジェクトが作成されると、クライアントがトランザクションを持っているかどうかに関係なく、トランザクションなしで新しいオブジェクト コンテキストが作成されます。このモデルは MTS ではサポートされません。 |