Was ist der Zweck von MarshalByRefObject?
93
Remoting; Dies bedeutet, dass zwischen AppDomains oder Computern das Objekt nicht serialisiert und übertragen, sondern an einem Ende verbleibt und am anderen ein Proxy erstellt wird. Alle Methodenaufrufe an den Proxy werden abgefangen und der Aufruf wird als RPC- Wiki ( msdn) übertragen , wodurch die Methode auf dem anderen Computer ausgeführt wird (normalerweise werden die Argumente und der Rückgabewert serialisiert).
Hinweis: Dies kann zu unerwartet "gesprächigen" Schnittstellen führen. Der Objekt- / Proxy- / RPC-Ansatz ist jetzt Ansätzen mit einer expliziten Dienstgrenze weniger vorzuziehen . Microsoft empfiehlt jetzt WCF- Wiki , msdn anstelle von Remoting.
Eine weitere wichtige Verwendung
MarshalByRefObject
ist die Implementierung von AOP über Remoting-Senkenketten.Wenn Sie ein Objekt haben, von dem es abgeleitet ist
ContextBoundObject
(von dem es selbst stammtMarshalByRefObject
), können Sie es in einem separaten Kontext innerhalb derselben AppDomain instanziieren und die Kommunikation zwischen Objekten automatisch über das Remoting-Proxysystem durchführen. So können Sie benutzerdefinierte Senken in die Remoting-Senke einstecken. Kette.Auf diese Weise können Sie letztendlich Methodenaufrufe für Ihre Objekte "dekorieren" und Querschnittsdienste wie Protokollierung und Sicherheit usw. implementieren.
quelle
Die grundlegende Verwendung dient der Unterstützung des Zugriffs auf Objekte zwischen zwei Appdomains. Diese Appdomains können sich über Remoting auf demselben Computer oder auf den verschiedenen Computern befinden.
Siehe hier
quelle
Jedes Objekt außerhalb der Anwendungsdomäne der Aufruferanwendung sollte als Remote-Objekt betrachtet werden. Ein Remote-Objekt, das von
MarshalByRefObject
Class abgeleitet werden soll . Jedes Objekt kann durch Ableiten von in ein Remote-Objekt geändert werdenMarshalByRefObject
. Objekte ohne Erbe vonMarshalByRefObject
werden als nicht entfernbare Objekte bezeichnet.quelle