thrift作为RPC优点明显,那些还在坚持使用消息排斥RPC的同学,都应当亲自接触体验一下。
不过thrift确实还有些明显的不足,表现在:
1.不能指定IP TNonblockingServer.cpp: for (res = res0; res; res = res->ai_next) { if (res->ai_family == AF_INET6 || res->ai_next == NULL) break; } if (::bind(s, res->ai_addr, res->ai_addrlen) == -1) {
2.每个service独占一个端口号 m_server.reset(new thrift::server::TNonblockingServer( m_processor, m_protocol_factory, port, m_thread_manager));
3.C++客户端异步支持不好,或者至少这方面的信息太少,让人了解困难 暂只略知有个基于http的异步支持,java客户端的异步支持感觉不错,但没有实践过
4.对外直接暴露了由automake系列命名autoheader生成的config.h头文件 如果使用它的也是使用automake编译,容易造成冲突,结果是警告难消息,目前简单的措施是注释掉Thread.hpp中的#include "config.h"
5.文件、目录组织缺乏严谨 进入config.h所在目录就可以发现 6.命名方式让人吐槽 类都是以T打头的微软骆驼风格,这个还可以接受,但文件名和类名完成相同,这个就有点过了
TBufferTransports.h
TFDTransport.h
TFileTransport.h
THttpClient.h
THttpServer.h
THttpTransport.h
6.内部代码的质量也只能算是一般