
Microsoft has rolled out experimental support for gRPC-Web in .NET Core and ASP.NET Core, allowing gRPC-Web to be called directly from the .NET Core gRPC client and ASP.NET Core gRPC apps.
Compatible with HTTP/1 and HTTP/2, gRPC-Web is a JavaScript client library supporting the same API as gRPC-Node to access a gRPC service, with gRPC serving as an open source RPC framework enabling client and server applications to transparently communicate.
With gRPC-Web for .NET, Microsoft expects to bring the following capabilities to browser apps:
- Server streaming
- Compact Protobuf messages
- Strongly typed, code-generated clients
The experimental package lets an ASP.NET Core app support gRPC-Web without a proxy and allows the .NET Core gRPC client to call gRPC Web services, which is useful for Blazor WebAssembly apps. Aside from calling ASP.NET Core gRPC apps from the browser, opportunities for gRPC-Web include:
- Calling gRPC from platforms such as Blazor WebAssembly and Xamarin.
- Hosting ASP.NET Core gRPC apps in Azure App Services and IIS.
With gRPC-Web, there is a stable client gRPC-Web JavaScript client and a proxy for translating between gRPC and gRPC-Web for services. Microsoft noted there is a small performance cost to gRPC-Web and that two gRPC features—client streaming and bidirectional streaming—are no longer supported.
To get started with gRPC in .NET, Microsoft has published a tutorial on creating a gRPC client and server in ASP.NET Core.
With gRPC-Web, no changes are required to services, only the start-up configuration is modified. The gRPC GitHub repo provides instructions for setting up a gRPC-Web client for JavaScript SPAs.