thrift入门
2018-07-02 14:19:04 0 举报
AI智能生成
thrift入门
作者其他创作
大纲/内容
概述
最初由Facebook研发,主要用于各个服务之间的RPC通信
RPC(Remote Procedure Call Protocol)——远程过程调用协议
支持跨语言,常用的语言如:C++,JAVA,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,Ocaml
典型的CS结果,客户端和服务端可以使用不同的语言开发
通过中间语言来关联客户端和服务端,IDL(Interface Description Language),接口定义语言
Thrift IDL
基本类型
不支持无符号类型,因为很多编程语言不存在无符号类型,如JAVA
byte:有符号字节
i16:16位有符号整数
i32:32位有符号整数
i64:64位有符号整数
double:64位浮点数
string:字符串
容器类型
集合中的元素可以是除了service之外的任何类型,包括exception
list<T>:有序列表,可以重复
set<T>:无需集合,元素不可以重复
map<K,V>:字典结构
结构体
struct
目的是将一些数据聚合在一起,方便传输管理
枚举
enum
异常
exception
支持自定义异常,规则和struct一样
服务
service
thrift定义服务相当于JAVA中创建Interface一样
创建的service经过代码生成命令之后,就会生成客户端和服务端的框架代码
类型定义
typedef
支持类似C++一样的typedef定义
typedef i32 Integer
注意:末尾没有逗号或分号
常量
const
使用const关键字定义常量
命名空间
namespace
相当于java中的package的意思
主要目的是组织代码
格式是:namespace 语言明 路径,末尾不能有分号
文件包含
include
相当于C/C++中的include,JAVA中的import
例:include "global.thrift"
注释
支持shell风格的注释,以#开头
支持C/C++风格的注释,//,/**/
可选与必选
required
optional
用于表示对应的字段是必填还是可选的
例:
0 条评论
下一页