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) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からMarshalByRefObject クラスを検索した結果を表示しています。
Weblioに収録されているすべての辞書からMarshalByRefObject クラスを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からMarshalByRefObject クラスを検索

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

辞書ショートカット

すべての辞書の索引

「MarshalByRefObject クラス」の関連用語

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

   

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



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

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

©2024 GRAS Group, Inc.RSS