Первая программа с Apache Thrift - Где я должен определить интерфейс? в коде клиента или сервера


Я создаю php-клиент, который запрашивает функцию из службы java через apache thrift. Я следую этому учебнику для клиентского кода php. Мне нужно кое-что понять, интерфейс, который создается в виде файла.бережливость должна быть на клиенте и сервере или только на одной стороне?

И что-то еще, в клиентском коде, как я могу вызвать объект клиента, который вызывает функцию сервера? В учебнике я следую этой строке

$client = new HbaseClient($protocol);

Как он определил этот класс?

И в учебнике по бережливости apache он сделал то же самое в клиенте python

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

Объект калькулятора - это услуга, предоставляемая сервером, которая указана в интерфейсе? и тот же вопрос, интерфейс должен быть как на клиенте, так и на сервере??

Пожалуйста, помогите, я действительно застрял.

Author: JensG, 2018-04-24

1 answers

Я следую этому руководству

Вот настоящие: http://thrift.apache.org/tutorial/

Интерфейс, созданный в виде файла.бережливость должна быть на клиенте и сервере или только на одной стороне?

Отправной точкой является файл IDL. IDL означает Язык определения интерфейса, и это просто файл, который описывает контракт API между сервером и клиентом. Задача сервера - реализовать интерфейс, описанный в контракт, чтобы клиент мог его назвать.

Чтобы использовать файл IDL, вы запускаете компилятор Thruift для генерации некоторого кода для обоих концов. Если сервер и клиент используют один и тот же язык (скажем, Java), достаточно просто сгенерировать код один раз и использовать его в обоих проектах:

  thrift -r -gen java MyApiContract.thrift

Создает папку gen-java с файлами в ней.

Если случится так, что сервер и клиент представляют собой разные типы кода (например, Java и PHP), то вам потребуется сгенерировать код для них обоих:

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

, который создаст две папки, gen-java и gen-php соответственно.

Поскольку бережливость является кросс-платформенной, кросс-языковой платформой, наличие клиента и сервера, написанных на разных языках, вовсе не является таким уж необычным случаем.

 1
Author: JensG, 2018-04-24 15:51:15