Apache Thrift的简单使用

Apache Thrift的简单使用

 

Apache Thrift的简单使用

———————-

 

1. 简介

Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自己主动生成服务代码框架。用户仅仅要在其之前进行二次开发即可,对于底层的RPC通讯等都是透明的。眼下它支持的语言有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.

 

2. 下载与安装

能够在http://incubator.apache.org/thrift/download/去下载它的最新版本号,眼下最新版本号是0.5.0。另外你也能够check出它的svn,方法例如以下:

svn co http://svn.apache.org/repos/asf/thrift/trunk thrift

cd thrift

 

在它的jira中看到,它的0.6版本号也非常快就会出来了。

 

我的本本是debian 6.0,假设用ubuntu的兄弟安装方法也是一样的

 

 

这时thrift的代码生成器和一些库文件就生成好了。

 

你能够用例如以下命令看一下thrift的版本号信息

 

 

 

3. 一个简单的样例

在thrift源码文件夹有一个叫tutorial的文件夹,进行当中后执行thrift命令生成对应的服务代码:

 

 

执行完之后会在当前文件夹看到一个gen-cpp文件夹,当中就是thrfit命令生成的代码

 

这时你cd到tutorial/cpp文件夹,执行make,生成对应的CppServer与CppClient程式。

 

这时你能够用./CppServer执行服务端,让其监听一个特定的port

 

这时你能够用./CppClient执行client程式,让其去连接服务端,调用其所相应的服务。默认调用后会输出例如以下信息:

 

 

 

假设你的终端中也出现了如上的信息,恭喜你,执行成功了。假设在执行CppServer的时候找不到动态库,看看你是不是执行了make install,假设执行了,再执行一下sudo ldconfig试试。再用ldd CppServer看一下它有没有找到对应的动态库了。

 

4. 样例分析

 

4.1 Thrift IDL的分析

 

这边有两个IDL文件,内容例如以下:

 

 

 

4.2 服务端与client代码的分析

   4.2.1 c++服务端

   在tutorial/cpp文件夹中的CppServer.cpp是它的服务代码,主要分成两部分,

   一部分是main方法用于做一些初始化与服务的启动,第二部分对于IDL中定义的接口的实现

  

 

 

还有一部分例如以下:

 

4.2.2 c++client

 

4.2.3 其他代码的实现

在tutorial文件夹中有其他代码的样例,如erl,java,python,perl,ruby等。

 

5 參考

1. http://incubator.apache.org/thrift/

2. http://incubator.apache.org/thrift/static/thrift-20070401.pdf

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119194.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows程序设计——窗口键盘消息滚动事件[通俗易懂]

    Windows程序设计——窗口键盘消息滚动事件[通俗易懂]设置头文件#include <Windows.h>#include “systems.h”以下是头文件内容#pragma once#include <Windows.h>#define NUMLINES ((int)(sizeof sysmetrics/sizeof sysmetrics[0]))struct { int Index; char sz…

  • java有哪些服务器_java服务器有哪些?

    java有哪些服务器_java服务器有哪些?java服务器有哪些?应用服务器主要为应用程序提供运行环境,为组件提供服务。Java的应用服务器很多,从功能上分为两大类,JSP服务器和JavaEE服务器,也可分其他小类。JSP服务器有Tomcat、BejyTiger、Geronimo、Jetty、Jonas、Jrun、Orion、Resin等等。JavaEE服务器有TongWeb、BESApplicati…

  • 常用停用词表整理(哈工大停用词表,百度停用词表等)

    常用停用词表整理(哈工大停用词表,百度停用词表等)辣鸡CSDNhttps://github.com/goto456/stopwordshttps://zhuanlan.zhihu.com/p/30002654转载于:https://www.cnblogs.com/0n-the-way/p/10544285.html

  • CreateFile()打开串口失败,返回句柄值为0xffffffff

    CreateFile()打开串口失败,返回句柄值为0xffffffff出错情况:设备1和设备2分别使用COM1和COM2外界通信,在不关闭软件的情况下,调换串口(即设备1/2,分别使用COM2/1),此时出错?以下是查找原因的步骤:_hCommHandle=::CreateFile( _szCommStr, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLA

  • 伽马校正和颜色空间

    伽马校正和颜色空间一、伽马校正所谓gamma校正,实际上是一个颜色的非线性曲线变换。下面来解释这个曲线存在的原因。1.1人眼的非线性视觉效应为什么要有gamma校正了。一言以蔽之,人眼的生理效应。如下图所示,第一行是人眼感受到的线性亮度变化,第二行是真实的非线性亮度变化。可以得出结论,首尾两端是一致的,但是中间值变化不一致;真实的中间亮度值必须更大,才能得到人眼感知的线性亮度变化。我们的目的是让人眼感受到线性的亮度变化曲线,因此输入亮度必须是第二行这种非线性的亮度变化曲线。第二行的亮度变化曲线,就是伽马校正曲线

  • navicate15 激活码(注册激活)

    (navicate15 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号