Thrift

✍ dations ◷ 2025-11-26 05:53:30 #自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

相关

  • 2C-B2,5-二甲氧基-4-溴苯乙胺(2,5-dimethoxy-4-bromophenethylamine,2C-B),一种隶属2C-X家族(英语:2C's)的致幻剂,由Alexander Shulgin于1974年合成,其制备与应用剂量(12-24mg)在PiHKAL一书
  • 多多纳多多纳(多立克希腊语Δωδώνα, 爱奥尼亚希腊语:Δωδώνη, Dòdònè)是位于希腊西北部伊庇鲁斯的一个神谕处。虽然多多纳最早的铭文历史只能追溯至约公元前550-560年,但
  • 巴格达巴格达(阿拉伯语:بغداد‎,阿拉米语:ܒܓܕܐܕ),古称报达,伊拉克首都,同时它也是伊拉克巴格达省的首府,为伊拉克最大城市及经济文化中心。位于美索不达米亚平原中部地区,底格里斯
  • 卡酥来砂锅卡酥来砂锅(英语:Cassoulet)是英法百年战争时发明,为了慰劳前线的士兵。这道菜由卡酥来(Cassoulet)这种陶土制的食器熬煮而成,其中烹调的时间非常费时。它的主要食材有油封鸭或羊肉
  • 圆环病毒科圆环病毒科(Circoviridae),又译作圆形病毒科。是单链DNA病毒中的一科,目前较少被研究。底下有二个属:
  • 巴贝尔堡摄影棚巴贝尔斯堡摄影棚(德语:Studio Babelsberg)是位于德国波茨坦的制片厂,为全世界历史最悠久的制片厂,建于1912年,占地2万5千平方米,建成百年以来,拍摄电影过千部,其中较著名的电影包括
  • 奥里斯奥里斯(加泰罗尼亚语:Orís),是西班牙加泰罗尼亚巴塞罗那省的一个市镇。总面积27平方公里,总人口284人(2013年),人口密度10.5人/平方公里。
  • 阿德拉尔山脉伊福加斯山是马里的山体,位于该国东北部基达尔区,面积25万平方公里,海拔高度890米,该地区城镇包括基达尔、阿贝巴拉、阿盖洛克和泰萨利。坐标:19°07′N 1°45′E / 19.117°N 1.
  • 布鲁克莱恩 (马萨诸塞州)布鲁克莱恩(英语:Brookline)是位于美国马萨诸塞州诺福克县的一个镇。根据美国人口调查局2000年统计,共有人口57,107人,其中白人占81.08%、亚裔美国人占12.83%、非裔美国人占2.74%
  • 多甲总纲见内文多甲总纲(学名:Multicrustacea)是甲壳亚门动物经支序亲缘分析之后,把原来成员重新组合的两个两个总纲级演化支之一(另一总纲是寡甲总纲),占甲壳亚门所有物种数量的五分之四,包