java - 第一个使用 Apache Thrift 的程序——我应该在哪里定义接口(interface)?在客户端或服务器代码中

标签 java php thrift

我正在制作一个 php 客户端,它通过 apache thrift 从 java 服务请求一个函数。我正在关注这个 tutorial对于 php 客户端代码。我需要了解一些东西,作为 file.thrift 生成的接口(interface)应该在客户端和服务器上,还是只在一侧?

另外,在客户端代码中,我如何调用调用服务器函数的客户端对象? 在本教程中,我遵循这一行

$client = new HbaseClient($protocol);

他是怎么定义这个类的?

apache thrift tutorial 中他在 python 客户端中定义了相同的内容

# Create a client to use the protocol encoder
client = Calculator.Client(protocol)

Calculator 对象是接口(interface)中标识的服务器提供的服务吗?同样的问题,接口(interface)应该在客户端和服务器中??

请帮忙,我真的卡住了。

最佳答案

I am following this tutorial

这是真实的:http://thrift.apache.org/tutorial/

the interface that's generated as file.thrift should be on client and server or only at one side?

起点是 IDL 文件。 IDL 的意思是接口(interface)定义语言,它只是一个文件,它描述了服务器和客户端之间的 API 契约。服务端的任务是实现合约中描述的接口(interface),以便客户端调用。

要使用 IDL 文件,您需要运行 Thruift 编译器为两端生成一些代码。如果服务器和客户端使用相同的语言(比如 Java),只需生成一次代码并在两个项目中使用它就足够了:

  thrift -r -gen java MyApiContract.thrift

创建一个包含文件的 gen-java 文件夹。

如果碰巧服务端和客户端是不同类型的代码(例如Java和PHP),那么你需要为它们生成代码:

  thrift -r -gen java -gen php MyApiContract.thrift

这将生成两个文件夹,分别是gen-javagen-php

由于 Thrift 是一个跨平台、跨语言的框架,因此使用不同语言编写客户端和服务器并不罕见。

关于java - 第一个使用 Apache Thrift 的程序——我应该在哪里定义接口(interface)?在客户端或服务器代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997036/

相关文章:

javascript - Ajax 在 PHP 中发布多个对象并检索

php - AJAX、PHP 变量和我

c - GLib-GObject-创建 gobject 时发出警告

python - 使用happybase扫描带有中文字符的HBase表时过滤器不起作用

java - 使用 JSON (GSON) 将 PHP 关联数组传输到 Java Map<String, Double>

java - "Invalid credentials"Google plus with request/plus/v1/people/me

php - ImageMagick PHP Docker版本问题

c++ - 编译 C++ 应用程序时的错误 (Apache Thrift)

java - 为什么如果我将 List 实例化为 null 会失败

java.lang.IllegalArgumentException : Failed to load [netty-tcnative-linux-x86_64, netty-tcnative-linux-x86_64-fedora,netty-tcnative]