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

这可能是个大问题,所以简单地回答每个问题的答案是合理的。

有帮助吗?

解决方案

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top