- 软件介绍
- 相关专题
- 下载地址
Apache Thrift简介
Apache Thft提供跨语言服务开发功能。用户可以使用多种语言来开发软件中的服务项目。通过与编辑器结合,他们可以输入代码内容,这样用户就可以设计各种编程语言支持的客户端程序和服务器程序。该软件提供了许多数据类型和接口类型,以满足大多数程序的访问要求。通过组合功能,可以执行数据传输。处理器根据输入/输出协议创建,特定于服务的处理器实现由编译器生成,为用户提供了更方便的服务项编译方案。Apache Thft仍然支持多种语言,如C ++、Java、Python等常用语言,为开发可扩展的跨语言服务提供了更多选择!
Apache Thft软件功能
Apache Thft函数:
接口的描述语言——一切都在IDL文件中指定,从中可以生成多种语言的绑定。
语言绑定-许多语言和环境都支持Thft。
C++
C#
可可粉
D
德尔斐
占线小时
哈斯克尔
爪哇
软件名称
Perl语言
服务器端编程语言(Professional Hypertext Preprocessor的缩写)
计算机编程语言
红宝石
闲聊
~ Namespace-每个Thft文件都位于自己的命名空间中,允许您在多个Thft文件中使用相同的标识符。
命名空间-对于每个Thft文件,您可以指定每种编程语言应该使用的命名空间。
基本类型-Thft有少量基本类型。
常量和枚举-您可以为常量值指定逻辑名称。
结构-使用结构将相关数据分组。结构可以有任何类型的字段。
稀疏结构-未设置的可选基本字段和空引用字段将不会通过有线方式发送。
结构演化-通过使用字段的整数标识符而不是现有的客户端来处理字段的添加和删除。
容器-您可以使用任何类型的集合、列表和映射:基本类型、结构和其他容器。
类型定义——你可以给任何类型起一个更好的名字来描述它。
服务——服务是一组功能。
服务继承——子服务实现其基本服务的所有功能,并且可以具有其他功能。
异步调用——不返回结果的函数可以被异步调用,所以客户端不会被阻塞,直到请求被处理。同一客户端的异步调用可以并行/无序执行。
异常-如果发生错误,函数可以抛出标准或用户定义的异常。
循环结构——从版本0.9.2开始,Thft支持包含自身或稍后声明的其他结构的结构。
无功能的
Apache Thft不支持以下功能:
支柱继承-改用结构组合
多态性-不支持多态性,因为没有继承。
重载-服务中的所有方法必须唯一命名。
异构容器-容器中的所有项目必须属于同一类型。
返回-不能直接从函数返回空值。请改用包装结构或标记值。
Apache Thft软件特色
Apache Thft是一个软件项目,涉及许多编程语言和用例。我们的目标是使跨语言通信和数据序列化尽可能高效和无缝。Thft最初由脸书开发,2007年4月开业,2008年5月进入Apache孵化器。Thft于2010年10月成为阿帕奇TLP。
Apache Thft旨在体现以下价值观:
简单的Thft代码易于使用,没有不必要的依赖。
透明的节俭符合所有语言中最常见的习惯用法。
一致的利基、语言特定的功能是扩展,而不是核心库。
争当第一,优雅第二。
Apache Thft软件优势
1.节俭的类型
Thft类型系统旨在使程序员能够尽可能多地使用本机类型,无论他们使用哪种编程语言。这是基于并取代Thft。的简单IDL提供了为每种目标语言生成代码类型的描述。
2.基本类型
选择基本类型的目的是简化和澄清,而不是众多,而是关注所有编程语言中可用的键类型。
布尔:布尔值(真或假)
字节:8位有符号整数
I6: 16位有符号整数
I32: 32位有符号整数
I:位有符号整数
Double:位浮点数
字符串:使用UTF-8编码进行编码的文本字符串。
3.结构
节俭结构定义了一个公共对象——它们本质上相当于OOP语言中的类,但它们不是继承的。结构有一组强类型字段,每个字段都有唯一的名称标识符。该字段可能有各种注释(数字字段标识、可选默认值等)。)在Thft IDL中描述。
4.容器
节俭容器是强类型容器,这反映在大多数编程语言的公共容器和公共容器类型中。
有三种类型的容器:
列表:元素的有序列表。转换为STL向量、Java数组列表、脚本语言的原生数组等。
Put:无序的唯一元素集。转换为STL集、Java HashSet、Python中的集等。注意:PHP不支持集合,所以类似于List。
映射:严格唯一的键值映射。转换为STL映射、Java HashMap、PHP关联数组、Python/Ruby字典等。虽然提供了默认值,但类型映射不是显式固定的。添加了自定义代码生成器指令,允许在各种目标语言中替换自定义类型。
Apache Thft使用说明
例子
Apache Thft允许您在一个简单的定义文件中定义数据类型和服务接口。将此文件作为输入,编译器将生成代码,以便轻松构建RPC客户端,并跨编程语言无缝通信。您可以直接开始工作,而无需编写大量模板代码来序列化和传输对象以及调用远程方法。
以下示例是一个用于存储Web前端用户对象的简单服务。
节俭定义文件
Python客户端
爪哇
初始化
简洁的界面描述语言
对于Thft版本0.15.0。
Thft接口定义语言(IDL)允许定义Thft类型。Thft代码生成器处理Thft IDL文件,为各种目标语言生成代码,以支持IDL文件中定义的结构和服务。
形容
这是Thft IDL的描述。
文件
每个Thft文档包含0个或多个标题,后面跟有0个或多个定义。
页眉
标头可以是Thft包含、C ++包含或命名空间声明。
节俭包括
Include使另一个文件中的所有符号可见(带前缀),并将相应的include添加到为此Thft文档生成的代码中。
C ++包含
C ++包含将自定义C ++包含添加到此Thft文档的C ++代码生成器的输出中。
命名空间
命名空间声明哪个命名空间/包/模块/等等。此文件中的类型定义将以目标语言声明。命名空间范围指示命名空间适用的语言。范围“*”表示命名空间适用于所有目标语言。
定义
常数
数据类型说明
Typedef为该类型创建一个替代名称。
列举
枚举使用命名值创建枚举类型。如果未提供常数值,则第一个元素的值为0,或者任何后续元素的值大于前一个值。提供的任何常量值都必须是非负值。
塞纳姆
Senum(和Slist)已被弃用,应由Stng替换。
结构
结构是Thft中的基本组件类型。每个字段的名称在结构中必须是唯一的。
注意:xsd_all关键字在脸书内部有一些用途,但在Thft本身没有用处。强烈建议不要使用此功能。
联盟
Union与structure类似,只是它提供了一种在一组可能的字段中传输一个字段的方式,就像C ++中的union {}。因此,工会成员被隐含地认为是可选的(参见需求)。
注意:xsd_all关键字在脸书内部有一些用途,但在Thft本身没有用处。强烈建议不要使用此功能。
反常的
类似于异常,只是它们被设计为与目标语言中的本机异常处理机制相集成。在例外情况下,每个字段的名称必须是唯一的。
需求的一般规则如下:
命令的
写入:必填字段始终写入,需要设置。
Read:必填字段始终为已读,并应包含在输入流中。
默认值:始终写入
如果在读取过程中缺少必需的字段,预期的行为是向调用方指示读取不成功,例如引发异常或返回错误。
由于这种行为,必填字段极大地限制了软版本控制的选项。这些字段不能被丢弃,因为它们必须在读取时显示。如果必填字段将被删除(或更改为可选字段),版本之间的数据将不再兼容。
可选择的
Write:仅在设置可选字段后才写入。
已读:可选字段可能是也可能不是输入流的一部分。
默认值:设置isset标志时写入
大多数语言实现使用推荐的所谓“问题”标志来指示特定的可选字段是否为空。仅写入设置了此标志的字段;相反,只有从输入流中读取字段值时,才会设置标志。
默认要求(隐式)
写作:理论上,字段总是要写的。这条规则有一些例外,见下文。
阅读:与可选字段一样,该字段可能属于输入流,也可能不属于输入流。
默认值:可能不可写(见下一节)
默认要求是一个很好的起点。的必需行为是可选和必需的,因此内部名称为“选择加入,选择退出”。虽然理论上这些字段应该被写入(“req-out”),但实际上,未设置的字段并不总是被写入。当一个字段包含一个值时,顾名思义,它不能通过节俭来传输。做到这一点的唯一方法是根本不写字段,这正是大多数语言所做的。
默认值的语义
关于这一主题的讨论正在进行中。详情请参考JIRA。并非所有的实现都以完全相同的方式对待默认值,但是当前状态或多或少是默认字段通常在初始化时设置的。因此,可能无法写入等于默认值的值,因为读取器将隐式设置该值。另一方面,在任何情况下,实现都可以自由写入默认值,因为没有严格的限制来防止这种情况发生。
这里要记住的主要事实是,任何未写的默认值都是接口版本的隐式部分。如果您更改默认设置,界面也将更改。相反,如果将默认值写入输出数据,则可以随时更改IDL中的默认值,而不会影响序列化数据。
节俭网络栈
Apache Thft网络堆栈的简单表示
运输
传输层为网络读写提供了一个简单的映像。这使得Thft能够将基本传输与系统的其余部分分离(例如,序列化/反序列化)。
以下是公开传输接口的一些方法:
打开
关闭
阅读
写
脸红
除了上述传输接口之外,Thft还使用ServerTransport接口来接受或创建原始传输对象。顾名思义,服务器传输主要用于服务器为传入连接创建新的传输对象。
打开
听
接受
关闭
以下传输模式适用于Thft支持的大多数语言:
文件:读/写磁盘上的文件。
Http:顾名思义
草案
协议映像定义了将内存中的数据结构映射为有线格式的机制。换句话说,协议指定了数据类型如何使用基本传输来编码/解码自己。因此,协议实现控制编码方案并负责(反序列化)。从这个意义上说,协议的一些例子包括ON、XML、纯文本、紧凑二进制等。
这是协议接口:
节俭协议是面向流程的设计。不需要明确的框架。例如,在开始序列化字符串之前,不需要知道字符串的长度或列表中的项数。Thft支持的大多数语言可用的一些协议有:
二进制:非常简单的二进制编码-字段的长度和类型被编码为字节,这是字段的实际值。
紧凑型:描述在节俭-110
数据
处理器
处理器封装了从输入流读取数据并将其写入输出流的功能。输入和输出流由协议对象表示。处理器接口非常简单。
特定于服务的处理器实现由编译器生成。本质上,处理器从行中读取数据(使用输入协议),将处理委托给处理程序(由用户实现),并通过行写入响应(使用输出协议)。
将以上所有功能放在一起:
创建运输
创建用于传输的输入/输出协议。
根据输入/输出协议创建处理器。
等待传入的连接,并将其移交给处理器。
- 安卓合集
- 软件合集
- 浏览器
- 电脑管家
- 安卓游戏
软件排行榜
热门推荐
-
VMware InstallBuilder Enterprise破解版
v20.12.0 / 347 MB / 简体中文
-
Spark Studio官方版
v2.6.3 / 7.78 MB / 简体中文
-
Yearning SQL审核平台官方版
v2.3.2 / 10.2 MB / 简体中文
-
Protege官方版
v5.5 / 38.3 MB / 简体中文
-
HUAWEI LiteOS Studio官方版
v1.45.6 / 115 MB / 简体中文
-
Huawei LiteOS官方版
v5.0.0 / 87.6 MB / 简体中文
-
C语言代码实例助手官方版
v1.0 / 38.5 MB / 简体中文
-
idle python中文汉化版
v3.7 / 1.62 MB / 简体中文
-
Metabase官方版
v0.37.5 / 45.8 MB / 简体中文
-
编程猫硬件助手官方版
v1.4.1.0 / 39.3 MB / 简体中文
装机必备软件
-
word文档密码破解工具应用软件
-
冰点还原永久免费版系统软件
-
人生日历应用软件
-
一彩送货单管理系统应用软件
-
Process View系统软件
-
开心手机恢复大师其他类别
-
pdf文件阅读器应用软件
-
视频剪辑格式工厂应用软件
-
PhotoMetri应用软件
-
specinker应用软件
-
miwifi驱动驱动工具
-
海洋色音效助手影音软件
-
乐播投屏影音软件
-
seo外链助手网络软件
-
AES安全加密记事本安全相关





