RemotingServices.IsTransparentProxy メソッド

特定のオブジェクトが、透過プロキシまたは実際のオブジェクトのどちらであるかを示す Boolean 値を返します。

Public Shared Function IsTransparentProxy( _
   ByVal proxy As Object _) As Boolean
[C#]
public static bool IsTransparentProxy(objectproxy);
[C++]
public: static bool IsTransparentProxy(Object* proxy);
[JScript]
public static function IsTransparentProxy(
   proxy : Object) : Boolean;

パラメータ

  • proxy
    確認する対象のオブジェクトへの参照。

戻り値

proxy パラメータで指定したオブジェクトが、透過プロキシまたは実際のオブジェクトのどちらであるかを示す Boolean 値。

解説

あらゆる種類のリモート処理の境界を越えてオブジェクトを使用するクライアントは、実際にはそのオブジェクトの透過プロキシを使用しています。透過プロキシは、実際のオブジェクトがクライアントの領域に格納されているような印象を与えます。これは、リモート処理インフラストラクチャを使用して、自らに対する呼び出しを実際のオブジェクトに転送することによって実現されます。

透過プロキシ自体は、 RealProxy 型のマネージ ランタイム クラスのインスタンスに格納されます。 RealProxy は、透過プロキシから操作を転送するために必要な機能の一部を実装します。プロキシ オブジェクトは、ガベージ コレクション、フィールドやメソッドのサポートなど、マネージ オブジェクトに関連付けられたセマンティクスを継承します。また、プロキシ オブジェクトを拡張して新しいクラスを形成できます。したがって、プロキシは二重の性質を持っています。一方はリモート オブジェクト (透過プロキシ) と同じクラスのオブジェクトとして機能する必要がある性質であり、もう一方はマネージ オブジェクト自体の性質です。

プロキシ オブジェクトは、 AppDomain 内のリモート処理サブ区分を考慮せずに使用できます。アプリケーションは、プロキシ参照とオブジェクト参照を区別する必要がありません。ただし、アクティベーション、有効期間の管理、トランザクションなどの問題を扱うサービス プロバイダは、このような区別を行う必要があります。

使用例

[Visual Basic, C#, C++] IsTransparentProxy メソッドを使用して、オブジェクトがプロキシまたは実際のオブジェクトのどちらであるかを判断する方法を次の例に示します。プログラム例の全体については、 AsyncResult クラスのトピックの例を参照してください。

 
' Creates an instance of a context-bound type SampleSynchronized.
Dim sampSyncObj As New SampleSyncronized()

' Checks whether the object is a proxy, since it is context-bound.
If RemotingServices.IsTransparentProxy(sampSyncObj) Then
   Console.WriteLine("sampSyncObj is a proxy.")
Else
   Console.WriteLine("sampSyncObj is NOT a proxy.")
End If 

[C#] 
// Creates an instance of a context-bound type SampleSynchronized.
SampleSyncronized sampSyncObj = new SampleSyncronized();

// Checks whether the object is a proxy, since it is context-bound.
if (RemotingServices.IsTransparentProxy(sampSyncObj))
    Console.WriteLine("sampSyncObj is a proxy.");
else
    Console.WriteLine("sampSyncObj is NOT a proxy.");

[C++] 
// Creates an instance of a context-bound type SampleSynchronized.
SampleSyncronized* sampSyncObj = new SampleSyncronized();

// Checks whether the Object* is a proxy, since it is context-bound.
if (RemotingServices::IsTransparentProxy(sampSyncObj))
    Console::WriteLine(S"sampSyncObj is a proxy.");
else
    Console::WriteLine(S"sampSyncObj is NOT a proxy.");

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

RemotingServices クラス | RemotingServices メンバ | System.Runtime.Remoting 名前空間 | RealProxy | ObjRef