FTRPC: краткое введение
FTRPC (Fast Tiny Remote Procedure Call) — это дополнительный проект, который я создал во время работы над другим проектом (Hyper App).
Я столкнулся с трудностями при написании кода для связи между фронтендом и бэкендом на разных языках. Это привело к необходимости переписывать большие объёмы кода каждый раз, когда требовалось изменить API. Поэтому я потратил два дня на написание базовой функциональности и ещё два дня на доработку пользовательской структуры данных, чтобы создать версию FTRPC v1.0.0.
FTRPC работает по модульному принципу. Он заботится только о генерации целевого кода из IDL, в отличие от RPC-фреймворков, таких как Thrift, которые включают собственные компоненты для коммуникации. Пользователи могут использовать свои собственные сокеты, веб-сокеты или другие компоненты для выполнения RPC-действий.
FTRPC является асинхронным фреймворком. Это означает, что при вызове необходимо установить обратный вызов, а обработка возвращаемых данных происходит внутри обратного вызова.
Почему не используются Thrift или gRPC?
Thrift не подходит, поскольку он обеспечивает однонаправленное соединение, позволяя только custom активно запрашивать provide, но не наоборот.
gRPC слишком громоздкий и не может генерировать код для фронтенда.
Как скомпилировать FTRPC?
FTRPC написан на C++. В качестве стандарта используется C++17. Рекомендуется обновить компилятор gcc до версии 7.3.0 или выше для старых версий.
В сжатом пакете также доступен бинарный файл для Windows, созданный с использованием MinGW-w64.
Исходный код содержит файл CMakeLists.txt. Для сборки достаточно выполнить следующие команды:
mkdir build && cd build && cmake .. && make
Использование FTRPC
Полная система FTRPC состоит из двух частей: исполняемого файла FTRPC и каталога шаблонов template.
При генерации кода FTRPC использует внешние шаблоны и вставляет фрагменты кода, созданные на основе внутренней логики, в указанные места, создавая целевой код.
Для использования FTRPC сначала необходимо написать файл IDL. Синтаксис будет описан в следующем разделе. Затем можно обработать его с помощью программы, например:
ftrpc -o c++,ts test.idl --no-version --builtin-json
Как видно, FTRPC предоставляет множество параметров, позволяющих пользователям создавать желаемый код.
Команда ftrpc -h выводит полную справку в терминале.
Синтаксис FTRPC
Версия = ЧИСЛО
Модуль ИМЯ: { структура ИМЯ: { ТИП ИМЯ; ... }; ТИП ИМЯ(АРГУМЕНТЫ...); };
Сначала в начале файла необходимо указать текущую версию IDL. Эта версия определяется пользователем, а не внутренним протоколом FTRPC.
Затем определяется модуль, который в C++ генерирует класс, а в typescript — модуль.
Далее внутри модуля пользователь может свободно определять struct или api. Определение похоже на язык C, но следует помнить о двоеточии после struct NAME и точке с запятой после правой фигурной скобки.
На данный момент поддерживаются только базовые типы int, float, string и bool. В будущем планируется расширить поддержку.
Примечание: в ответе сохранены оригинальное форматирование и спецсимволы.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )