系统软件 应用软件 图形软件 行业软件 安全相关 网络软件 聊天软件 影音软件 教育教学 驱动工具 编程开发 插件下载 源码下载 APP电脑版 其他类别

Apache Thrift(服务开发框架)

v0.14.1 官方版

Apache Thrift(服务开发框架)

  • 软件大小:6.17 MB
  • 软件语言:简体中文
  • 软件授权:共享软件
  • 软件类型:编程开发
  • 软件平台:WinAll
  • 更新时间:2021-09-04 02:56
  • 星级评分:4级
  • 软件官网:https://www.downza.com/
好评:50%顶一个
坏评:50踩一个

Apache Thrift提供跨语言服务开发功能。用户可以在软件上使用多种语言开发您的服务项目,并可以结合编辑器输入代码内容,这样用户就可以设计各种编程语言支持的客户端程序和服务器程序。该软件提供了许多数据类型和接口类型,以满足大多数程序访问要求。结合服务器功能,用户可以执行数据传输,根据输入/输出协议创建处理器,并实现编译器为用户生成的特定于服务的处理器。Apache Thrift支持的语言有很多,C ++、Java、Python等常用语言都支持,为可扩展的跨语言服务开发提供了更多的选择!

软件功能

Apache Thrift功能:

描述语言-所有内容都在IDL文件中指定,并且可以从该文件中生成多种语言的绑定。

语言绑定-许多语言和环境都支持节俭。

C++

C#

可可

d

德尔菲

二郎

哈斯克尔

Java

OCaml

Perl

PHP

Python

红宝石

闲聊

~命名空间-每个节俭文件都位于自己的命名空间中,允许您在多个节俭文件中使用相同的标识符。

语言命名空间-对于每个节俭文件,您可以指定每个编程语言应该使用的命名空间。

基本类型——节俭有几个基本类型。

常量和枚举-您可以为常量值指定逻辑名称。

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

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

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

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

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

服务-服务是一组功能。

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

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

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

循环结构——从0.9.2版本开始,节俭支持包含自身的结构或稍后声明的其他结构。

不起作用

Apache Thrift不支持以下功能:

struct继承-改用结构组合。

多态性-不支持多态性,因为没有继承。

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

异构容器-容器中的所有项目必须属于同一类型。

空-不能直接从函数返回空值。请改用包装结构或标记值。

软件特色

Apache Thrift是一个软件项目,涉及许多编程语言和用例。我们的目标是使跨语言的可靠和高性能的通信和数据序列化尽可能高效和无缝。节俭最初由脸书开发,2007年4月开业,2008年5月进入阿帕奇孵化器。节俭在2010年10月成为阿帕奇TLP。

Apache Thrift旨在体现以下价值:

简单节俭代码易于使用,没有不必要的依赖。

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

一致的利基、语言特定的功能是扩展,而不是核心库。

力求性能第一,优雅第二。

软件优势

1、节俭的类型。

节俭类型系统旨在使程序员无论使用哪种编程语言,都能尽可能多地使用本机类型。该信息基于并取代了《节俭白皮书》中的信息。的简单IDL提供了为每种目标语言生成代码类型的描述。

2.基本类型。

选择基本类型的目的是简化和澄清,而不是众多,而是关注所有编程语言中可用的键类型。

布尔:布尔值(真或假)

字节:8位有符号整数。

I16: 16位有符号整数。

I32: 32位有符号整数。

I64: 64位有符号整数。

Double: 64位浮点数。

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

3.结构。

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

4.集装箱。

节俭容器是强类型容器,在大多数编程语言中映射到公共容器和公共容器类型。

有三种类型的容器:

列表:元素的有序列表。翻译成STL向量、Java ArrayList、脚本语言的原生数组等。

Put:唯一元素的无序集合。转换为STL集、Java HashSet、Python中的集等。注意:PHP不支持集合,所以类似于List。

映射:键到值的严格唯一映射。翻译成STL映射、Java HashMap、PHP关联数组、Python/Ruby字典等。虽然提供了默认值,但类型映射不是显式固定的。添加了自定义代码生成器指令,以允许在各种目标语言中替换自定义类型。

使用说明

例子

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

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

节俭定义文件

Python客户端

Java服务器

初始化服务器

节俭界面描述语言。

对于0.15.0版的节俭。

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

形容

这是对节俭IDL的描述。

文件

每个节俭文档包含0个或更多标题,后面跟0个或更多定义。

页眉

头可以是节俭包含、C ++包含或命名空间声明。

节俭包括。

包含来自另一个可见文件(带前缀)的所有符号,并将相应的Include语句添加到该节俭文档的生成代码中。

C ++包含。

C ++包含将一个定制的C ++包含添加到这个节俭文档的C ++代码生成器的输出中。

命名空间

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

定义

常数

typedef

Typedef为该类型创建一个替代名称。

列举

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

塞纳姆

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

结构

是结构“节俭”中的基本组件类型。每个字段的名称在结构中必须是唯一的。

注意:xsd_all关键字在脸书内部有一些用途,但在节俭本身没有用处。强烈建议不要使用此功能。

联盟

与结构类似,union的不同之处在于它提供了一种在一组可能的字段中传输一个字段的方式,就像C ++中的union {}。因此,工会成员被隐含地认为是可选的(参见需求)。

注意:xsd_all关键字在脸书内部有一些用途,但在节俭本身没有用处。强烈建议不要使用此功能。

反常的

异常类似于结构,只是它们被设计为与目标语言中的本机异常处理机制相集成。在例外情况下,每个字段的名称必须是唯一的。

要求的一般规则如下:

命令的

Write:必填字段始终为已写,需要设置。

Read:必填字段始终为已读,并应包含在输入流中。

默认值:始终写入。

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

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

可选择的

Write:仅在设置可选字段后才写入。

已读:可选字段可能是也可能不是输入流的一部分。

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

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

默认要求(隐式)

写:理论上,字段总是要写的。这条规则有一些例外,见下文。

阅读:与可选字段一样,该字段可能属于输入流,也可能不属于输入流。

默认值:可能不可写(参见下一节)。

默认要求是一个很好的起点。要求的行为是可选的,也是必须的,所以内部名称是“选择加入,要求退出”。虽然理论上应该写入这些字段(“req-out”),但未设置的字段并不总是被写入。当一个字段包含一个值时,顾名思义,它不能通过节俭来传输。做到这一点的唯一方法是根本不写字段,这正是大多数语言所做的。

默认值的语义。

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

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

节俭的网络堆栈。

Apache Thrift网络堆栈的简单表示。

运输

传输层为网络读写提供了一个简单的抽象。这允许节俭从系统的其余部分分离底层传输(例如,串行化/去串行化)。

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

打开

关闭

阅读

脸红

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

打开

接受

关闭

以下传输方法适用于节俭支持的大多数语言:

文件:读取/写入磁盘上的文件。

Http:顾名思义。

草案

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

这是协议接口:

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

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

紧凑型:描述在节俭-110。

json

处理器

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

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

计算机网络服务器

将服务器的所有上述功能结合在一起:

创造交通。

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

根据输入/输出协议。

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

收起介绍展开介绍
  • 安卓合集
  • 软件合集
  • 浏览器
  • 电脑管家
  • 安卓游戏
更多 >> 安卓合集安卓合计

热门推荐

装机必备软件