corba服务可以多次响应一个请求吗? 就我而言,corba服务收集了大量数据,需要很长时间才能收到请求。为了减少客户端收到响应的延迟,我们希望在收集的数据大小达到1024k时立即获得服务响应。例如,总数据大小为10M,服务响应客户端在一个连接上10次。
我的理解是corba服务器应缓存客户端和服务器之间的连接,并在新数据可用时在此缓存的数据上提供新数据。在其他句柄上,客户端应该为响应响应执行while循环。客户端或服务器不应关闭连接,直到服务器说所有数据都已连接。此过程类似于Http协议中的分块响应。
如果您能在此区域提供一些提示或示例链接,我们表示感谢。
答案 0 :(得分:0)
当服务器应用程序代码返回函数调用时,CORBA服务器端只能将数据发送到客户端。如果IDL中只有一个操作返回10M,则ORB只能在操作完成后将该数据传输到客户端。为了允许ORB发送数据,您必须修改IDL并为客户端添加一种方法来启动操作,然后轮询可用的数据块。每个轮询的实现都比一个块返回。
如何执行此操作的一些示例是TAO的一部分。您可以在ACE_wrappers / TAO / examples / Content_Server下找到示例。它还有一个例子,当一个块可用时,服务器将数据推送到客户端。