Делаем gRPC-web сервис из gRPC сервиса¶
От меня
Мой код для этой главы здесь
ASP.NET Core предлагает свою собственную реализацию спецификации gRPC-web. Прежде всего, очень просто сделать приложение gRPC-web из приложения gRPC без изменения поведения приложения, а также без использования прокси. При этом реализация gRPC-web в ASP.NET Core поддерживает клиентские потоки и двунаправленные потоки в случае, когда для работы приложения не требуется браузер. Таким образмо, требуется сделать другую версию Protobufs для приложений, работающих в браузере (то есть приложений, основанных на HTML/JavaScript). Наконец, gRPC-web поддерживается в Microsoft Azure.
gRPC-web и экосистема .NET¶
Переделываем gRPC сервис CountryService для браузерных приложений¶
Поддержка ASP.NET Core gRPC-web в Microsoft Azure¶
Для того, чтобы gRPC-web запустился в Microsoft Azure, нужно включить в Kestrel поддержку HTTP/1 (это можно настроить в appsettings.json). После этого сервис можно размещать в
- Виртуальной машине Windows или Linux;
- Windows App Services или Linux App Services;
- контейнере Windows Docker при помощи Azure Container Instance (ACI)
- кластере Kubernetes.
При этом Windows App Services будут работать даже если вы не включили поддержку HTTP/1, так как там встроен модуль ASPNetModuleV2, транслирующий HTTP/2 запросы в HTTP/1. При этом в Linux App Services такого нет. Поэтому, чтобы точно ничего не могло пойти не так, и одновременно работали HTTP/1 и HTTP/2, включите поддержку обоих протоколов (показана только часть файла):
Дата создания : 9 июля 2023 г.