Thrift基础知识汇总--------------(从官网资料中总结的)

翻译 2013年12月05日 20:41:08

一、简介

a)        Thrift是一个跨语言的,高效的序列化的传输框架,内置代码生成引擎,用来在不同的语言之间创建高效无缝的服务接口,支持的语言有:C++,JAVA,PYTHON,PHP,C#等。

二、入门

a)        去thrift官网下载thrift框架;

b)        如果在linux下使用,需要编译安装thrift;如果在window上使用,则直接在命令行中使用即可;

c)        编写一个thrift的idl文件;里面写好命名空间、数据类型和接口;

d)        在命令行下调用thrift –gen java –gen py test.thrift即可;无需考虑哪个做客户端,哪个做服务端;命令完成后,会在当前目录下,生成gen-java和gen-py文件;

e)        命令格式:thrift --gen <language> <Thrift filename>

三、基本类型:Base Types

a)        基本类型的的选择以简洁、清晰为目标,重点关注在所有编程语言中的关键类型;

b)        基本类型介绍:

                        i.             bool:布尔值,真和假;

                      ii.             byte:一个8位的有符号整数;

                     iii.             i16:一个16位的有符号整数;

                     iv.             i32:一个32位的有符号整数;

                      v.             i64:一个64位的有符号整数;

                     vi.             double:一个64位的浮点数;

                   vii.             string:使用utf-8编码的字符串;

c)        注意,基本类型中没有无符号整数,这是因为很多编程语言中都没有无符号数。

d)        特殊类型:

                        i.             binary:二进制序列;

e)        容器类型:

                        i.             list:有序列表;

                      ii.             set:无序列表,元素具有惟一性;

                     iii.             map:键值对;映射类型;

f)         list: An ordered list ofelements. Translates to an STL vector, Java ArrayList, native arrays inscripting languages, etc. set: An unordered set of unique elements.Translates to an STL set, Java HashSet, set in Python, etc. Note: PHP does notsupport sets, so it is treated similar to a List map: A map of strictlyunique keys to values. Translates to an STL map, Java HashMap, PHP associativearray, Python/Ruby dictionary, etc. While defaults are provided, the typemappings are not explicitly fixed. Custom code generator directives have beenadded to allow substitution of custom types in various destination languages.

g)        注意map的key,尽量用基本类型,不要用容器类型;

四、异常

a)        为了同本地语言的异常无缝集成,thrift异常,通常会继承于本地语言的合适的异常类,除此之外,在功能上等价于thrift的结构体;

五、服务接口:

a)        Thrift接口通常要用到thrift的类型,定义一个service在语义上等同于定义一个interface,或者一个抽象类,thrift编译器会自动帮你生成相应的客户端和服务端的存根;在服务端,你需要继承这个stub,实现自己的业务代码;

b)        一个service由一系列的方法组成,每个方法可能有参数和返回类型;

c)        方法的修饰符:

                        i.             async:异步请求,不等待结果即返回;

                      ii.             oneway:好像和上面一样啊

六、其它

a)        关于命名空间:

                        i.             namespace cpp tutorial

                      ii.             namespace d tutorial

                     iii.             namespace java tutorial

                     iv.             namespace php tutorial

                      v.             namespace perl tutorial

                     vi.             还支持*号

b)        关于Include

                        i.             支持C++文件的包含

                      ii.             include "shared.thrift",引入thrift文件

c)        关于注视

                        i.             支持c语言的单行和多行注释

                      ii.             支持#号的单行注视

d)        关于typedef

                        i.             类似于别名的效果

e)        支持const常量定义,支持enum枚举定义

f)         Struts、exception、方法异常参数和方法的形式参数前,记得有编号(一个整型标识)

g)        变量的定义

                        i.             可以有默认值,比如:  i32 num1=0

                      ii.             可以设置为“选择性的”,比如: optional string comment

thrift 核心知识点

Thrift 是一个跨语言的序列化/RPC框架,它含有三个主要的组件:protocol,transport和server,其中,protocol定义了消息是怎样序列化的,transport定义了消息是...
  • stonexmx
  • stonexmx
  • 2016年06月12日 09:27
  • 186

thrift 基础知识点整理 server protocol transport

Thrift is a cross-language serialization/RPC framework with three major components, protocol, transp...
  • stonexmx
  • stonexmx
  • 2016年06月12日 09:45
  • 459

Html5+CSS3基础知识汇总-CSS3篇

今天总结的是CSS3的学习内容,CSS3的简介、CSS3中新增的样式以及新增样式具体属性的实现。...
  • qq_27348951
  • qq_27348951
  • 2016年11月28日 15:26
  • 351

linux基础知识总结

Linux是多用户,多任务的操作系统,这意味着多人可以同时使用一台主机。因为每个用户的个人喜好与隐私问题,文件的所有者就显得尤为重要。将用户分为不同的组别当然是为了方便管理。因此用户与文件之间的关系就...
  • wangdan199112
  • wangdan199112
  • 2015年02月28日 20:07
  • 1535

Android基础知识点总结

Android基础知识点总结在学习了很长一段时间的Android基础内容,如果不做及时的复习,那么后面的项目学习起来可能就没那么顺利了,并且复习也是一件很愉快的事。古人有云:“学而时习之不亦说乎”,应...
  • u010495996
  • u010495996
  • 2016年05月07日 19:25
  • 5650

python基础知识点总结

一、对迭代器进行切片#!/usr/bin/env python #-*- coding:utf-8 -*-from itertools import islice #islice(iterable, ...
  • m0_37886429
  • m0_37886429
  • 2017年12月11日 10:57
  • 125

Android基础知识整合篇——Activity知识点

Android基础知识部分整合连载篇——四大组件——Activity     今天,我着手开始android基础知识总体整合以及复习(结合郭霖大神的《第一行代码》),来对我这段时间碎片化的知识进行总结...
  • wxj1018
  • wxj1018
  • 2016年05月30日 20:38
  • 5356

Android学习笔记:Android基础知识总结

一、布局管理器 a)         线性布局                         i.              有点像AWT编程中的FlowLayout,不同的是,Android的...
  • duancanmeng
  • duancanmeng
  • 2012年03月09日 10:23
  • 19634

oracle数据库基础知识学习笔记

一、SQL语言分类: 1.DDL(数据定义语言):  create(创建)    alter(修改)  drop(删除)------------主要是对表操作。   2.DML(数据操作...
  • u011955534
  • u011955534
  • 2013年11月04日 18:52
  • 6464

开源库muduo学习-总结篇

首先感谢原著 陈硕大牛的奉献,使我对TCP网络编程加深认识,清楚了多线程编程模型及适用范围,现代C++资源管理,事件回调的用法; 木铎是一个 开源的tcp网络库,帮助我们实现底层TCP逻辑,我们只需...
  • yahugaosong
  • yahugaosong
  • 2017年01月13日 10:41
  • 135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Thrift基础知识汇总--------------(从官网资料中总结的)
举报原因:
原因补充:

(最多只允许输入30个字)