sunlong / thrift
Apache Thrift RPC 系统库
Requires
- php: >=5.3.0
Replaces
- apache/thrift: 0.9.*
README
最后修改:2014-03-16
许可证
Apache 软件基金会(ASF)根据一个或多个贡献者许可协议许可此文件。有关版权所有权的更多信息,请参阅与此工作一起分发的 NOTICE 文件。ASF 根据Apache许可证2.0版(“许可证”)向您授予此文件的许可;除非您同意书面形式,否则不得使用此文件,除非您遵守许可证。您可以在以下地址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证管理权限和限制的具体语言,请参阅许可证。
简介
Thrift 是一个轻量级、语言无关的软件堆栈,包括一个与代码生成机制关联的 RPC。Thrift 为数据传输、数据序列化和应用层处理提供清晰的抽象。代码生成系统以简单的定义语言作为其输入,并生成跨编程语言的代码,这些代码使用抽象的堆栈来构建可互操作的 RPC 客户端和服务器。
Thrift 专门设计以支持客户端和服务器代码之间的非原子版本更改。
有关 Thrift 的设计和实现更多详细信息,请参阅此分布中包含的 Thrift 白皮书或您感兴趣子目录中的 README.md 文件。
层次结构
thrift/
compiler/
Contains the Thrift compiler, implemented in C++.
lib/
Contains the Thrift software library implementation, subdivided by
language of implementation.
cpp/
go/
java/
php/
py/
rb/
test/
Contains sample Thrift files and test code across the target programming
languages.
tutorial/
Contains a basic tutorial that will teach you how to develop software
using Thrift.
需求
有关构建需求的最新列表,请参阅 http://thrift.apache.org/docs/install。
资源
有关 Thrift 的更多信息,可以在 Thrift 网页上找到
http://thrift.apache.org
致谢
Thrift 受到 Adam D'Angelo 编写的轻量级 RPC 工具 pillar 的启发,同时也受到 Google 的协议缓冲区的启发。
安装
如果您是从源代码库中第一次构建,则需要生成配置脚本。(如果您下载了 tarball,则不需要此操作。)从顶层目录,执行以下操作
./bootstrap.sh
配置脚本生成后,可以配置 thrift。从顶层目录,执行以下操作
./configure
您可能需要显式指定 boost 文件的路径。如果您将 boost 安装在 /usr/local,您将按以下方式运行 configure
./configure --with-boost=/usr/local
请注意,默认情况下,thrift C++ 库通常包含调试符号构建。如果您想自定义这些选项,您应该在配置中使用 CXXFLAGS 选项,如下所示
./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
要启用 gcov 所需的选项 -fprofile-arcs -ftest-coverage,请启用它们
./configure --enable-coverage
运行 ./configure --help 以查看其他配置选项
请注意,Python 库将忽略 --prefix 选项,并安装到 Python 的 distutils 所放置的任何位置(通常为 /usr/lib/pythonX.Y/site-packages/)。如果您需要控制 Python 模块的安装位置,请设置 PY_PREFIX 变量。(DESTDIR 对 Python 和 C++ 有效。)
构建 thrift
make
从顶层目录,成为超级用户并执行以下操作
make install
请注意,某些语言包必须使用更适合该语言的构建工具手动安装(截至本文撰写时,这适用于 Java、Ruby、PHP)。
有关每个语言库包的安装详细信息,请参阅 lib// 目录中的 README.md 文件。
测试
可以从顶层目录运行大量客户端库测试。
make -k check
这将生成所有必要的库,并运行每个客户端库中定义的单元测试。如果某种语言失败,make check 将继续执行并在最后提供摘要。
要运行跨语言测试套件,请运行
make cross
这将运行使用不同语言客户端和服务器的一系列测试。