In this article, we will learn about the basics of gRPC and its usage and, finally, implement the Server and Client using .NET Core 8.0.
gRPC explained:
gRPC (Google Remote Procedure Calls) was initially created by Google, which has used a single general-purpose RPC infrastructure called Stubby to connect the large number of microservices running within and across its data centers for over a decade.
In March 2015, Google decided to build the next version of Stubby and make it open source and the result was gRPC.
gRPC is a modern open-source high-performance Remote Procedure Call (RPC) framework.
It implements APIs using HTTP/2 which can run in any environment.
gRPC has two parts
gRPC Protocol - As mentioned above it uses HTTP/2 which provides a lot of advantages over traditional HTTP1.x
Data Serialization - by default gRPC uses Protobuf for the serialization and as an intermediator between client and server.
gRPC clients and servers intercommunicate using a variety of environments and machines.
It supports many languages like Java, C#, Go, Ruby, and Python, check the full list here.
It supports pluggable auth, tracing, load balancing, and health checking.
Different scenarios in which we use gRPC
When we use microservice architecture, and we use that for internal communication from one or more servers.
gRPC is handy when performance is on high priority with low latency.
It is useful when we require duplex communication between services with different types of data.
gRPC is useful in the last mile of distributed computing to connect devices, mobile applications, and browsers to backend services.
gRPC vs REST:
REST has been one of the highly used API frameworks and with gRPC grabbing the limelight, let's see the comparison on various parameters.
REST
gRPC
Protocol
HTTP/1.1
HTTP/2.0
Request-Response Model
Only supports Request Response as based on HTTP/1.1
Supports All Types Of Streaming as based on HTTP/2
Serialization
JSON/XML
protobuf
Payload Format
Serialization like JSON/XML
Strong Typing
Browser Support
Yes
No
Pros and Cons of gRPC:
Pros
With duplex communication, it supports bi-directional streaming with HTTP/2-based transport.
Performance is one of the talking points of gRPC and it is faster than REST and SOAP.
gRPC services are highly efficient on wire and with a simple service definition framework.
gRPC messages are lightweight compared to other types such as JSON.
Client libraries supporting the 11 languages.
Cons
Browser support is very limited.
Since it uses binary data which is not easily readable compared to JSON or XML.
gRPC Implementation
Prerequisites
Visual Studio 2022
.NET 8.0
Set Up gRPC Service:
Open Visual Studio 2022 and create a new gRPC project with the name GrpcCoreService and select .NET 8.0 under the Framework option.
Review the default project folder structure.
Protos: contains all the gRPC server asset files, such as greet.proto
Services: Contains the implementation of the gRPC services.
Root Folder:appSettings.json contains the service configuration and Program.cs contains code configuring app behavior.
Right-click on the greet.proto and click on Properties, and verify that gRPC Stub Classes is set to Server only.
Set Up Client Application:
Add a Console App Project with the name GrpcClientApp and select the required configurations.
Add the required packages to the client app project.
gRPC (Google Remote Procedure Calls) is a modern open-source high-performance Remote Procedure Call (RPC) framework that can run in any environment.
It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking, and authentication.
It is also applicable in the last mile of distributed computing to connect devices, mobile applications, and browsers to backend services.
Solution and Project setup:
Set Up gRPC Service:
Open Visual Studio 2022 and create a new gRPC project, and name it to GrpcCoreService and select .NET 8.0 under the Framework option.
Review the project structure.
Right-click on greet.proto and click on Properties and verify that gRPC Stub Classes is set to Server only.
Set Up Client Application:
Add a Console App Project with the name GrpcClientApp and select the required configuration