RemotingServices.Marshal メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
特定の MarshalByRefObject を ObjRef クラスのインスタンスに変換して、このインスタンスをアプリケーション ドメイン間およびネットワーク上の伝送のためにシリアル化できます。
オーバーロード
Marshal(MarshalByRefObject) |
MarshalByRefObject を取り、これをリモート処理インフラストラクチャで登録して、ObjRef クラスのインスタンスに変換します。 |
Marshal(MarshalByRefObject, String) |
特定の MarshalByRefObject を、指定した URI を持つ ObjRef クラスのインスタンスに変換します。 |
Marshal(MarshalByRefObject, String, Type) |
MarshalByRefObject を取り、これを指定した URI と提供された ObjRef を持つ、Type クラスのインスタンスに変換します。 |
Marshal(MarshalByRefObject)
MarshalByRefObject を取り、これをリモート処理インフラストラクチャで登録して、ObjRef クラスのインスタンスに変換します。
public:
static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj);
static member Marshal : MarshalByRefObject -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject) As ObjRef
パラメーター
変換対象のオブジェクト。
戻り値
Obj
パラメーターで指定されたオブジェクトを表す ObjRef クラスのインスタンス。
例外
Obj
パラメーターがオブジェクトのプロキシです。
コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。
注釈
は ObjRef 、アプリケーション ドメイン境界を越えてオブジェクト参照を転送するために使用されるオブジェクトのシリアル化可能な表現です。 オブジェクトの を ObjRef 作成することは、マーシャリングと呼ばれます。 は ObjRef 、チャネルを介して別のアプリケーション ドメイン (場合によっては別のプロセスまたはコンピューター上) に転送できます。 もう一方のアプリケーション ドメインに入ったら、 ObjRef を解析してオブジェクトのプロキシを作成する必要があります。通常は実際のオブジェクトに接続されます。 この操作は、アンマーシャリングと呼ばれます。
ObjRefには、マーシャリングされるオブジェクトの および クラス、特定のオブジェクト インスタンスを一意に識別する URI、およびオブジェクトが配置されているリモート処理サブ区分に到達する方法に関する通信関連情報を記述Typeする情報が含まれます。
マーシャリング中は、オブジェクトの作成時にアクティブだったコンテキストではなく、現在のスレッドのコンテキストが使用されます。 URI が メソッドによって SetObjectUriForMarshal 明示的に設定されていない場合は、リモート処理 ID インフラストラクチャによって自動的に生成されます。
URI をプロキシに関連付けることはできません。URI は、その URI が表すオブジェクトのサーバー側で生成されたか、オブジェクトが既知であるかのいずれかです。この場合、URI は既知です。 このため、 パラメーターがプロキシの Obj
場合は、例外がスローされます。 カスタム プロキシの場合、透過的プロキシはサーバー オブジェクトとして扱われるため、この制限は緩和されます。
こちらもご覧ください
適用対象
Marshal(MarshalByRefObject, String)
特定の MarshalByRefObject を、指定した URI を持つ ObjRef クラスのインスタンスに変換します。
public:
static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj, System::String ^ URI);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj, string URI);
static member Marshal : MarshalByRefObject * string -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject, URI As String) As ObjRef
パラメーター
変換対象のオブジェクト。
戻り値
Obj
パラメーターで指定されたオブジェクトを表す ObjRef クラスのインスタンス。
例外
Obj
がオブジェクト プロキシであり、URI
パラメーターが null
ではありません。
コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。
例
次のコード例では、現在 Marshal のメソッドを使用して、指定したオブジェクトをマーシャリングする方法を示します。
TcpChannel^ channel = gcnew TcpChannel( 9000 );
ChannelServices::RegisterChannel( channel );
SampleWellKnown ^ objectWellKnown = gcnew SampleWellKnown;
// After the channel is registered, the Object* needs to be registered
// with the remoting infrastructure. So, Marshal is called.
ObjRef^ objrefWellKnown = RemotingServices::Marshal( objectWellKnown, "objectWellKnownUri" );
Console::WriteLine( "An instance of SampleWellKnown type is published at {0}.", objrefWellKnown->URI );
Console::WriteLine( "Press enter to unregister SampleWellKnown, so that it is no longer available on this channel." );
Console::ReadLine();
RemotingServices::Disconnect( objectWellKnown );
Console::WriteLine( "Press enter to end the server process." );
Console::ReadLine();
TcpChannel channel = new TcpChannel(9000);
ChannelServices.RegisterChannel(channel);
SampleWellKnown objectWellKnown = new SampleWellKnown();
// After the channel is registered, the object needs to be registered
// with the remoting infrastructure. So, Marshal is called.
ObjRef objrefWellKnown = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri");
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI);
Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.");
Console.ReadLine();
RemotingServices.Disconnect(objectWellKnown);
Console.WriteLine("Press enter to end the server process.");
Console.ReadLine();
Dim channel As New TcpChannel(9000)
ChannelServices.RegisterChannel(channel)
Dim objectWellKnown As New SampleWellKnown()
' After the channel is registered, the object needs to be registered
' with the remoting infrastructure. So, Marshal is called.
Dim objrefWellKnown As ObjRef = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri")
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI)
Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.")
Console.ReadLine()
RemotingServices.Disconnect(objectWellKnown)
Console.WriteLine("Press enter to end the server process.")
Console.ReadLine()
注釈
は ObjRef 、アプリケーション ドメイン境界を越えてオブジェクト参照を転送するために使用されるオブジェクトのシリアル化可能な表現です。 オブジェクトの を ObjRef 作成することは、マーシャリングと呼ばれます。 は ObjRef 、チャネルを介して別のアプリケーション ドメイン (場合によっては別のプロセスまたはコンピューター上) に転送できます。 もう一方のアプリケーション ドメインに入ったら、 ObjRef を解析してオブジェクトのプロキシを作成する必要があります。通常は実際のオブジェクトに接続されます。 この操作は、アンマーシャリングと呼ばれます。
ObjRefには、マーシャリングされるオブジェクトの および クラス、特定のオブジェクト インスタンスを一意に識別する URI、およびオブジェクトが配置されているリモート処理サブ区分に到達する方法に関する通信関連情報を記述Typeする情報が含まれます。
マーシャリング中は、オブジェクトの作成時にアクティブだったコンテキストではなく、現在のスレッドのコンテキストが使用されます。
URI をプロキシに関連付けることはできません。URI は、その URI が表すオブジェクトのサーバー側で生成されたか、オブジェクトが既知であるかのいずれかです。この場合、URI は既知です。 このため、 パラメーターがプロキシの Obj
場合は、例外がスローされます。 カスタム プロキシの場合、透過的プロキシはサーバー オブジェクトとして扱われるため、この制限は緩和されます。
こちらもご覧ください
適用対象
Marshal(MarshalByRefObject, String, Type)
MarshalByRefObject を取り、これを指定した URI と提供された ObjRef を持つ、Type クラスのインスタンスに変換します。
public:
static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj, System::String ^ ObjURI, Type ^ RequestedType);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj, string ObjURI, Type RequestedType);
static member Marshal : MarshalByRefObject * string * Type -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject, ObjURI As String, RequestedType As Type) As ObjRef
パラメーター
ObjRef に変換するオブジェクト。
- ObjURI
- String
Obj
パラメーターで指定したオブジェクトがマーシャリングされるときに使用する URI。 null
の可能性があります。
戻り値
Obj
パラメーターで指定されたオブジェクトを表す ObjRef クラスのインスタンス。
例外
Obj
がリモート オブジェクトのプロキシであり、ObjUri
パラメーターが null
ではありません。
コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。
注釈
は ObjRef 、アプリケーション ドメイン境界を越えてオブジェクト参照を転送するために使用されるオブジェクトのシリアル化可能な表現です。 オブジェクトの を ObjRef 作成することは、マーシャリングと呼ばれます。 は ObjRef 、チャネルを介して別のアプリケーション ドメイン (場合によっては別のプロセスまたはコンピューター上) に転送できます。 もう一方のアプリケーション ドメインに入ったら、 ObjRef を解析してオブジェクトのプロキシを作成する必要があります。通常は実際のオブジェクトに接続されます。 この操作は、アンマーシャリングと呼ばれます。
ObjRefには、マーシャリングされるオブジェクトの および クラス、特定のオブジェクト インスタンスを一意に識別する URI、およびオブジェクトが配置されているリモート処理サブ区分に到達する方法に関する通信関連情報を記述Typeする情報が含まれます。
指定された Type は、リモート処理インフラストラクチャによって使用され、公開される型階層のスコープを制限します。 たとえば、オブジェクト A がオブジェクト C から派生し Marshal 、呼び出されるオブジェクト B から派生した場合、クライアントは C と B の間でプロキシをキャストできますが、A にはキャストできません。
マーシャリング中は、オブジェクトの作成時にアクティブだったコンテキストではなく、現在のスレッドのコンテキストが使用されます。
URI をプロキシに関連付けることはできません。URI は、その URI が表すオブジェクトのサーバー側で生成されたか、オブジェクトが既知であるかのいずれかです。この場合、URI は既知です。 このため、 パラメーターがプロキシの Obj
場合は、例外がスローされます。 カスタム プロキシの場合、透過的プロキシはサーバー オブジェクトとして扱われるため、この制限は緩和されます。
こちらもご覧ください
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示