Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
MarshalByRefObject-Klasse
Aktiviert in Anwendungen mit Remotingunterstützung den Zugriff auf Objekte über die Grenzen von Anwendungsdomänen hinweg.
Assembly: mscorlib (in mscorlib.dll)
Der MarshalByRefObject-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
MarshalByRefObject | Initialisiert eine neue Instanz der MarshalByRefObject-Klasse. |
| Name | Beschreibung | |
|---|---|---|
|
CreateObjRef | Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.) |
|
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) |
|
GetLifetimeService | Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
InitializeLifetimeService | Ruft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. |
|
MemberwiseClone() | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
MemberwiseClone(Boolean) | Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. |
|
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
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.
Dieser Abschnitt enthält zwei Codebeispiele. Das erste Codebeispiel zeigt, wie eine Instanz einer Klasse in einer anderen Anwendungsdomäne erstellt wird. Im zweiten Codebeispiel wird eine einfache Klasse gezeigt, die für Remoting verwendet werden kann.
Beispiel 1
Im folgenden Codebeispiel wird die einfachste Möglichkeit veranschaulicht, Code in einer anderen Anwendungsdomäne auszuführen. Im Beispiel wird eine Klasse mit dem Namen Worker definiert, die MarshalByRefObject erbt. Die Klasse enthält eine Methode, mit der der Name der Anwendungsdomäne angezeigt werden kann, in der die Klasse ausgeführt wird. Im Beispiel werden Instanzen von Worker in der Standardanwendungsdomäne und in einer neuen Anwendungsdomäne erstellt.
Hinweis
|
|---|
|
Die Assembly, die Worker enthält, muss in beide Anwendungsdomänen geladen werden. Die Assembly selbst kann jedoch weitere Assemblys laden, die dann nur in der neuen Anwendungsdomäne vorhanden sind. |
using System; using System.Reflection; public class Worker : MarshalByRefObject { public void PrintDomain() { Console.WriteLine("Object is executing in AppDomain \"{0}\"", AppDomain.CurrentDomain.FriendlyName); } } class Example { public static void Main() { // Create an ordinary instance in the current AppDomain Worker localWorker = new Worker(); localWorker.PrintDomain(); // Create a new application domain, create an instance // of Worker in the application domain, and execute code // there. AppDomain ad = AppDomain.CreateDomain("New domain"); Worker remoteWorker = (Worker) ad.CreateInstanceAndUnwrap( Assembly.GetExecutingAssembly().FullName, "Worker"); remoteWorker.PrintDomain(); } } /* This code produces output similar to the following: Object is executing in AppDomain "source.exe" Object is executing in AppDomain "New domain" */
Beispiel 2
Im folgenden Beispiel wird eine von MarshalByRefObject abgeleitete Klasse veranschaulicht, 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.Demand, Flags=SecurityPermissionFlag.RemotingConfiguration)] public static void Main() { TestClass obj = new TestClass(); RemotingServices.SetObjectUriForMarshal(obj, "testUri"); RemotingServices.Marshal(obj); Console.WriteLine(RemotingServices.GetObjectUri(obj)); } }
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
System.MarshalByRefObject
Microsoft.Build.Utilities.AppDomainIsolatedTask
Microsoft.Build.Utilities.TaskItem
Microsoft.Build.Utilities.TaskLoggingHelper
Microsoft.Win32.RegistryKey
System.AddIn.Pipeline.ContractBase
System.AppDomain
System.AppDomainManager
System.ComponentModel.Component
System.ContextBoundObject
System.Data.Common.DataColumnMapping
System.Data.Common.DataColumnMappingCollection
System.Data.Common.DataTableMapping
System.Data.Common.DataTableMappingCollection
System.Data.Common.DbDataReader
System.Data.Common.DbParameter
System.Data.Common.DbParameterCollection
System.Data.Common.DbTransaction
System.Diagnostics.TraceListener
System.DirectoryServices.SearchResultCollection
System.Drawing.Brush
System.Drawing.Drawing2D.CustomLineCap
System.Drawing.Drawing2D.GraphicsContainer
System.Drawing.Drawing2D.GraphicsPath
System.Drawing.Drawing2D.GraphicsPathIterator
System.Drawing.Drawing2D.GraphicsState
System.Drawing.Drawing2D.Matrix
System.Drawing.Font
System.Drawing.FontFamily
System.Drawing.Graphics
System.Drawing.Icon
System.Drawing.Image
System.Drawing.Pen
System.Drawing.Region
System.Drawing.StringFormat
System.EnterpriseServices.Internal.AssemblyLocator
System.EnterpriseServices.RegistrationHelper
System.IO.FileSystemInfo
System.IO.IsolatedStorage.IsolatedStorage
System.IO.Stream
System.IO.TextReader
System.IO.TextWriter
System.Messaging.MessageEnumerator
System.Messaging.MessageQueueEnumerator
System.Net.WebRequest
System.Net.WebResponse
System.Reflection.AssemblyNameProxy
System.Runtime.InteropServices.StandardOleMarshalObject
System.Runtime.Remoting.Lifetime.ClientSponsor
System.Runtime.Remoting.ObjectHandle
System.Speech.Recognition.SrgsGrammar.SrgsElement
System.Threading.RegisteredWaitHandle
System.Threading.Timer
System.Threading.WaitHandle
System.Web.Compilation.ClientBuildManager
System.Web.Compilation.ClientBuildManagerCallback
System.Web.Hosting.AppDomainProtocolHandler
System.Web.Hosting.ApplicationManager
System.Web.Hosting.HostingEnvironment
System.Web.Hosting.ISAPIRuntime
System.Web.Hosting.ProcessHost
System.Web.Hosting.ProcessHostFactoryHelper
System.Web.Hosting.ProcessProtocolHandler
System.Web.Hosting.VirtualFileBase
System.Web.Hosting.VirtualPathProvider
System.Windows.Forms.BaseCollection
System.Windows.Forms.NativeWindow
System.Windows.Forms.NumericUpDownAccelerationCollection
System.Windows.Forms.OwnerDrawPropertyBag
System.Windows.Forms.TreeNode
System.Windows.Interop.DocObjHost
System.Workflow.Runtime.DebugEngine.DebugController
Hinweis