如何让 Apache Thrift 为多线程服务器生成 C++ 代码?
How do I get Apache Thrift to generate c++ code for a multithreaded server?
我对节俭很陌生。仍在使用服务器和客户端工作的玩具示例
很好,除了我的服务器生成的代码总是 TSimpleServer
,从不 TThreadedServer
.
即使我在教程示例中 运行 这个我也没有得到 TThreadedServer
服务器
thrift -r --gen cpp tutorial.thrift
简单直接的回答是:不行。
稍微长一点的答案是,文件被命名为 *.skeleton.*
是有原因的。这些框架文件仅用作帮助您入门的基础。它们绝不是一个完整的解决方案,更不用说满足所有需求的灵丹妙药了。
但是由于 Apache Thrift 背后的思想之一是模块化,您只需根据需要通过更改一行代码插入另一种服务器类型即可:
TThreadedServer server(processor, serverTransport, transportFactory, protocolFactory);
根本不需要在生成器中实现它,因为
- 所有服务器类型、传输、分层传输和支持的协议的排列太多
- 只需更改几行代码即可轻松在所有这些不同的组件之间切换
C++ 是 AFAIK 唯一生成框架文件的语言。据我所知,没有其他语言实现了此功能。如果您想研究另一个涉及更多功能的示例,请查看 /test/cpp
下的 Thrift 测试实现。看了那段代码,很多东西都会清楚很多。
我对节俭很陌生。仍在使用服务器和客户端工作的玩具示例
很好,除了我的服务器生成的代码总是 TSimpleServer
,从不 TThreadedServer
.
即使我在教程示例中 运行 这个我也没有得到 TThreadedServer
服务器
thrift -r --gen cpp tutorial.thrift
简单直接的回答是:不行。
稍微长一点的答案是,文件被命名为 *.skeleton.*
是有原因的。这些框架文件仅用作帮助您入门的基础。它们绝不是一个完整的解决方案,更不用说满足所有需求的灵丹妙药了。
但是由于 Apache Thrift 背后的思想之一是模块化,您只需根据需要通过更改一行代码插入另一种服务器类型即可:
TThreadedServer server(processor, serverTransport, transportFactory, protocolFactory);
根本不需要在生成器中实现它,因为
- 所有服务器类型、传输、分层传输和支持的协议的排列太多
- 只需更改几行代码即可轻松在所有这些不同的组件之间切换
C++ 是 AFAIK 唯一生成框架文件的语言。据我所知,没有其他语言实现了此功能。如果您想研究另一个涉及更多功能的示例,请查看 /test/cpp
下的 Thrift 测试实现。看了那段代码,很多东西都会清楚很多。