Thrift

✍ dations ◷ 2025-11-27 06:16:16 #自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

相关

  • 静息电位静息电位,或称静态电位、静止电位、静止膜电位、休息电位、休息膜电位(英文:resting potential),是神经元处于相对静止状态时,细胞膜内外存在的恒定电位差。其主要成因源于钠钾
  • 浮游植物浮游藻类指悬浮于水中的微小藻类(藻类并非植物)。是浮游生物社区中的自养生物部分,是海洋和淡水盆地生态系统(英语:Aquatic ecosystem)的关键部分。浮游藻类广泛存在于河流、湖
  • 罗杰·亚当斯罗杰·亚当斯(英语:Roger Adams,1889年1月2日-1971年7月6日),美国有机化学家。著名的研究成果包括发现用于氢化、氢解、脱氢和氧化反应的亚当斯催化剂和亚当氏毒气的合成。1926年
  • 特罗姆兰岛特罗姆兰岛(法语:Île Tromelin,发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Genti
  • 量化测试一篮子货币(currency basket,又称货币组合、一篮通货)是具有不同权重的所选货币的组合,通常用于降低汇率波动的风险。 例如欧洲共同体成员国使用的货币欧元。 另一个例子是国际
  • 台湾书院台湾书院(英语:Taiwan Academy),是中华民国文化部在2011年成立的非营利组织,其目的为在海外推广正体字与中华民国国语,以及学术上的台湾研究和汉学研究 ,是政府拓展软实力的途径之
  • 冬季战争苏联惨胜芬兰苏联冬季战争(芬兰语:Talvisota,瑞典语:Vinterkriget,俄语:Зимняя война)是苏联与芬兰于第二次世界大战初期爆发的战争,自1939年11月30日由苏联向芬兰发动进
  • 武汉工业大学武汉工业大学是一所已不存在的大学,位于湖北武汉。2000年与武汉汽车工业大学、武汉交通科技大学合并组建武汉理工大学。
  • M116M116榴弹炮(M116 howitzer(1962年改名)、75mm Pack Howitzer M1、75mm Pack Howitzer M1A1、七五山炮)在第二次世界大战时被称为“M1A1榴弹炮”,由于它可以被拆开成为6个部分分
  • 法国选举 政治主题法国是一个代议民主制国家。立法和行政机构的公职人员不是由公民间接或直接选出,就是由当选的官员任命而产生。有时,政府也会举行公投来与法国全体公民直接商议特定