Thrift

✍ dations ◷ 2025-07-26 05:40:04 #自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

相关

  • 核膜核膜(英语:nuclear membrane 或 karyotheca),又称核被膜或核封套(nuclear envelope)是包围真核细胞细胞核,分隔开细胞核和细胞质的生物膜。核膜由两层磷脂双分子层构成,厚度共约20-1
  • 气体分压气体分压(英语:partial pressure)指的是当气体混合物中的某一种组分在相同的温度下占据气体混合物相同的体积时,该组分所形成的压力。比如将一瓶空气中的氮气、二氧化碳和稀有气
  • FeI碘化铁(I)是一种无机化合物,化学式为FeI。碘化铁(I)不稳定,可以通过Fe(CO)2I的热分解得到。在高压(123~360 GPa)下,它的空间群为P1,晶胞参数a=4.257, b=4.256, c=4.262, α=100.9
  • 非监督式学习无监督学习(英语:unsupervised learning)是机器学习的一种方法,没有给定事先标记过的训练示例,自动对输入的数据进行分类或分群。无监督学习的主要运用包含:聚类分析(cluster analy
  • 弗兰克塞扎尔-奥古斯特-让-纪尧姆-胡伯特·弗兰克(法语:César-Auguste-Jean-Guillaume-Hubert Franck,1822年12月10日-1890年11月8日),比利时裔法国作曲家、管风琴演奏家和音乐教育家
  • 内政立法院内政委员会(英语:Internal Administration Committee of the Legislative Yuan),为中华民国立法院下设一常务委员会,负责审查内政、选举、两岸、原住民、客家、海洋、……
  • 网易博客网易博客是网易推出的博客服务,于2006年9月1日正式上线,是中国流行的博客服务之一,2018年8月21日,网易宣布将从2018年11月30日00:00起正式停止网易博客网站的运营,用户可将博客数
  • 美国科技美国科技美国的科学技术一直以强大在世界上著称,人类史上很多重要的发明,包括白炽灯、轧棉机、通用零件、生产线等都是源自美国,美国第一个研究出了原子弹,在冷战期间实行阿波罗
  • 香槟-阿登香槟-阿登(法语:Champagne-Ardenne)是法国东北部的一个旧大区,北邻比利时。面积25,606平方公里,人口1,342,363。下辖阿登省 (08)、奥布省 (10)、马恩省 (51)、上马恩省 (52)。201
  • KIRREL32CRY· plasma membrane · integral to membrane · axon · principal sensory nucleus of trigeminal nerve development KIRREL(Kin of IRRE-like protein 3、类IRR