Use gRPC in browser apps
Note
This isn't the latest version of this article. For the current release, see the .NET 9 version of this article.
Warning
This version of ASP.NET Core is no longer supported. For more information, see .NET and .NET Core Support Policy. For the current release, see the .NET 8 version of this article.
Important
This information relates to a pre-release product that may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
For the current release, see the .NET 9 version of this article.
It's not possible to directly call a gRPC service from a browser. gRPC uses HTTP/2 features, and no browser provides the level of control required over web requests to support a gRPC client.
gRPC on ASP.NET Core offers two browser-compatible solutions, gRPC-Web and gRPC JSON transcoding.
gRPC-Web
gRPC-Web allows browser apps to call gRPC services with the gRPC-Web client and Protobuf.
- Similar to normal gRPC, but it has a slightly different wire-protocol, which makes it compatible with HTTP/1.1 and browsers.
- Requires the browser app to generate a gRPC client from a
.proto
file. - Allows browser apps to benefit from the high-performance and low network usage of binary messages.
.NET has built-in support for gRPC-Web. For more information, see gRPC-Web in ASP.NET Core gRPC apps.
gRPC JSON transcoding
gRPC JSON transcoding allows browser apps to call gRPC services as if they were RESTful APIs with JSON.
- The browser app doesn't need to generate a gRPC client or know anything about gRPC.
- RESTful APIs are automatically created from gRPC services by annotating the
.proto
file with HTTP metadata. - Allows an app to support both gRPC and JSON web APIs without duplicating the effort of building separate services for both.
.NET has built-in support for creating JSON web APIs from gRPC services. For more information, see gRPC JSON transcoding in ASP.NET Core gRPC apps.
Note
gRPC JSON transcoding requires .NET 7 or later.