Осваиваем протокол gRPC по HTTP/2 в 1С
Не так давно на форуме была заведена тема по интеграции с распределенным реестром под 1С, и был выявлен следующий момент, что текущие релизы платформы не поддерживают соединение по HTTP/2 для протокола gRPC. В этой публикации разберем, как удалось решить этот вопрос.
- Описание
- Подробнее
Описание
Начнем с определения gRPC и почему он вдруг понадобился.
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google в 2015 году. В качестве транспорта используется HTTP/2, в качестве языка описания интерфейса — Protocol Buffers. gRPC предоставляет такие функции, как аутентификация, двунаправленная потоковая передача и управление потоком, блокирующие или неблокирующие привязки, а также отмена и тайм-ауты. Генерирует кроссплатформенные привязки клиента и сервера для многих языков. Следуя из определения, технология должна решать межсервисные взаимосвязи на разных языках программирования, но в нашем случае это все не про 1С. Поддерживаемый транспорт на текущий момент это HTTP/1.1 и он не подходит. Список языков перечислен на домашней странице протокола gRPC и практически охватывает весь возможный современный спектр.
Ранее в проектах уже проводилась работа с использованием JavaScript, поэтому остановимся на выборе node.JS, но более родное для 1С под windows будет конечно же C#, т.е. gRPC for .NET, установка которого в целом полностью аналогична и возможно 1С также сможет запустить этот проект через внешний скрипт *.сs командой dotnet run -f netcoreapp2.1.
В качестве примера серверная часть будет работать на Windows, и его сервисная служба реализована на node.JS, дефолтовый порт службы для связи 50051. Нам потребуется установка NODE, скачиваем ее и производим инсталяцию. Для проверки в командной строке PowerShell введем npm -v и node -v , при успешном результате получим ответ об установленной версии. После чего разворачиваем уже сам пакет gprc через команду $ npm install grpc.
Установленный пакет уже содержит примеры работы клиентской и серверной частей, для этого нужно только перейти через командную строку PowerShell в нужную нам директорию и запустить скрипты:
Из examples/node/dynamic_codegenкаталога:
Запустите сервер:
$ node greeter_server.js
