Thrift

✍ dations ◷ 2025-06-08 01:43:49 #自2013年8月需要澄清文字的条目,应用层协议,数据序列化格式,进程间通信,远端程序呼叫,Facebook软件

Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统)、Cappuccino、Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk。虽然它以前是由Facebook开发的,但它现在是Apache软件基金会的开源项目了。该实现被描述在2007年4月的一篇由Facebook发表的技术论文中,该论文现由Apache掌管。

Thrift包含一套完整的栈来创建客户端和服务端程序。顶层部分是由Thrift定义生成的代码。而服务则由这个文件客户端和处理器代码生成。在生成的代码里会创建不同于内建类型的数据结构,并将其作为结果发送。协议和传输层是运行时库的一部分。有了Thrift,就可以定义一个服务或改变通讯和传输协议,而无需重新编译代码。除了客户端部分之外,Thrift还包括服务器基础设施来集成协议和传输,如阻塞、非阻塞及多线程服务器。栈中作为I/O基础的部分对于不同的语言则有不同的实现。

Thrift支持众多通讯协议:

支持的有:

Thrift还提供众多的服务器,包括:

Thrift一些已经明确的优点包括:

Thrift由C++编写,但可以为众多语言创建代码。要创建一个Thrift服务,必须写一些Thrift文件来描述它,为目标语言生成代码,并且写一些代码来启动服务器及从客户端调用它。下面就是一个这样的描述文件的代码示例:

enum PhoneType { HOME, WORK, MOBILE, OTHER}struct Phone { 1: i32 id, 2: string number, 3: PhoneType type}

Thrift将由这个描述信息生成独立的代码。例如,在Java里,PhoneType将是Phone类中一个简单的enum

相关

  • 二力平衡二力平衡公理是指当系统只受两个力作用时,讨论该物体会发生的变化作用于刚体上的两力,使刚体保持平衡的充要条件是:该两力的大小相等,方向相反且作用于同一直线上。若两力互相平
  • 威廉·亨利·布拉格威廉·亨利·布拉格爵士,OM,KBE,FRS(英语:Sir William Henry Bragg,1862年7月2日-1942年3月10日),英国物理学家、化学家,1915年与其子威廉·劳伦斯·布拉格一同获得诺贝尔物理学奖。威
  • 常 青常青(1957年8月-),中国建筑学家,同济大学建筑与城市规划学院教授、中国科学院院士。他长期从事建筑历史与理论研究,发展了“历史环境再生”学科方向,并主持建立了中国首个“历史建
  • 2-己醇2-己醇,是一种醇类的有机化合物,是在二号碳上接羟基的己醇。它的化学式是C6H13OH、示性式是C4H9CH(OH)CH3,是正己醇的一种异构物。 2-己醇有一个手性中心,故存在光学异构物
  • 1403年重要事件及趋势重要人物
  • 侧耳属侧耳属(学名:Pleurotus)是蕈褶菇类的其中一属。本属包含最广泛的食用菇类之一,平菇。就像其他的担子菌门真菌,本属可经由沿着长菌丝出现的扣子体而辨认。
  • 湖广湖广,一般是指湖北、湖南两省,又称两湖。如湖广总督、湖广安抚使。湖广有行政上和文化、语言上的两重含义。行政上的湖广指位于中国南方的“湖广行省”、“湖广省”,为元朝和明
  • 外阴部生殖器官是指在复杂生物体上任何与有性繁殖及组成生殖系统有关的组织(严格意义上,不一定都属于器官)。另外有相关的性器官一词,广义地说是指会带来性快感的器官。生殖腺是指产生
  • 长株潭城市群长株潭城市群是指中国湖南省内的三个城市长沙市、株洲市和湘潭市所组成的城市群。三市分别是湖南省第1、第3、第4大的城市(按市区非农业人口统计)。三市地缘接近,按建成区最短
  • 乌尔德乌尔德(古诺斯语:;英语:Urd),又译兀儿德,是诺伦三女神其中之一(最年长的一位)。她的名字意味着“过去”,同时也被叫做死亡的女神(Dís of Death)。她的另外两个姐妹分别是薇儿丹蒂和诗蔻