【发布时间】:2010-02-26 06:25:38
【问题描述】:
RMI的优缺点是什么?
【问题讨论】:
RMI的优缺点是什么?
【问题讨论】:
优点和缺点类似于任何类 RPC(远程过程调用)系统的优点和缺点。表面上看起来很简单,因为实际上远程的对象可以被视为本地对象。
这似乎对简化编程有很大好处,但也有隐藏的成本。分布式系统存在延迟问题和程序员必须注意的部分故障的可能性。远程方法的调用可能会因安全性、延迟问题、网络故障等而发生故障。对这些问题进行纸上谈兵可能会导致可靠性灾难。
【讨论】:
根据我的经验:
优点:
你可以像这样实现两个接口:
常用任务界面:
public interface Task<T extends Serializable> extends Serializable {
T execute();
}
Rmi接口:
public interface RmiTask extends Remote {
<T extends Serializable> T executeTask(Task<T> task) throws RemoteException;
}
RmiTask 在服务器端实现:
public class RmiTaskExecutor implements RmiTask {
public <T extends Serializable> T executeTask(Task<T> task) {
return task.execute();
}
}
示例客户端Task 实现:
public class IsFileTask implements Task<Boolean> {
final String path;
public IsFileTask(String path) {
this.path = path;
}
public Boolean execute() {
return new File(path).isFile();
}
}
缺点:
PassedObject 上调用 method(),但出色的客户端可以覆盖此方法并在那里执行他想要的任何操作...Callables 并使用定义的超时运行它们)。【讨论】: