Thrift

✍ dations ◷ 2025-12-02 20:26:03 #自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

相关

  • 火灾暴风火灾暴风(英语:Firestorm),又称火风暴或火灾风暴,是大范围火灾本身所创造和维持的风力系统,是严重野火或山火中的一种自然现象。也会用来描述一般的巨型火灾 ,火灾风暴的确定特征必
  • 大陆性气候大陆性气候是地球中纬度大陆腹地的一种气候类型,由于受海洋的影响较小,有年温差大、降水少的特点。除了北美东海岸地区的温带大陆性湿润气候以外,本气候的冬季通常有一个固定的
  • 行政法院系统法国行政法院是法国司法机构的一个分支,专门处理以政府为被告的诉讼。它包括很多下属机构,其中最高级别的是法国国家行政法院。
  • 超金属超金属是电子简并态物质的别称,是通常物质在超高压下形成的,由原子核紧密排列,浸泡在自由电子海洋中的物质状态。(普通金属是金属阳离子浸泡在自由电子海洋中的物质状态)最简单,也
  • 阿蒙涅姆赫特一世阿蒙涅姆赫特一世或阿曼尼赫特一世(英语:Amenemhat I)(约公元前1991年—约公元前1962年在位)埃及法老。他是第十二王朝的建立者。阿蒙涅姆赫特一世不是王室成员出身,因而十分注
  • 贝灵厄姆贝灵厄姆(Bellingham)位于美国华盛顿州北部,是霍特科姆县的县治。根据2000年美国人口普查,贝灵厄姆共有67,171人,其中白人占87.88%、亚裔美国人占4.25%、土著美国人占1.48%。
  • 国际单位制基本单位的重新定义国际基本单位2019年新定义是指,在2018年11月16日,第26届国际计量大会一致通过了新的国际单位制基本单位定义的提案,新定义于2019年5月20日生效。国际单位制希望其单位定义基准
  • 文森特·迪维尼奥文森特·迪维尼奥(英语:Vincent du Vigneaud,1901年5月18日-1978年12月11日),美国生物化学家,1955年获诺贝尔化学奖。迪维尼奥于1918年毕业于Schurz高中后,在伊利诺伊大学香槟分校化
  • 前344年
  • AziatixAziatix组合是由3位美籍韩裔歌手组成,分别是歌手李玖哲、Flowsik和Eddie Shin。他们曾于2011年在MAMA颁奖礼上获得亚洲新人奖(The Best New Asian Group )。该组合的迷你专辑