我很想知道.net中的Reflection和Remoting如何在内部工作。我还听说.net可以使用远程处理与用其他语言(例如Java)编写的应用程序进行通信。这有什么作用?
这可能是个大问题,所以简单地回答每个问题的答案是合理的。
答案 0 :(得分:3)
远程处理通过拦截对某些对象(MarshalByRefObject
)的调用以及通过执行RPC调用来工作;本质上,调用者的对象只是原始AppDomain / machine / etc中 real 对象的轻量级代理。转移参数和结果(再次考虑MarshalByRefObject
- 否则使用BinaryFormatter
序列化值。)
反射深入到核心运行时,并提供对底层类型定义的访问。这可能部分是因为.NET语言下的IL在原始代码方面非常具有表现力。
但是,我个人并不知道通过远程访问java的任何方式。它可能是可能的,但使用的格式是(AFAIK)专有的。通常,此类调用更可能采用SOA调用的形式,例如Web服务(在SOAP或POX上),或其他开放标准,例如使用JSON序列化的消息或“协议缓冲区”(开源线格式)与C#和java)的变体。