Использование gRPC в приложениях на основе браузера

Автор: Джеймс Ньютон-Кинг (James Newton-King)

Службу gRPC нельзя вызвать напрямую из браузера. gRPC использует функции HTTP/2, и ни один браузер не предоставляет необходимый уровень контроля над веб-запросами для поддержки клиента gRPC.

gRPC в ASP.NET Core предлагает два решения, совместимые с браузером: gRPC-Web и перекодирование gRPC JSON.

gRPC-Web

gRPC-Web позволяет браузерным приложениям вызывать службы gRPC с помощью клиента gRPC-Web и Protobuf.

  • Это похоже на обычный gRPC, но используется немного другой протокол, что обеспечивает совместимость с HTTP/1.1 и браузерами.
  • Браузерное приложение должно создать клиент gRPC из файла .proto.
  • Позволяет приложениям, использующим браузер, реализовывать преимущества двоичных сообщений, а именно высокую производительность и низкий уровень использования сети.

.NET имеет встроенную поддержку gRPC-Web. Дополнительные сведения см. в статье gRPC-Web в приложениях ASP.NET Core gRPC.

Перекодирование gRPC JSON

Перекодирование gRPC JSON позволяет браузерным приложениям вызывать службы gRPC, как обычные RESTful API с поддержкой формата JSON.

  • Браузерному приложению не нужно создавать клиент gRPC и не нужно ничего знать о gRPC.
  • RESTful API можно создавать автоматически из служб gRPC, добавляя к файлу .proto метаданные HTTP.
  • Это позволяет приложению параллельно поддерживать веб-API gRPC и JSON, не дублируя действия по созданию отдельных служб для разных типов интерфейсов.

В .NET предусмотрена встроенная поддержка для создания веб-API JSON из служб gRPC. Дополнительные сведения см. в статье Перекодирование gRPC JSON в приложениях ASP.NET Core gRPC.

Примечание.

Для перекодирования gRPC JSON требуется .NET 7 или более поздней версии.

Дополнительные ресурсы