Thrift

✍ dations ◷ 2025-02-23 16:37:35 #自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

相关

  • 7世纪601年1月1日至700年12月31日的这一段期间被称为7世纪。唐朝取代隋朝领导中国,而本世纪末期武周中断了李唐朝廷。经历“贞观之治”、“永徽之治”和“武周之治”后,疆域辽阔、
  • ThOsub2/sub二氧化钍,别名氧化钍,化学式ThO2。硝酸钍溶液与草酸溶液反应沉淀出草酸钍。经过滤、洗涤、干燥,并在650~800°C下灼烧,制得二氧化钍。二氧化钍是不溶于水的重质白色粉末,有放射性
  • 足球妈妈足球妈妈(英语:Soccer mom)一词指北美中产阶级家庭贤妻良母型妇女。她们一般住在郊区,花大量时间接送小孩去参加足球等课外活动。因为足球妈妈一般是中间选民,这个词自90年代中期
  • 酒咖啡酒咖啡是指加入了酒精的咖啡饮料,也是咖啡的主要饮用方式之一。有时除了咖啡和酒之外,也会加入砂糖和鲜奶油等其他原料。需要注意的是,在鸡尾酒等酒类饮料加入咖啡并不能算是酒
  • 西格陵兰暖流西格陵兰洋流(West Greenland Current)为一个弱小的冰冻洋流,沿着格陵兰西岸向北流动。西格陵兰洋流的起源为东格陵兰洋流在格陵兰南端的绕流。
  • 自溶自溶可以指:
  • 丹尼·罗德里克丹尼·罗德里克(土耳其语:Dani Rodrik;1957年8月14日-)土耳其裔和经济学家。普林斯顿高等研究院教授。他擅长于国际经济学,发展经济学,国际政治经济。出生于伊斯坦布尔,毕业于罗伯特
  • 明军明朝军事指明朝时期的军队,明代早期军队的来源,有诸将原有之兵,即所谓从征,有元兵及群雄兵归附的,有获罪而谪发的,而最主要的来源则是籍选,亦即垛集军,是由户籍中抽丁而来。除此之外
  • 美国联邦地区法院 美国众议院议长:南希·裴洛西(民主党) 多数党领袖(英语:Party leaders of the United States House of Representatives):斯坦利·霍耶(民主党) 少数党领袖(英语:Party leaders of the
  • 德国大学列表德国的大学包括有博士学位授予权的综合性大学(Universität)、无博士学位授予权的应用科技学院(Fachhochschule)和艺术类院校,按办学性质可分为公立、私立和教会学校。以下是德国