是否有我可以用来在 C++ 中实现 RPC(客户端-服务器)的设计模式

Posted

技术标签:

【中文标题】是否有我可以用来在 C++ 中实现 RPC(客户端-服务器)的设计模式【英文标题】:Is there design patterns I can use to implement an RPC (client-server) in C++ 【发布时间】:2010-11-03 13:22:02 【问题描述】:

我正在开发一个个人项目,它是 C++ 中的 RPC(客户端-服务器)。 RPC 将通过 TCP/IP 或 HTTP 进行通信。 RPC 的规范在这里:

http://groups.google.com/group/json-rpc/web/json-rpc-2-0

我想知道是否有现有的设计模式(或模式组合)可以帮助我产生干净灵活的设计。如果有代码示例、UML 图或文章,我将不胜感激。

谢谢。

【问题讨论】:

这是什么意思?您使用了错误的序列化格式(不是 Soap)和错误的运行时环境(没有反射)。当您有几毫秒的网络延迟时,C++ 的强大功能就无关紧要了。 1) 错误的序列化:因为我比 XML 更喜欢 JSON 语法(不那么冗长)2) 错误的运行时(无反射):我将使用 Qt (doc.qt.nokia.com/4.7/metaobjects.html) >> 这有什么意义?正如我所写:我这样做是为了个人项目。所以,它的主要目的是学习一些新的东西(网络、RPC)。 【参考方案1】:

您可能需要在客户端上使用Proxy 来表示您将要调用的任何服务器端方法并使其在本地可调用。

在幕后,Abstract Factory 可用于封装使用已配置或请求的协议(TCP、HTTP)选择的具体网络连接的提供。

【讨论】:

【参考方案2】:

我会选择观察者。

Details and diagrams.

【讨论】:

【参考方案3】:

不清楚您询问的是高级设计(观察者模式、JSON/XML 处理技术等)、低级设计(套接字、HTTP 客户端/服务器处理等),还是两者兼而有之。

如果对包括可扩展性在内的较低级别方面感兴趣,可能值得研究 ASIO 背后的设计和动机:http://think-async.com/Asio/asio-1.3.1/doc/asio/overview.html。

【讨论】:

更高层次。我将重用现有的库进行 JSON 处理。

以上是关于是否有我可以用来在 C++ 中实现 RPC(客户端-服务器)的设计模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中实现观察者设计模式流数据?

是否可以从 C# 应用程序连接到 32 位 C++ RPC 服务器应用程序

在 WCF 中实现 JSON-RPC

如何在 GAE 中实现自动建议(自动完成)功能

在 C++ 中实现断言检查的最佳方法是啥?

是否可以在 Qt Quick 应用程序中实现 SystemTrayIcon 功能