Ich gebe Streams
von einem Remote-Dienst ( .NET Remoting
) zurück. Aber wir sind auch Einwegartikel, die, wie wir alle wissen, entsorgt werden müssen.
Ich könnte Streams
auf der Client-Seite aufrufen, sobald ich diese verbraucht habe. Allerdings würde ich gerne wissen, was genau unter der Abdeckung passiert, wenn ich eine Dispose
von einem Remote-Objekt zurückgeben.
Besonders:
Stream
einlesen und das anstelle von byte[]
? Stream
anders als ein Stream
zurückgegeben? Am Ende muss byte[]
irgendwie die Daten irgendwie serialisieren? .NET Remoting
auf der Client-Seite überhaupt irgendwelche Auswirkungen? Gibt es eine magische Verbindung zwischen dem Objekt auf der Clientseite und dem Objekt auf der Serverseite? Ich denke, sobald es hinter den Covern deserialisiert ist, hat es keinen Sinn, Dispose
auf der Clientseite aufzurufen oder gibt es das? Ich antworte hier Mike Bild, weil ich die Frage auch etwas verbessern möchte
Ok, der Stream, der zurück zum Server spricht, ist (zumindest für mich) unerwartet.
Um ein entferntes Objekt zu berechnen, muss man so etwas machen:
%Vor%Sie greifen also explizit auf ein bestimmtes entferntes Objekt in einem URI zu, das konsumiert werden soll. Und wenn eine Methode für dieses Remote-Objekt ein Objekt zurückgibt, das von MarshallByRefObject erbt, was bedeutet, dass es automatisch dem Objekt auf der Remote-Seite zugeordnet wird? Ok, das sollte mit einem Testobjekt, das ich selbst gebaut habe, einfach zu reproduzieren sein. Das bedeutet also auch, dass ich Dispose auf der Clientseite aufrufen sollte und es auf das Objekt auf der Serverseite zurückgeführt wird?
Ein Stream ist ein MarshalByRefObject. Das ist eine besondere Art. Es ist ein Proxy.
Tags und Links .net c# dispose remoting .net-remoting