这里有一个场景,我想传输一个对象,它可以实现一个指定的接口,如ITask在指定格式的远程服务(字节数组?json吗?或xml ?)当服务接收并反序列化对象时,它运行指定的方法。
以下是上述场景的示例代码:
ITask:
interface ITask { void run();}
客户端逻辑代码:
void sendObj(ITask task){
var content = SerializeObjectWithMethods(task);
httpClient.send(remoteServer, content);
}
服务逻辑代码:
void receiveObj(){
var handler = listener.Accept();
var data = handler.Receive();
ITask task = DeserializeObjWithMethods(data);
task.run();
}
那么,c#可以实现上述场景吗?
p。当我阅读spark文档时,我看到它可以将任务发送到其他集群(似乎通过使用java.rmi.*),这真是一件有趣的事情。
不是序列化对象,而是序列化对象的状态。如果你的意思是发送一个远程端完全不知道的对象,除了一个已知的接口,那么我猜只是发送一个编译过的程序集,远程服务器可以使用反射来拉出ITask接口并运行它。