Thrift

✍ dations ◷ 2025-12-07 19:08:40 #自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

相关

  • 课程教程是一个精心设计的教学计划,藉以向学生传授社会认为重要的学识及传统的价值观。课程不限于课堂内,亦可以包含课堂以外的非规范学习。 广义地讲,课程是学习者从无知通过学习
  • 美国各州美国州份是指其主权与美国联邦政府共享的政治实体之一,在联邦内这样的实体共有五十个。由于各政治实体的主权与联邦政府共享,因此一个美国人的身份,可以同时是联邦的公民及其户
  • DNA运算DNA运算(DNA computing,或译DNA计算)是一种电脑运算形式,利用DNA、生物化学以及分子生物学原理,而非传统上以硅为基础的电脑技术。DNA运算,或更广泛的说,分子运算,是一个新出现的交
  • 埃里温坐标:40°11′N 44°31′E / 40.183°N 44.517°E / 40.183; 44.517埃里温(亚美尼亚语:Երևան,转写:Yerevan)是西亚国家亚美尼亚共和国的首都。在西方有叶里万(Erivan)、叶烈布
  • 花呢格纹花呢格纹是一种由数种色彩不同的直、横条纹交错构成的花样。花呢格布最早都是由羊毛织成的,但今日也有许多纺织厂以不同材质织造。花呢格纹在苏格兰的历史上源远流长;传统苏格
  • 黎曼曲面数学上,特别是在复分析中,一个黎曼曲面是一个一维复流形。黎曼曲面可以被视为是一个复平面的变形版本:在每一点局部看来,他们就像一片复平面,但整体的拓扑可能极为不同。例如,他们
  • .한국.kr为韩国国家和地区顶级域(ccTLD)的域名。此外也拥有韩文顶级域名.한국。A .ac .ad .ae .af .ag .ai .al .am .ao .aq .ar .as .at .au .aw .ax .az   B .ba .bb .bd .be
  • 久大精盐久大精盐公司,1914年成立于塘沽(今滨海新区),由范旭东等人一手创办,其最大的贡献之一是为永利碱厂和黄海化学工业研究社的创办提供了雄厚的资金、技术和人才支持,是中国化学工业“
  • 韦尔德县韦尔德县 (Weld County, Colorado)是美国科罗拉多州北部的一个县,北邻内布拉斯加州和怀俄明州。面积8,443平方公里。根据美国2000年人口普查,共有人口180,936人,2005年人口为22
  • 蓝/白筛蓝/白筛是一种载体遗传筛选技术,它可以快速且方便的检测重组细菌中以载体DNA为基础的分子复制实验。将合适的脱氧核糖核酸片段连接成一个载体DNA。该载体再被植入到宿主细胞(