3

我很想知道.net 中的反射和远程处理如何在内部工作。我还听说 .net 可以使用远程处理与用其他语言(如 Java)编写的应用程序进行通信。这是如何运作的?

这可能是一个很大的问题,因此简要涉及每个问题的答案是合理的。

4

1 回答 1

3

远程处理通过拦截对某些对象的调用 ( MarshalByRefObject) 来工作,并改为执行 RPC 调用;本质上,调用者处的对象只是原始 AppDomain/machine/etc 处真实对象的轻量级代理。参数和结果被传输(再次考虑MarshalByRefObject到 - 否则通过使用BinaryFormatter来序列化值)。

反射深入核心运行时,并提供对底层类型定义的访问。这可能部分是因为 .NET 语言下的 IL 在原始代码方面非常具有表现力。

但是,我个人并不知道通过远程处理到 java 的任何方式。这可能是可能的,但使用的格式是(AFAIK)专有的。通常,此类调用更可能采用 SOA 调用的形式,例如 Web 服务(在 SOAP 或 POX 上),或其他开放标准,例如使用 JSON 或“协议缓冲区”(一种开源有线格式)序列化的消息带有 C# 和 java 的变体)。

于 2009-03-07T21:37:07.177 回答