【问题标题】:How do reflection and remoting work internally?反射和远程如何在内部工作?
【发布时间】:2009-03-07 21:05:20
【问题描述】:

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

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

【问题讨论】:

  • 你应该把它分成2个问题。这些都是巨大的话题,一个 SO 帖子可能无法同时充分回答这两个问题

标签: java .net reflection remoting


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2010-11-17
    • 2018-07-25
    • 2019-04-30
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多