C++ 关于RCF中间件的二进制大小
是RPC和分布式消息传递的库/框架。我喜欢RCF框架,原因如下C++ 关于RCF中间件的二进制大小,c++,gcc,compilation,real-time,middleware,C++,Gcc,Compilation,Real Time,Middleware,是RPC和分布式消息传递的库/框架。我喜欢RCF框架,原因如下 在线服务-接口-rpc调用规范(即,没有单独编译IDL) C10K设计风格(windows IOCP或boost ASIO上的层) 支持windows命名管道和unix域套接字(我绝对不能在这方面妥协) SSL 消息传递范例,双向,单向,客户端回调,单向批处理 协议缓冲区支持(我认为我可以坚持使用内置的序列化) 发布/订阅功能 我在64位ubuntu安装上使用GCC4.4.3。我使用发行版的demo子目录中的以下行编译普通服务器和客
g++-O3-DRCF\u使用BOOST\u ASIO Client.cpp../src/RCF/RCF.cpp-I../。/BOOST/-I../include/-lpthread../。/BOOST/lib/libboost\u system.a-s
生成的客户端和服务器二进制文件在1.7到2.2兆字节之间波动
警钟敲响,;我用以下三个例子来说明我的院子:
我会考虑其他选择。ZMQ很好,但它是一种传统的依赖性,缺少SSL,不提供很多中间件原语,也不提供命名管道(我需要验证连接进程,命名管道有安全上下文)您的命令行所做的是静态地将RCF编译到服务器和客户端可执行文件中。这使得构建过程变得简单,但也意味着两个可执行文件都携带着自己的RCF副本。RCF 1.3中有超过60000行代码,因此它肯定会影响可执行文件的大小 您可以将RCF构建到DLL中,并改为链接到它。您需要在构建DLL时定义RCF_BUILD_DLL,否则将不导出任何内容
一个大概的数字,在Visual C++ 2008构建环境中,这将产生1.6 MB的DLL。由于RCF的封送处理代码使用模板,且模板化代码需要内联在头文件中,因此无法从DLL导出,因此导入模块中仍会有一些代码
关于你的关切: (1) RCF从一开始就考虑到低延迟,远程呼叫的关键路径得到了高度优化。例如,根本没有内存分配,也没有消息数据的复制。如果您担心,您可以编写一个简单的客户机和服务器,看看您每秒可以进行多少次调用(请记住使用发布版本)。有关更多信息,请查看中的部分(2) 与任何库一样,当您将其构建到应用程序中时,都会有一些前期开销。但是在那之后就不会有任何“持续”的开销了。你在RCF邮件列表/论坛/维基上问过吗?这似乎是一个非常有趣的库,但并不广为人知。。。顺便说一句,尝试剥离exe,我不确定-s是否剥离存档…RCF在google代码上有一个项目,但该项目尚未更新到最新版本,因此我猜该项目处于脱机状态(项目上也没有google组)。公司网站上似乎也没有任何指向任何讨论媒体的链接。代码项目有一个评论小节,它会收到很多回复。然而,SO将从其他人那里吸引一些不错的答案。我已经给作者发了邮件,所以他可能会加入:D。在我开始向g++添加
-s
之前,我已经手动删除了二进制文件。好的。真正奇怪的是,除了asio,您还没有LIB!这应该是RCF.cpp,这意味着包括大标准库。。。真奇怪。。。我对答案感兴趣。顺便说一句,这似乎是一个伟大的解放。下次我会考虑不要自己写:祝你好运!