发送和接收 RPC 的函数名称?

Posted

技术标签:

【中文标题】发送和接收 RPC 的函数名称?【英文标题】:Function Names for sending and receiving RPCs? 【发布时间】:2010-08-26 12:43:13 【问题描述】:

我正在使用扭曲。我设置了协议,以便发送 RPC,我执行protocol.send("update_status", data)。为了记录我实现了哪些 RPC,我对每个 RPC 进行了单独的函数调用,因此在这种情况下,我会调用 REQUEST_UPDATE_STATUS(data) 来发送该 RPC。当协议接收到 RPC 时,会根据其名称调用函数,在本例中为 CMD_UPDATE_STATUS

问题是REQUESTCMD 有点别扭。我可能会将REQUEST 误认为是命令的一部分,例如REQUEST_NEW_DATA,这最终会触发一个名为'new_data' 的RPC。但是,REQUEST_REQUEST_NEW_DATA 很傻。

CMD 也很尴尬,因为REQUEST_SEND_NEW_DATA 会变成CMD_SEND_NEW_DATA,这有点尴尬。

有什么建议吗?

【问题讨论】:

【参考方案1】:

第一个提示:使用 PB...它设计得很好,并且确实做到了

第二个提示:如果第一个提示对您不起作用,请执行 PB 的操作。在客户端,“callRemote("foo_func")”请求服务器调用服务器对象上的“foo_func”函数。然后服务器将使用“getattr(server_obj, "remote_" + "foo_func")" 来查找远程方法。如果该方法存在,则调用它。否则返回错误。这种设计的好处是它完全消除了您的 REQUEST...CMD...常量。

【讨论】:

PB 表示 Perspective Broker - twistedmatrix.com/documents/current/core/examples/#auto4 嗯,我已经可以这样做了.. 而不是protocol.send,我使用protocol.callRemote,而不是CMD_SEND_NEW_DATA,我更喜欢remote_sendNewDataREMOTE_sendNewData。我想我可能已经实现了 PB。 我建议您通读 Perspective Broker 文档。任何在 Python 中实现 RPC 的人都会从对 PB 设计的理解中受益,因为它包含一些针对常见问题的优雅解决方案。重量更轻的 AMP 协议(​​也是扭曲的)是另一个很好的背景来源。

以上是关于发送和接收 RPC 的函数名称?的主要内容,如果未能解决你的问题,请参考以下文章

RPC 框架

是否可以发送函数作为 RPC 的响应

关于python中几个函数的用法

UE4 网络同步原理三 RPC

将带有修改的字段名称和白名单验证的 SQL 语句传递给 RPC 函数。它安全且普遍吗?

Go语言面向函数和接口编程