欢迎来到神奇下载!我们唯一域名是:www.sqxzz.com

Apache Thrift 官方版 v0.14.1

更新时间:2022-06-05 22:14:46

软件介绍

Apache Thft提供跨语言服务开发功能,用户可以在软件上使用多种语言开发你的服务项目,结合编辑器就可以输入代码内容,让用户可以设计各种编程语言支持的客户端程序和服务端程序,软件提供很多数据类型,提供很多接口类型,满足大部分程序接入需求,结合功能就可以执行数据传输,根据输入/输出协议创建处理器,特定于服务的处理器实现由编译器生成,为用户提供更方便的服务项目编译方案;Apache Thft支持的语言还是很多的,C ++,Java,Python等常用的语言都支持,为可扩展的跨语言服务开发提供更多选择!

Apache Thft软件功能

Apache Thft功能:

界面描述语言-一切都在IDL文件中指定,可以从该文件生成多种语言的绑定。

语言绑定-许多语言和环境都支持Thft

C++

C#

Cocoa

D

Delphi

Erlang

Haskell

Java

OCaml

Perl

PHP

Python

Ruby

Smalltalk

~名称空间-每个Thft文件位于其自己的名称空间中,允许您在多个Thft文件中使用相同的标识符

语言名称空间-每个Thft文件,您可以指定每种编程语言应使用的名称空间

基本类型-Thft有少量的基本类型。

常量和枚举-可以为常量值分配逻辑名称

结构-使用结构对相关数据进行分组。结构可以具有任何类型的字段。

稀疏结构-尚未设置的可选基本字段和为空的参考字段将不会通过电线发送

结构演化-通过使用字段的整数标识符来处理字段的添加和删除,而不会现有的客户端

容器-您可以使用任何类型的集,列表和映:基本类型,结构和其他容器。

类型定义-可以给任何类型一个更好地描述它的名称

服务-服务是一组功能

服务继承-子服务实现其基本服务的所有功能,并且可以具有其他功能

异步调用-可以异步调用不返回结果的函数,因此在完成对请求的处理之前,不会阻塞客户端。可以并行/无序执行同一客户端的异步调用

异常-如果发生错误,则函数可以引发标准或用户定义的异常

循环结构-从0.9.2版开始,Thft支持包含自身的结构或以后要声明的其他结构。

非功能

Apache Thft不支持以下功能:

struct继承-改用struct组合

多态-由于没有继承,因此也不支持多态

重载-服务中的所有方法都必须唯一地命名

异构容器-容器中的所有物品都必须是同一类型

空返回-无法直接从函数返回空。使用包装器结构或标记值代替

Apache Thft软件特色

Apache Thft是一个软件项目,涉及多种编程语言和用例。我们的目标是使跨语言的可,高能的通信和数据序列化尽可能高效和无缝。Thft最初由Facebook开发,于2007年4月开源,并于2008年5月进入Apache孵化器。Thft于2010年10月成为Apache TLP。

Apache Thft旨在体现以下价值观:

简单 Thft代码简单易用,没有不必要的依赖关系。

透明 节俭符合所有语言中最常见的习惯用法。

一致 生态位,特定于语言的功能属于扩展,而不是核心库。

能 力争能第一,优雅第二。

Apache Thft软件优势

1、节俭的类型

Thft类型系统旨在使程序员无论使用哪种编程语言,都可以尽可能多地使用本机类型。此基于并且取代了Thft中的。的节俭IDL提供了用于产生针对每个目标语言代码的类型的描述。

2、基本类型

选择基本类型的目的是简化和清楚而不是数量众多,重点放在所有编程语言中可用的键类型上。

bool:布尔值(对或错)

字节:8位有符号整数

i16:16位有符号整数

i32:32位有符号整数

i:位有符号整数

double:位浮点数

字符串:使用UTF-8编码编码的文本字符串

3、结构

节俭结构定义了一个公共对象–它们本质上等同于OOP语言中的类,但没有继承。一个结构具有一组强类型字段,每个字段都有一个唯一的名称标识符。字段可能具有Thft IDL中描述的各种注释(数字字段ID,可选的默认值等) 。

4、容器

节俭容器是强类型的容器,它们映到大多数编程语言中的常用容器和常用容器类型。

共有三种容器类型:

列表:元素的有序列表。转换为STL向量,Java ArrayList,脚本语言的本机数组等。

放:无序的唯一元素集。转换为STL集,Java HashSet,Python中的集等。注意:PHP不支持集,因此与List相似。

map :严格唯一的键到值的映。转换为STL映,Java HashMap,PHP关联数组,Python / Ruby字典等。尽管提供了默认值,但类型映未明确固定。添加了自定义代码生成器指令,以允许以各种目标语言替换自定义类型。

Apache Thft使用说明

例子

Apache Thft允许您在简单的定义文件中定义数据类型和服务接口。将该文件作为输入,编译器将生成用于轻松构建跨编程语言无缝通信的RPC客户端和的代码。您可以直接开始工作,而无需编写大量的样板代码来序列化和传输对象并调用远程方法。

以下示例是一个简单的服务,用于存储Web前端的用户对象。

节俭定义文件

Python客户端

Java

初始化

节俭的接口描述语言

对于Thft版本0.15.0。

Thft接口定义语言(IDL)允许Thft Types的定义。Thft代码生成器处理Thft IDL文件以生成用于各种目标语言的代码,以支持IDL文件中定义的结构和服务。

描述

这是Thft IDL的描述。

文件

每个Thft文档包含0个或多个标头,后跟0个或多个定义。

标头

标头可以是Thft包含,C ++包含或名称空间声明。

节俭包含

包含使来自另一个文件的所有符号可见(带有前缀),并将相应的包含添加到为此Thft文档生成的代码中。

C ++包含

C ++包含将自定义C ++包含添加到此Thft文档的C ++代码生成器的输出中

命名空间

名称空间声明了哪个名称空间/程序包/模块/等。该文件中的类型定义将以目标语言声明。名称空间范围指示名称空间适用的语言。范围“ *”表示名称空间适用于所有目标语言

定义

常量

typedef

typedef为类型创建备用名称

枚举

一个枚举创建一个带有命名值的枚举类型。如果没有提供常量值,则第一个元素的值为0,或者对于任何后续元素的值都大于先前的值。提供的任何常量值都必须为非负数。

Senum

Senum(和Slist)现在已弃用,均应替换为Stng。

结构

结构是Thft中的基本组成类型。每个字段的名称在结构中必须唯一。

注意:该xsd_all关键字在Facebook内部具有某些用途,但在Thft本身中没有任何用途。强烈建议不要使用此功能

联盟

联合与结构相似,不同之处在于,联合提供了一种传输可能的一组字段中的一个字段的方法,就像C ++中的union {}一样。因此,工会成员被隐含地视为可选的(请参阅要求)。

注意:该xsd_all关键字在Facebook内部具有某些用途,但在Thft本身中没有任何用途。强烈建议不要使用此功能

异常

异常与结构相似,不同之处在于它们旨在与目标语言中的本机异常处理机制集成。在异常中,每个字段的名称必须唯一。

需求的一般规则如下:

必填

写入:必填字段始终会被写入,并且需要设置。

读取:必填字段始终被读取,并且预期包含在输入流中。

默认值:始终写入

如果在读取过程中缺少必填字段,则预期的行为是向调用方指示未成功的读取作,例如,引发异常或返回错误。

由于这种行为,必填字段极大地限制了有关软版本控制的选项。因为必须在读取时显示它们,所以不能弃用这些字段。如果必填字段将被删除(或更改为可选字段),则各版本之间的数据将不再兼容。

可选

写入:仅在设置了可选字段后才写入它们

读取:可选字段可能会或可能不会成为输入流的一部分。

默认值:在设置了isset标志时写入

大多数语言实现都使用推荐的所谓“ isset”标志的做法来指示是否设置了特定的可选字段。仅写入设置了此标志的字段,相反,仅当从输入流中读取了字段值时,才设置该标志。

默认要求(隐式)

写:理论上,字段总是写的。该规则有一些例外,请参见下文。

读取:与可选字段一样,该字段可以或可以不属于输入流。

默认值:可能无法写入(请参阅下一节)

默认要求是一个很好的起点。所需的行为是可选的和必需的,因此内部名称为“选择加入,要求退出”。尽管从理论上讲这些字段应该被写入(“ req-out”),但实际上未设置的字段并不总是被写入。当字段包含一个价值,顾名思义是不能通过节俭运输的。实现此目的的唯一方法是根本不编写该字段,而这正是大多数语言所做的。

默认值的语义

有关该主题的讨论正在进行中,有关详细,请参见JIRA。并非所有实现都以完全相同的方式对待默认值,但是当前状态或多或少地是通常在初始化时设置默认字段。因此,可能无法写入等于默认值的值,因为读取端将隐式设置该值。另一方面,无论如何,实现都可以自由写入默认值,因为没有严格的限制可以防止这种情况发生。

这里要记住的主要事实是,任何未写入的默认值都隐式地成为接口版本的一部分。如果更改了默认设置,则界面也会更改。相反,如果将默认值写入输出数据,则IDL中的默认值可以随时更改而不会影响序列化数据。

节俭的网络堆栈

Apache Thft网络堆栈的简单表示

运输

传输层为从网络读取/向网络写入提供了简单的象。这使Thft可以将基传输与系统的其余部分解耦(例如,序列化/反序列化)。

以下是传输接口公开的一些方法:

打开

关闭

齐平

除了上面的传输接口之外,Thft还使用ServerTransport接口来接受或创建原始传输对象。顾名思义,ServerTransport主要用于端,为传入的连接创建新的传输对象。

打开

接受

关闭

以下是大多数Thft支持的语言可用的传输方式:

文件:对磁盘上的文件进行读/写作

http:顾名思义

协议

协议象定义了一种将内存中的数据结构映为有线格式的机制。换句话说,协议指定数据类型如何使用基传输来对其自身进行编码/解码。因此,协议实现控制编码方案,并负责(反序列化)。从这个意义上来说,协议的一些示例包括ON,XML,纯文本,紧凑二进制等。

这是协议接口:

节俭协议通过设计面向流。不需要任何明确的框架。例如,在开始序列化字符串之前,不必知道字符串的长度或列表中的项目数。大多数受Thft支持的语言可用的一些协议是:

二进制:非常简单的二进制编码–字段的长度和类型被编码为字节,是字段的实际值。

紧凑:描述于THRIFT-110

json

处理器

处理器封装了从输入流读取数据并写入输出流的功能。输入和输出流由协议对象表示。处理器界面非常简单

特定于服务的处理器实现由编译器生成。处理器本质上是从线路读取数据(使用输入协议),将处理委托给处理程序(由用户实现),并通过线路写入响应(使用输出协议)。

将上述所有各种功能汇总在一起:

创建运输

创建用于传输的输入/输出协议

根据输入/输出协议创建处理器

等待传入的连接并将其交给处理器

近期热门

1
UEStudio增强版是 UltraEdit 的开发环境版本,软件功能非常强大,界面简洁明晰、作方便快捷,设计 […]
2
DLL函数查看器是一款易于使用的dll函数查看工具。软件具备了简单直观的用户界面,拖动dll文件到窗口,或者双 […]
3
精易csharp编程助手也就是精易c#编程助手,是一款辅助c#快速开发的工具,主要功能模块包括常用代码、网页提 […]
4
Alactty是一款跨平台的OpenGL终端仿真器,可以通过这款软件快速运行脚本,添加了对Windows的支持 […]
5
VSCodium(VScode二进制版本)免费下载是编程开发分类下一款电脑软件,神奇下载小编给各位带来了VSC […]
6
Dxpress版是一款优秀实用的控件库软件。Dxpress19中文版软件能够帮助用户设计具有图形和高级和高级功 […]
7
Kratos提供非常多的服务框架,可以帮助用户在搭建网站和应用的时候快速配置通讯,配置HTTP服务,配置数据分 […]
8
CDS是一款自动化软件,您可以在软件上建立多种自动化作业方式,有效提升企业工作效率,优化复杂的工作流程,您可以 […]
9
夜神助手全称是夜神模拟器连接助手,因为作者在安卓逆向学习过程中,经常使用夜神模拟器调试程序经常打开很多命令行窗 […]
10
MyBB是一款论坛开发软件,如果你需要设计论坛就可以直接通过这款软件部署到使用,不需要自己原创代码就可以立即创 […]

声明:本站所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助 转载需标注!

Copyright © 2018-2023 All Rights Reserved. 神奇下载网站备案编号:苏ICP备12036411号

抵制不良游戏软件,拒绝盗版。 注意自我保护,谨防受骗上当。 适度娱乐益脑,沉迷伤身。合理安排时间,享受健康生活。

共 22 次查询,耗时 0.853 秒