优化RMI服务响应

时间:2013-09-19 14:29:17

标签: java rmi

我正在编写服务器客户端应用程序,最佳性能是必须的;我使用RMI进行服务器 - 客户端通信,服务器使用mySQL数据库。

现在在客户端,我有一个名为

的方法
    getLinks()     

在服务器上调用相同的方法,问题是这个方法返回大约700Mb的数据,这需要一些时间来获取,还有一些时间来分析。

然后我为每个链接设置了一些值:

for (Link l : myService.getLinks()) l.setSelected(false);

我现在想到的只是首先获取链接ID(因为这将是一个较小的数据),然后使用异步方法通过Id获取每个链接(每个链接需要一个服务调用);然后设置链接值。

这是最好的方法,是否有另一种方法可以逐个获取RMI数据(一次方法调用和多次返回)?

C#中有(yield return)吗?

2 个答案:

答案 0 :(得分:0)

你也可以制作一个分页方法,它接收初始id(或者如果id不是连续的位置)和长度,这样你就不会发送所有id的两次

答案 1 :(得分:0)

Link对象是远程对象吗?如果不是,我真的没有看到代码的重点,因为它只在客户端对象中本地设置了一些东西,它会被立即丢弃。

假设它们是远程对象,最好将整个更新发送到服务器并告诉它更新整个集合,例如setLinksSelected(boolean),服务器在这里进行迭代。

但我也会谨慎地通过RMI更新甚至传输700Mb数据,无论你采用哪种方式。这是很多数据。