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

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

最佳答案

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

反射内置于核心运行时中,并提供对基础类型定义的访问。这可能部分是因为.NET语言下的IL就原始代码而言非常具有表现力。

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

09-13 12:02