Exportieren (0) Drucken
Alle erweitern

MarshalByRefObject-Klasse

Aktiviert in Anwendungen mit Remotingunterstützung den Zugriff auf Objekte über die Grenzen von Anwendungsdomänen hinweg.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class MarshalByRefObject
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class MarshalByRefObject
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class MarshalByRefObject

Eine Anwendungsdomäne ist ein Teil eines Betriebssystemprozesses, der eine oder mehrere Anwendungen enthält. Objekte in derselben Anwendungsdomäne kommunizieren direkt miteinander. Objekte in unterschiedlichen Anwendungsdomänen kommunizieren entweder durch die Übertragung von Objektkopien über die Grenzen von Anwendungsdomänen hinweg oder durch den Austausch von Meldungen über einen Proxy.

MarshalByRefObject ist die Basisklasse für Objekte, die über Grenzen von Anwendungsdomänen hinweg durch den Austausch von Meldungen über einen Proxy kommunizieren. Objekte, die nicht von MarshalByRefObject erben, werden implizit als Wert gemarshallt. Wenn eine Remoteanwendung auf ein Objekt verweist, das als Wert gemarshallt wird, wird eine Kopie des Objekts über die Grenze der Anwendungsdomäne hinweg übergeben.

Auf MarshalByRefObject-Objekte wird direkt innerhalb der Grenzen der lokalen Anwendungsdomäne zugegriffen. Wenn eine Anwendung in einer Remoteanwendungsdomäne zum ersten Mal auf ein MarshalByRefObject zugreift, wird der Remoteanwendung ein Proxy übergeben. Nachfolgende Aufrufe des Proxys werden zurück an das in der lokalen Anwendungsdomäne befindliche Objekt gemarshallt.

Typen müssen von MarshalByRefObject erben, wenn sie über Anwendungsdomänen hinweg verwendet werden und der Zustand des Objekts nicht kopiert werden darf, da die Member des Objekts nicht außerhalb der Anwendungsdomäne, in der sie erstellt worden sind, verwendet werden können.

Das folgende Beispiel veranschaulicht eine von MarshalByRefObject abgeleitete Klasse, die später für Remoting verwendet wird.

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));
    }
}

System.Object
  System.MarshalByRefObject
     Abgeleitete Klassen

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft