如何扩展XML-RPC,使单个请求生成多个响应?

时间:2014-05-30 10:53:18

标签: client-server rpc xml-rpc json-rpc

我有一个现有的应用程序,它充当XML-RPC服务器 该服务器的客户端是在同一台计算机上运行的其他程序。

客户端形成与服务器的连接,使用XML-RPC调用命令,并等待响应。连接和传输协议的详细信息与此讨论无关。

可用命令集构成服务器与其客户端之间的版本化API 我可以随意更改服务器上的任何代码,也可以更改处理XML-RPC详细信息的客户端之间共享的库代码。

因此,我可以在我的实现中引入与XML-RPC规范的不兼容性 - 我控制服务器和客户端中的相关代码;什么都没有触及互联网。

我希望改进API,使得客户端调用的命令子集会生成两个单独的响应,每个响应都与原始请求相关联。

+--------+              +--------+         
|        |              |        |         
| Client |              | Server |         
|        |              |        |         
+---+----+              +---+----+         
    |                       |              
    |        request        |              
    +--------------------> +-+             
    |                      |-|             
    |                      |-|             
    |     initial response |-|             
    | <- - - - - - - - - - |-|             
    |                      |-|             
    |                      |-|             
    |    ultimate response |-|             
    | <- - - - - - - - - - +-+                     
    |                       |              
    +                       +              

客户端将具有不同的状态(因此将执行不同的任务),同时等待初始响应和最终响应。

我已经能够从服务器向客户端发送未经请求的“事件”,因此我可以通过生成表示初始响应的事件来解决此问题,然后使用现有的XML- RPC机制提供最终响应。但这非常不令人满意;为了客户代码的合理性,两个响应需要与原始请求相关联(即它们应该与id共享)。

我正在努力想象一种解决这个问题的简洁方法。

  • 我是否缺少一些隐喻,这有助于形成设计?
  • 是否存在现有的RPC系统,或XML-RPC / JSON-RPC的某些扩展,它允许单个请求以这种方式获得多个响应?
  • 有没有人处理过类似的问题 - 他们能提供一些见解吗?

请注意,初始和最终响应必须是单独的XML节 具体来说,服务器必须能够在等待最终响应的同时向客户端发送未经请求的XML节(与请求无关)。

0 个答案:

没有答案