1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/RonxBulld-ftrpc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Это простой асинхронный RPC-фреймворк с передачей данных в формате JSON. Программа выполняет только работу по упаковке и распаковке параметров, не затрагивая конкретные способы связи — можно использовать как сокеты, так и веб-сокеты. В настоящее время автор использует этот проект для создания фронтенда на typescript и бэкенда на C++. Планируется... Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/RonxBulld-ftrpc.git
git@api.gitlife.ru:oschina-mirror/RonxBulld-ftrpc.git
oschina-mirror
RonxBulld-ftrpc
RonxBulld-ftrpc
master