MarshalByRefObject クラスとは? わかりやすく解説

MarshalByRefObject クラス

リモート処理サポートするアプリケーションで、アプリケーション ドメイン境界超えてオブジェクトアクセスできるようにします。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class
 MarshalByRefObject
Dim instance As MarshalByRefObject
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class MarshalByRefObject
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class MarshalByRefObject abstract
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class MarshalByRefObject
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class MarshalByRefObject
解説解説

アプリケーション ドメインとは、1 つ上のアプリケーション常駐するオペレーティング システム プロセスパーティションです。同一アプリケーション ドメインオブジェクト直接通信します。異なアプリケーション ドメインオブジェクトは、アプリケーション ドメイン境界越えてオブジェクトコピー転送するか、メッセージ交換するためにプロキシ使用することにより通信します。

MarshalByRefObject は、プロキシ使用してメッセージ交換することにより、アプリケーション ドメイン境界越えて通信するオブジェクト基本クラスです。MarshalByRefObject から継承されないオブジェクトは、暗黙的に値渡しマーシャリングされますリモート アプリケーション値渡しオブジェクト参照する場合、そのオブジェクトコピーアプリケーション ドメイン境界越えて渡されます。

MarshalByRefObject オブジェクトは、ローカル アプリケーション ドメイン境界内では直接アクセスできますリモート アプリケーション ドメインアプリケーション初めMarshalByRefObjectアクセスするときに、プロキシはそのリモート アプリケーション渡されます。プロキシでの以降呼び出しは、ローカル アプリケーション ドメイン常駐するオブジェクトマーシャリングされます

アプリケーション ドメイン境界越えて使用する型MarshalByRefObject から継承する必要があります。そのメンバ作成されアプリケーション ドメイン外では同メンバ使用できないため、オブジェクトの状態をコピーできません。

使用例使用例

後でリモート処理使用される MarshalByRefObject から派生したクラスを、次の例に示します

Imports System
Imports System.Runtime.Remoting
Imports System.Security.Permissions

Public Class SetObjectUriForMarshalTest
    
    Class TestClass
        Inherits MarshalByRefObject
    End Class

    <SecurityPermission(SecurityAction.LinkDemand)> _
    Public Shared Sub Main()
        Dim obj As TestClass = New
 TestClass()

        RemotingServices.SetObjectUriForMarshal(obj, "testUri")
        RemotingServices.Marshal(obj)

        Console.WriteLine(RemotingServices.GetObjectUri(obj))
    End Sub

End Class
using System;
using System.Runtime.Remoting;
using System.Security.Permissions;

public class SetObjectUriForMarshalTest  {

    class TestClass : MarshalByRefObject {
    }

    [SecurityPermission(SecurityAction.LinkDemand)]
    public static void Main()
  {

        TestClass obj = new TestClass();    

        RemotingServices.SetObjectUriForMarshal(obj, "testUri");
        RemotingServices.Marshal(obj);

        Console.WriteLine(RemotingServices.GetObjectUri(obj));
    }
}
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Security::Permissions;

public ref class SetObjectUriForMarshalTest
{
public:
   ref class TestClass: public MarshalByRefObject{};

   [SecurityPermissionAttribute(SecurityAction::Demand, Flags=SecurityPermissionFlag::Infrastructure)]
   
   static void Main()
   {
      TestClass^ obj = gcnew TestClass;
      RemotingServices::SetObjectUriForMarshal( obj,  "testUri" );
      RemotingServices::Marshal(obj);
      Console::WriteLine( RemotingServices::GetObjectUri( obj ) );
   }

};
継承階層継承階層
System.Object
  System.MarshalByRefObject
     派生クラス
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「MarshalByRefObject クラス」の関連用語

MarshalByRefObject クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



MarshalByRefObject クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS