【问题标题】:.Net Remoting: Serialize Object and implementation.Net Remoting:序列化对象和实现
【发布时间】:2010-03-27 01:03:16
【问题描述】:

在我的场景中,有一个包含类(任务)的客户端程序集。 此类实现服务器上已知的接口 (ITask)。 我正在尝试将任务对象从客户端发送到服务器,而无需手动将客户端程序集复制到服务器。

如果我只是序列化任务对象,服务器显然会抱怨缺少程序集。 然后我尝试序列化 typeof(Task).Assembly 但无法在服务器上对其进行反序列化。 接下来我尝试 File.ReadAllBytes(typeof(Task).Assembly.Location) 并将其保存到服务器上的临时文件中,这在 Assembly.LoadFrom(@".\temporary.dll"); 上引发了异常;

我为什么要这样做? Java RMI 有一个简洁的特性来请求实现通过远程处理接收但仍然“未知”的对象(这个 JVM 没有 *.class 文件)。这可用于只知道包含 run() 方法的“任务”接口并按需下载此方法的实现的计​​算服务器。 这样就不必为新任务更改服务器。 我正在尝试在 .Net 中实现类似的目标。

【问题讨论】:

  • 为什么要使用远程处理?它已被 WCF 取代。

标签: .net serialization remoting


【解决方案1】:

没关系,我找到了一种适合我的方法,使用 AssemblyResolve 事件并使用

直接从字节数组加载程序集
AppDomain.CurrentDomain.Load(assemblyData);

以防万一有人遇到同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多