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