【发布时间】: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