Начнем с определения 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
-
С другого терминала запустите клиент:
$ node greeter_client.js
Поздравляем! Вы только что запустили клиент-серверное приложение с gRPC.
Подробно останавливаться на том, как создать свои собственные сервисы, в этой публикации останавливаться не будем, эта информация есть на домашней страничке протокола. Как запустить скрипт клиентской части, возможно, вы уже знаете, но на всякий случай пример:
WshShell = Новый COMОбъект("wscript.shell");
WshShell.Run("wscript.exe ""greeter_client.js"");
Реализация скрипта может быть динамической, т.е. создаем текстовое сообщение под 1С платформой и записываем его во внешний файл скрипта.
Скрипт = Новый ТекстовыйДокумент();
Скрипт.УстановитьТекст
(
"....какой то код на JS;"
);
Скрипт.Записать("greeter_client.js", КодировкаТекста.ANSI);
На этом, пожалуй, можно и закончить описание работы с данной технологией протокола, как видно из примеров, оно достаточно простое и, самое главное, имеет гибкость и высокую скорость реализации, и вы можете использовать их для реализации своих безопасных сервисов связи.
...и да, пример самого скрипта со стороны клиентской части, если его не удалось найти самостоятельно:
var client = new hello_proto.Greeter('localhost:50051',
grpc.credentials.createInsecure());
client.sayHello({name: 'you'}, function(err, response) {
console.log('Greeting:', response.message);
});