没有合适的资源?快使用搜索试试~ 我知道了~
首页thrift介绍、各种server的比较、多接口服务实现
资源详情
资源评论
资源推荐
1 前言
Thri 是 facebook 技术核心框架之一,不同开发语言开发的服务可以通过该框架实现通
信。Thri 通过接口定义语言 (interface denion language,IDL) 来定义数据类型和服
务,Thri 接口定义文件由 Thri 代码编译器生成 thri 目标语言的代码(目前支持 C++,Java,
Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk 和 OCaml),并由生成的代码负
责 RPC 协议层和传输层的实现。
简而言之,开发者只需准备一份 thri 脚本,通过 thri code generator(像 gcc 那样输
入一个命令)就能生成所要求的开发语言代码。
2 特性
接口描述语言
Thri 支持很多语言和环境
C++
C#
Cocoa
D
Delphi
Erlang
Haskell
Java
OCaml
Perl
PHP
Python
Ruby
Smalltalk
命名空间(namespaces ),每个 thri 文件是在其自己的命名空间,允许您在多个
thri 文件使用相同的标识符
编程语言的命名空间(language namespaces),thri 指定的命名空间可以应
用于每个语言。
基础类型(base types),thri 有少量的基础类型。见 1.2。
常量和枚举(constants and enumeraons),常量值可以被指定逻辑名
结构体(structs ),使用结构体表示一组相关数据(java 的 Pojo),结构体
可以有任何类型的字段。
sparse structs,可选的没被赋值的基础类型和 null 的引用不会被发送。
struct evoluon,通过使用整数标识字段,添加和删除字段不会破坏现有程序。
容器(containers ),可以将基础类型、结构体、其他容器放入
set、list、map。
类型定义(type denions),任何类型可以被指定名称以便更好的表述它。
服务(services ),一个服务就是一组方法。
服务继承(service inheritance),子服务有基服务的所有方法并可以添加新方
法。
异步调用(asynchronous invocaons),函数不返回结果,异步调用的客户不阻塞,
直到服务器已经完成处理请求。服务端可以并行执行相同客户端的异步调用。
异常(excepons ),如果发生错误方法可以抛出标准或自定义的异常。
3 不支持的特性
循环结构体(cyclic structs),结构体仅仅可以包含已被定义的结构体,不可
以包含自身。
结构体继承(struct inheritance),使用合成的结构体替代。
多态(polymorphism ),由于没有继承,所以也没有多态。
重载(overloading ),在一个服务内的所有方法必须拥有唯一的名称。
异构容器(heterogeneous containers),一个容器内只能有相同类型数据。
返回 null(Null return),null 不能直接从方法返回,可以用包装的结构体或
标记的值替代。
4 对各个语言的支持情况
5 语法参
考
1.1 类型
Thri 类型系统包括预定义基本类型,用户自定义结构体,容器类型,异常
和服务定义。
1.2 基本类型
bool: 布尔值 (true or false), one byte, 对应 Java 的 boolean
byte: 8 位有符号字节, 对应 Java 的 byte
i16: 16 位有符号整型, 对应 Java 的 short
i32: 32 位有符号整型, 对应 Java 的 int
i64: 64 位有符号整型, 对应 Java 的 long
double: 64 位浮点型, 对应 Java 的 double
string: 未知编码文本或二进制字符串,对应 Java 的 String
注意 : Thrift 不支持无符号整型,因为 Thrift 目标语言没有无符号整
型,无法转换。
1) 容器(Containers)
Thrift 容器与流行编程语言的容器类型相对应,采用 Java 泛型风格。
它有 3 种可用容器类型:
list<t1>: 元素类型为 t1 的有序表,容许元素重复。Java
ArrayList。
set<t1>:元素类型为 t1 的无序表,不容许元素重复。Java
HashSet。PHP dictionary。
map<t1,t2>: 键类型为 t1,值类型为 t2 的 kv 对,键不容许重
复。Java HashMap。PHP associative。
容器中元素类型可以是除了 service 外的任何合法 Thrift 类型(包括结构
体和异常)。
2) 结构体和异常(Structs and Exceptions)
Thrift 结构体在概念上类似于(similar to)C 语言结构体类型--将相关属
性封装在一起的简便方式。Thrift 结构体将会被转换成面向对象语言的类
(javabean)。
剩余10页未读,继续阅读
cumtb_liuzheng
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论8