Thrift 类型介绍

Thrift 类型

Thrifth 类型旨在使程序员能够尽可能的使用目标语言的类型,不用的是哪种编程语言。 本文基于 Thrift Whitepaper 编写。 Thrift IDL(翻译进行中) 将介绍每种Thrift类型在对应语言中的类型

基础类型

基础类型以简单,清析的原则选取自所有语言可用的主要类型

类型说明备注
bool布尔1位 值为 truefalse
i8/byte有符号整型8 位(1 字节)
i16有符号整型16位(2 字节)
i32有符号整型32位(4 字节)
i64有符号整型64位(8 字节)
double浮点数64位(8 字节)
string字符串(UTF-8编码)

说明: 没有无符号整型,是因为大部分编程语言没有无符号整型

特殊类型

  • binary 一组未编码的字节

说明: 该类型目前为一种特殊的字符串类型,以提高无Java的互用性。目录的规则是将其提升为基本类型

结构体(Structs)

  • 用于定义通用对象,本质上等价于面向对象语言里的类, 但没有继续体系。
  • 一个结构体,包含若干强类型字段,每个字段都有一个唯一的标识符(identifier), 也可能包含若干附加信息(如:数字ID, 默认值(可选),等), 详见: Thrift IDL (翻译进行中)

容器(Containers)

Thrift 提供多数编程语言常见和常用的容器, 包含以下三种容器:

  1. list: 一个有序元素列表,对应类型 STL vector, Java ArrayList,脚本语言的数组
  2. set: 一个无序,无重复元素列表,STL set, Java HashSet, Python set, PHP List(PHP 不支持set)
  3. map: 键值对(键唯一) STL map, Java HashMap, PHP associative array, Python/Ruby dictionary

容器元素可以是任意有效Thrift类型

说明: 为了提高兼容性,map的键只能是基础类型,有些语言不支持,JSON 协议也只支持基础类型为键

异常 (Exceptions)

基本上和结构体是一样的,唯一的区别就是会继续目标语言的异常基类,以便无缝集成对应语言的异常处理

服务(Services)

服务定义需要用到Thrift类型。定义一个服务,语义上与面向对象语言定义一个接口(或定义一个全是抽象方式的抽象类型), Thrift 编译器会生成实现这个接口的,客户端和服务端

一个服务由若干个方法(有名字,不是匿名方法), 每个方法可以有若干个参数和一个返回类型

说明void 是一个有效的返回类型,用户定义的其它的Thrift类型也是有效的。 在void修饰的方法前可以加一个 oneway 限定符(可以这么叫吧?), 由此产生的方法,客户端发送请求后不会等待服务端的响应。 如果没加,那么就算返回类型是void, 服务端会响应,客户端也会接收响应以确定服务端操作执行完成。而oneway 修饰的方法只在传输层(transport layer) 保证请求是发送成功的 由同一个客户端发送的oneway方法的多次请求,在服务端处理是并行的(无序的)

来源

译自官方文档 https://thrift.apache.org/docs/types

转载于:https://my.oschina.net/u/915811/blog/861471

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值