网站备案一般要多久pr免费模板网站
news/
2025/9/24 17:26:54/
文章来源:
网站备案一般要多久,pr免费模板网站,WordPress的cookie,免费虚拟房屋设计软件转载自Thrift在Windows及Linux平台下的安装和使用示例
thrift介绍
Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的RPC(远程服务调用)框架。
本文主要目的是分别介绍在Windows及Linux平台下的Thrift安装步骤#xff0c;以及实现一个简单的demo演示Thrif…转载自Thrift在Windows及Linux平台下的安装和使用示例
thrift介绍
Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的RPC(远程服务调用)框架。
本文主要目的是分别介绍在Windows及Linux平台下的Thrift安装步骤以及实现一个简单的demo演示Thrift的使用方法。更多Thrift原理留在以后再行介绍。
thrift安装
源码下载thrift官网或者thrift-github地址我下载的是thrift-0.9.3.tar.gz。
安装依赖库
boost boost的编译就不再这里介绍了我分别使用了boost1.55或boost1.49编译通过libevent 按需编译如果不需要异步server就可以不编译libevent否则可以点此下载libevent-2.0.21-stableopenssl 下载针对你系统版本的openssl库windows下有编译好的二进制文件可以直接下载32位/62位系统openssl Linux发行版一般都自带ssl库
thrift在Windows下的安装
我是在Windows7 64bit VS2010编译的。 Windows下编译倒也不麻烦简单介绍如下
解压缩源代码进入到lib\cpp目录下打开Thrift.sln里面有libthrift和libthriftnb两个工程其中libthrift工程是常规的阻塞型server端单线程server一个连接一个线程server线程池serverlibthriftnb工程是非阻塞non-blocking模式的服务server端也只有编译libthriftnb时才需要依赖libevent库否则可以不编译libevent库设置依赖库头文件和库文件这就不再介绍了编译顺利的话就OK了会在lib\cpp\Debug目录下生成libthrift.lib和libthriftnb.lib如果编译的话
说明 thrift-0.9.3这一版的release其实在windows下是编译不过的因为vs工程中要编译的Thrift.cpp已经不存在了从工程中移除就可以顺利编译了参考thrift-pull-739。
另外还可以自行编译thrift文件的生成工具当然也可以直接从官网下载这里给出编译步骤
将compiler\cpp\src\windows\version.h.in文件拷贝到compiler\cpp\src\目录下并重命名为version.h到compiler\cpp目录下打开compiler.sln编译即可
thrift在linux(Centos)下的安装
我是在Centos6.4 64bitg 4.4.7编译的编译很简单分别可以使用cmake或者make工具进行编译这里不再多做介绍当然编译过程中缺少了某些库什么的就先按照即可更详细的步骤请看本文的参考文章链接。
开发步骤
写一个.thrift文件也就是IDLInterface Description File接口描述文件用Thrift的IDL生成工具windows下就是上面提供下载链接的thrift-0.9.1.exe Linux下就是/usr/local/bin/thrift程序 然后根据需要生成目标语言代码server端程序引入第2步生成的代码实现RPC业务代码client端程序引入第2步生成的代码实现RPC调用逻辑用第4步生成的程序就可以调用第3步实现的远程服务了
入门示例
下面就演示一个简单的server端和client端程序。
设计thrift文件IDL
假设实现这么一个简单服务client通过hello接口发送自己的名字且需要server端回复比如 hello.thrift:
service HelloService
{void hello(1: string name);
}
通过IDL工具生成源代码
执行thrift命令生成源文件
thrift --gen cpp hello.thrift # centos下
thrift-0.9.3.exe --gen cpp hello.thrift # Windows下
thrift-0.9.3.exe --gen py hello.thrift # Windows下python代码
以上命令表示生成C语言的源代码然后会生成一个gen-cpp目录里面包含自动生成的几个源代码文件
hello_constants.cpp
hello_constants.h
HelloService.cpp
HelloService.h
HelloService_server.skeleton.cpp
hello_types.cpp
hello_types.h
实现server端程序
HelloService_server.skeleton.cpp就是默认的server端程序入口可以直接修改该文件或者拷贝一份再做修改我是拷贝并重命名为server.cpp以便增加自己的逻辑处理
class HelloServiceHandler : virtual public HelloServiceIf {public:HelloServiceHandler() {// Your initialization goes here}void hello(const std::string name) {// Your implementation goes here// 这里只简单打印出client传入的名称printf(hello, I got your name %s\n, name.c_str());}
};
如果是在linux平台下直接通过g编译
g -o server hello_constants.cpp HelloService.cpp hello_types.cpp server.cpp -I/usr/local/include/thrift -L/usr/local/lib -lthrift
如果是在Windows平台下通过vs2010新建win32控制台工程将gen-cpp目录下的所有文件复制到新工程下设置头文件包含和lib库目录。 比如设置libthrift.lib的头文件目录为thrift-0.9.3\lib\cpp\src\thriftlib库目录为thrift-0.9.3\lib\cpp\Debug。
实现client端程序
因为没有默认的client实现所以需要新建一个client.cpp文件自己增加实现
#include stdio.h
#include string
#include transport/TSocket.h
#include protocol/TBinaryProtocol.h
#include server/TSimpleServer.h
#include transport/TServerSocket.h
#include transport/TBufferTransports.h
#include hello_types.h
#include HelloService.h
using namespace ::apache::thrift;
using namespace ::apache::thrift::protocol;
using namespace ::apache::thrift::transport;
using namespace ::apache::thrift::server;
using boost::shared_ptr;int main(int argc, char** argv)
{shared_ptrTTransport socket(new TSocket(localhost, 9090));shared_ptrTTransport transport(new TBufferedTransport(socket));shared_ptrTProtocol protocol(new TBinaryProtocol(transport));HelloServiceClient client(protocol);try{transport-open();client.hello(cpper.info);transport-close();}catch(TException tx){printf(ERROR:%s\n,tx.what());}
}
如果是在linux平台下直接通过g编译
g -o client client.cpp hello_constants.cpp HelloService.cpp hello_types.cpp -I/usr/local/include/thrift -L/usr/local/lib -lthrift
如果是在Windows平台下通过vs2010新建win32控制台工程将gen-cpp目录下的所有文件除HelloService_server.skeleton.cpp之外复制到新工程下并增加上面手动实现的client.cpp。
通过以上步骤就实现一个简单的RPC server和client程序了可以分别运行进行测试看看效果怎么样。
Reference
Thrift官方安装手册译
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916015.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!