【发布时间】:2011-02-19 10:56:21
【问题描述】:
我想在我自己的 rpc 机制上实现和理解编组的概念(真的是玩具)。虽然我得到了字节序背后的想法,但我不确定如何处理 32 位和 16 位整数。所以问题是机器 A 以 32 位表示 int 并且它想通过 rpc 调用调用函数 int foo(int x) ;但是表示此 int 的服务器是 16 位的。只发送较低的 16 位会丢失信息并且是不可取的。
我知道 IDL 为解决这个问题所做的工作。但在这种情况下,假设我使用了一个将 int “定义”为 32 位的 IDL。虽然这种情况适用于我的场景,但对于具有 16 位 int 的机器 A,在通过网络传输时总是会浪费 2 个字节。
如果我们将 IDL 翻转为 16 位,那么用户必须手动拆分其本地 int 并做一些花哨的事情,完全破坏 RPC 的透明度。
那么在实际实现中使用的正确方法是什么?
谢谢。
【问题讨论】:
-
您想向接收 16 位整数的插槽发送一个 32 位整数并且不丢失任何信息?祝你好运。
-
不,不是真的,我问的是在 RPC 中这实际上是如何发生的? RPC 设计是否有 来选择与IDL 定义类型匹配的局部变量?如果是这样的话,遗留代码不会被直接替换为仅仅通过 rpc 调用而不是任何花哨的东西。
标签: language-agnostic serialization marshalling rpc