
Explore protocol buffers, the default data serialization used by gRPC, by defining messages in .proto files. Generate access classes with the protocol buffer compiler and implement RPC services in proto3.
Discover the advantages of gRPC, including HTTP/2 performance gains and binary serialization that reduces bandwidth versus JSON. Leverage multi-language support, open-source community, bidirectional streaming, and SSL/TLS with authentication options.
Explore a practical example of gRPC in microservices communication in .net 5: a shopping aggregator acts as a gRPC client, synchronously calling backend services with HTTP/2 and protocol buffers.
Explore gRPC with .NET 5, leveraging HTTP/2, Kestrel, and built-in .NET Core SDK tooling, with cross-platform support and generated client and server code.
gRPC performance in .NET 5 shows robust requests-per-second benchmarks, with the server 60% faster than .NET Core 3.1 and the client 230% faster, for scalable backend microservices.
Scaffold a gRPC server quickly using Visual Studio's gRPC Service template, generating code from proto files, including greet.proto, and startup configurations for http2 with asp.net core.
Please refer this article for Test gRPC services with gRPCurl in ASP.NET Core
https://docs.microsoft.com/en-us/aspnet/core/grpc/test-tools?view=aspnetcore-5.0
Set up a product database for a gRPC microservice using EF Core in-memory database in a .NET 5 project, define Product and ProductsContext, and configure use in-memory database named 'Products'.
Generate the proto service class from the product proto file in the product gRPC microservice by importing google protobuf well-known types and configuring the proto.
Develop a gRPC product service class, inject the database context and logging, implement the get product method, and map data to a product model.
Explore how to consume the GetProductAsync method via gRPC from a client console app using a channel and product service client in a .NET 5 microservices setup.
Consume the get all products server streaming method from the client console app, iterating streaming responses from the product service and printing each product to the console.
Develop and implement ProductService UpdateProductAsync and DeleteProductAsync methods in a gRPC microservices setup using .NET 5. Map product models, verify existence, apply updates or deletions, and return a status response.
Demonstrate consuming updateProductAsync and deleteProductAsync server methods from a client console to update a product and remove one, showing success responses in the console.
Develop a client-streaming insert bulk product method in a ProductService using gRPC and .NET 5, read client stream models, convert to core products, save to database, and return insert result.
Learn to consume a client streaming insert bulk product server method from a .NET 5 gRPC microservices client console app, including streaming multiple products and handling the server response.
Build a product worker service to generate and insert products into ProductGrpc microservices, consume gRPC methods, configure appsettings.json, generate products with ProductFactory, and implement logging on both client and server.
Add a connected service and portable file to the product worker service project to generate a client for consuming product services.
Generate a proto service class from the shopping cart proto file in ShoppingCartGrpc to enable gRPC communication and generate service stubs for a .NET 5 project.
Build a discount gRPC microservice for inter-service communication to calculate each cart item price in the shopping cart, including creating proto definitions, implementing DiscountService, and wiring the client in startup.
Develop a new discount.proto ProtoBuf file to expose the get discount service in the discount ERP SeaMicro microservice, defining the request with a discount code and returning the discount id.
Generate a proto service class from the discount proto file in discount grpc, then build the .NET 5 project to produce the generated class and base class for discount service.
Learn to consume a discount gRPC service from a shopping cart microservice by configuring connected services, generating a client from the discount proto, and invoking discount methods.
Configure the shopping cart worker service with appsettings.json, inject configuration via Microsoft.Extensions.Configuration, and manage delay-based tasks for product and shopping cart integration.
Consume product and shopping cart gRPC server methods from a shopping cart worker by creating a channel and client, getting or creating a cart, retrieving products, and adding items.
Develop the shopping cart workflow by streaming products from the product service and streaming cart items into the cart service, creating the cart as needed.
Authenticate gRPC services with IdentityServer4 using OAuth 2.0 and JWT bearer tokens to secure ShoppingCartGrpc methods, and configure clients, resources, scopes, and test users.
Test access to shopping cart gRPC services in a multi-project microservices setup, create a shopping cart, add items, and validate token-based authorization to prevent unauthorized access.
Run an entire microservices application locally to see the big picture, starting the product, product worker, and shopping cart services, generating and consuming products to build a shopping cart.
You will learn how to Build a high-performance gRPC Inter-service Communication between backend microservices with .Net 5 and AspNet 5.
Microservices are modern distributed systems so with gRPC in ASP.NET 5, we will develop high-performance, cross-platform applications for building distributed systems and APIs. It’s an ideal choice for communication between backend microservices, internal network applications, or iot devices and services. With the release of ASP.NET 5, Microsoft has added first-class support for creating gRPC services with Asp.Net 5.
This course will led you get started building, developing and managing gRPC servers and clients on distributed microservices architecture.
Overall Architecture of Course Project
We can design that we will have 6 microservices which we are going to develop one by one.
We will use Worker Services and Asp.Net 5 Grpc Applications to build client and server gRPC components defining proto service definition contracts.
We will implement realworld e-commerce use case with only gRPC communication. We will have 3 gRPC server applications which are Product — ShoppingCart and Discount gRPC services. And we will have 2 worker services which are Product and ShoppingCart Worker Service. Worker services will be client and perform operations over the gRPC server applications. And we will secure the gRPC services with standalone Identity Server microservices with OAuth 2.0 and JWT token.
ProductGrpc Server Application
First of all, we are going to develop ProductGrpc project. This will be Asp.Net gRPC server web application and expose apis for Product Crud operations.
Product Worker Service
After that, we are going to develop Product Worker Service project for consuming ProductGrpc services. This product worker service project will be the client of ProductGrpc application and generate products and insert bulk product records into Product database by using client streaming gRPC proto services of ProductGrpc application. This operation will be in a time interval and looping as a service application.
ShoppingCartGrpc Server Application
After that, we are going to develop ShoppingCartGrpc project. This will be Asp.Net gRPC server web application and expose apis for SC and SC items operations. The grpc services will be create shopping cart and add or remove item into shopping cart.
ShoppingCart Worker Service
After that, we are going to develop ShoppingCart Worker Service project for consuming ShoppingCartGrpc services. This ShoppingCart worker service project will be the client of both ProductGrpc and ShoppingCartGrpc application. This worker service will read the products from ProductGrpc and create sc and add product items into sc by using gRPC proto services of ProductGrpc and ShoppingCartGrpc application. This operation will be in a time interval and looping as a service application.
DiscountGrpc Server Application
When adding product item into SC, it will retrieve the discount value and calculate the final price of product. This communication also will be gRPC call with SCGrpc and DiscountGrpc application.
Identity Server
Also, we are going to develop centralized standalone Authentication Server with implementing IdentityServer4 package and the name of microservice is Identity Server.
Identity Server4 is an open source framework which implements OpenId Connect and OAuth2 protocols for .Net Core.
With IdentityServer, we can provide protect our ShoppingCart gRPC services with OAuth 2.0 and JWT tokens. SC Worker will get the token before send request to ShoppingCart Grpc server application.
By the end of this course, you will have a practical understanding of how to use gRPC to implement a fast and distributed microservices systems. And Also you’ll learn how to secure protected grpc services with IdentityServer in a microservices architecture.
Is this course for you?
This course is very practical, about 90%+ of the lessons will involve you coding along with me on this project. If you are the type of person who gets the most out of learning by doing, then this course is definitely for you.
Tools you need for this course
In this course all the lessons are demonstrated using Visual Studio 2019 as a code editor. You can of course use any code editor you like and any Operating system you like as long as it's Windows or Mac.