この特集のトップページへ
>
Chapter 5:ビジネスロジック層の構築
5.1.3 コンテキストの詳細
●オブジェクトコンテキストオブジェクト
オブジェクトコンテキストオブジェクトは,その時点のCOMオブジェクトの状態を保持するオブジェクトである。オブジェクトコンテキストオブジェクトは,GetObjectContext関数(Visual Basicの場合)かCoGetObjectContext関数(Visual C++の場合)を呼び出すと取得できる。
Visual Basicの場合,オブジェクトコンテキストオブジェクトはObjectContextオブジェクトとして参照できる。ObjectContextオブジェクトは,Table 5-2に示すプロパティとメソッドを備えている。Table 5-2を見るとわかるように,いくつかのメソッドは,SecurityCallContextオブジェクトと重複しており,重複している情報はObjectContextオブジェクトから取得してもSecurityCallContextオブジェクトから取得しても同じ値が得られる。一般的に,特殊なセキュリティ管理を実現したい場合以外は,ObjectContextオブジェクトから得られる情報で十分である。
オブジェクトコンテキストオブジェクトは,トランザクションと密接な関係がある。トランザクションについては,「5.4 COM+のトランザクション機能」で説明する。
Table 5-2 ObjectContextオブジェクト
プロパティ | |
ContextInfo As ContextInfo | ContextInfoオブジェクトを得る(Table 5-3) |
Count As Long | ObjectContextオブジェクトが保持する付加情報の数を得る |
Item(name As String) |
ObjectContextオブジェクトが保持する付加情報を得る。引数nameに指定できる情報については,Table 5-1を参照のこと |
Security As SecurityProperty | SecurityPropertyオブジェクトを得る(Table 5-4)。ただし,COM+アプリケーションのプロパティにおける[セキュリティ]ページで[プロセスレベルでのみアクセスチェックを実行する]を選択した場合には,常にNothingが格納される |
メソッド | |
CreateInstance(bstrProgID As String) | 同じコンテキストのもとで動作するCOMコンポーネントを実体化する。MTSとの互換性を維持するためにのみ使われる。COM+ではNewキーワードやCreateObject関数によってCOMコンポーネントを実体化するので,CreateInstanceメソッドは使わない |
DisableCommit() | トランザクションのコミットを不許可にする |
EnableCommit() | トランザクションのコミットを許可にする |
IsCallerInRole(bstrRole As String) As Boolean | メソッドを直接呼び出したユーザーもしくはプロパティを直接参照したユーザーがbstrRoleというロールに属しているかどうかを調べる。属していればTrue,そうでなければFalseが戻る。なお,セキュリティ設定が無効である場合(IsSecurityEnabledメソッドがFalseを返す場合)には,常にTrueを返すので注意すること |
IsInTransaction() As Boolean | トランザクション機能が有効であるかどうかを調べる。有効であればTrueが,そうでなければFalseが戻る |
IsSecuriryEnabled() As Boolean | セキュリティ設定が有効かどうかを調べる。Fig.4-26において,[このアプリケーションへのアクセスチェックを行う]にチェックが付いていればTrueが,そうでなければFalseが戻る |
SetAbort() | トランザクションをアボート(中止)する |
SetComplete() |
トランザクションをコミット(成功)する |
Table 5-3 ContextInfoオブジェクト
メソッド | |
GetActivityId() As String | アクティビティのIDを得る |
GetContextId() As String | コンテキストのIDを得る |
GetTransaction() As Unknown | トランザクションオブジェクトを得る |
GetTransactionId() As String | トランザクションのIDを得る |
IsInTransaction() As Boolean | トランザクション機能が有効であるかどうかを調べる。有効であればTrueが,そうでなければFalseが戻る |
Table 5-4 SecurityPropertyオブジェクト
メソッド | |
GetDirectCallerName() As String | メソッドを直接呼び出したユーザーもしくはプロパティを直接参照したユーザーの名前(実ユーザー名)を得る |
GetDirectCreaterName() As String | 直接このCOMオブジェクトを実体化したユーザーの名前(実ユーザー名)を得る |
GetOriginalCallerName() As String | COM+の管理下にある最初のCOMオブジェクト(COM+の管理外から呼び出されたCOMオブジェクト。「5.4 COM+のトランザクション機能」で説明するルートオブジェクト)を実体化したユーザーの名前(COMクライアント側の実ユーザー名)を得る |
GetOriginalCreaterName() As String | COM+の管理下にある最初のCOMオブジェクト(COM+の管理外から呼び出されたCOMオブジェクト。「5.4 COM+のトランザクション機能」で説明するルートオブジェクト)を呼び出したユーザーの名前(COMクライアント側の実ユーザー名)を得る |
Chapter 5-1 6/23 |