XML-RPC:处理64位值的最佳方法?

时间:2020-03-06 14:28:49  来源:igfitidea点击:

因此,正式的XML-RPC标准不支持64位值。但是在当今,64位值越来越普遍。

我们如何处理这些?哪些XML-RPC扩展最常见?那里有什么语言绑定?我对Python和C ++尤其感兴趣,但是感谢我们提供所有信息。

解决方案

我对XMLRPC的扩展方式一无所知,但确实找到了有关该主题的邮件:

In XML-RPC, everything is transmitted
  as a string, so I don't think that
  choice is really that bad - except of
  course for the additional clumsiness
  for invoking explicit conversion
  functions.
  
  But no, XML-RPC doesn't have a data
  type that can represent integers above
  2**32. If you can accept losing
  precision, you can use doubles (but
  you still would have to convert
  explicitly on the sender).

确实,有些库支持64位扩展,但是似乎没有标准。例如,xmlrpc-c有一个所谓的i8,但它不适用于python(至少默认情况下不是)。

我建议之一:

  • 用手将整数转换为字符串,然后将其发送。 XMLRPC无论如何都会将其转换为字符串,所以我会说这是合理的。
  • 将其分为两个32位整数,然后将其发送。

使用" i8"作为数据类型变得越来越普遍。我最近将其添加到我的Perl XML-RPC模块(http://metacpan.org/pod/RPC::XML)中,以响应来自大型团体的请求,该请求需要它才能与用Java编写的服务器一起使用。我不知道服务器使用了什么工具包,但是它已经接受了i8作为一种类型。

我觉得仍然需要解决的一件事是," i4"的" int"别名是否也应该接受i8(它目前使用i4的方式)。或者,就此而言,如果键入i8的参数应该安静地接受键入为i4的输入。当我们不需要SOAP的所有内容时,XML-RPC作为轻量级,低开销的协议很有潜力,但是在REST和SOAP之间的宗教战争中,它经常被忽略。

如果我们只需要原始作者允许的话,XML-RPC就需要进行一些更新和修订。