RemotingServices.Marshal メソッド
特定の MarshalByRefObject を ObjRef クラスのインスタンスに変換して、このインスタンスをアプリケーション ドメイン間およびネットワーク上の伝送のためにシリアル化できます。
オーバーロードの一覧
MarshalByRefObject を取り、これをリモート処理インフラストラクチャで登録して、 ObjRef クラスのインスタンスに変換します。
[Visual Basic] Overloads Public Shared Function Marshal(MarshalByRefObject) As ObjRef
[JScript] public static function Marshal(MarshalByRefObject) : ObjRef;
特定の MarshalByRefObject を、指定した URI を持つ ObjRef クラスのインスタンスに変換します。
[Visual Basic] Overloads Public Shared Function Marshal(MarshalByRefObject, String) As ObjRef
[C#] public static ObjRef Marshal(MarshalByRefObject, string);
[C++] public: static ObjRef* Marshal(MarshalByRefObject*, String*);
[JScript] public static function Marshal(MarshalByRefObject, String) : ObjRef;
MarshalByRefObject を取り、これを指定した URI と提供された Type を持つ、 ObjRef クラスのインスタンスに変換します。
[Visual Basic] Overloads Public Shared Function Marshal(MarshalByRefObject, String, Type) As ObjRef
[C#] public static ObjRef Marshal(MarshalByRefObject, string, Type);
[C++] public: static ObjRef* Marshal(MarshalByRefObject*, String*, Type*);
[JScript] public static function Marshal(MarshalByRefObject, String, Type) : ObjRef;
使用例
[Visual Basic, C#, C++] 現在の Marshal メソッドを使用して、指定したオブジェクトをマーシャリングする方法の例を次に示します。
[Visual Basic, C#, C++] メモ ここでは、Marshal のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。
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()
[C#]
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();
[C++]
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, S"objectWellKnownUri");
Console::WriteLine(S"An instance of SampleWellKnown type is published at {0}.", objrefWellKnown->URI);
Console::WriteLine(S"Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.");
Console::ReadLine();
RemotingServices::Disconnect(objectWellKnown);
Console::WriteLine(S"Press enter to end the server process.");
Console::ReadLine();
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
参照
RemotingServices クラス | RemotingServices メンバ | System.Runtime.Remoting 名前空間