2009-03-07 6 views
3

Ich bin gespannt, wie Reflection und Remoting in .net intern funktionieren. Ich höre auch, dass .net Remoting verwenden kann, um mit Anwendungen zu kommunizieren, die in anderen Sprachen (wie Java) geschrieben sind. Wie funktioniert das?Wie funktionieren Reflexion und Remoting intern?

Dies ist wahrscheinlich eine große Frage, so dass eine Antwort, die jede Frage kurz berührt, vernünftig ist.

+0

Sie sollten dies in 2 Fragen aufteilen. Das sind riesige Themen und eine SO-Post wird wahrscheinlich nicht in der Lage sein, beide zusammen zu beantworten – JaredPar

Antwort

3

Remoting funktioniert durch Abfangen von Aufrufen bestimmter Objekte (MarshalByRefObject) und durch Ausführen eines RPC-Aufrufs; Im Wesentlichen ist das Objekt beim Aufrufer nur ein leichter Proxy für das echte Objekt an der ursprünglichen AppDomain/Maschine/etc. Die Argumente und Ergebnisse werden übertragen (wiederum unter Berücksichtigung von MarshalByRefObject - andernfalls mit BinaryFormatter, um die Werte zu serialisieren).

Reflection ist tief in die Kernlaufzeit integriert und bietet Zugriff auf die zugrunde liegenden Typdefinitionen. Dies liegt möglicherweise daran, dass die IL unter den .NET-Sprachen in Bezug auf den ursprünglichen Code ziemlich ausdrucksstark ist.

Allerdings ist mir persönlich keine Möglichkeit bekannt, über Remoting zu Java zu sprechen. Es ist möglich, aber die verwendeten Formate sind (AFAIK) proprietär. Im Allgemeinen sind solche Aufrufe eher in Form von SOA-Aufrufen wie Web-Services (auf SOAP oder POX) oder anderen offenen Standards wie Nachrichten, die mit JSON serialisiert sind, oder "Protokoll-Puffern" (einem Open-Source-Drahtformat) möglich mit Varianten für C# und Java).