.Net Core3.0使用gRPC
gRPC是什么
gRPC是可以在任何環(huán)境中運(yùn)行的現(xiàn)代開源高性能RPC框架。它可以通過可插拔的支持來有效地連接數(shù)據(jù)中心內(nèi)和跨數(shù)據(jù)中心的服務(wù),以實(shí)現(xiàn)負(fù)載平衡,跟蹤,運(yùn)行狀況檢查和身份驗(yàn)證。它也適用于分布式計(jì)算的最后一英里,以將設(shè)備,移動(dòng)應(yīng)用程序和瀏覽器連接到后端服務(wù)。
proto文件
用于定義gRPC服務(wù)和消息的協(xié)定;服務(wù)端和客戶端共享proto文件。
使用新模板創(chuàng)建gRPC服務(wù)端
.NETcore 3.0創(chuàng)建項(xiàng)目提供了一個(gè)新的gRPC模板,可以輕松地使用ASP.NET?Core構(gòu)建gRPC服務(wù)。我們按照步驟一步一步創(chuàng)建AA.GrpcService 服務(wù),當(dāng)然你可以使用命令:dotnet new grpc -o GrpcGreeter
?選擇gRPC服務(wù)項(xiàng)目模板
最終生成的項(xiàng)目
greet.proto文件
GreeterService.cs
Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddGrpc(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGrpcService<GreeterService>(); endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909"); }); }); }創(chuàng)建完成之后,自動(dòng)包含了包的引用、proto文件的創(chuàng)建、services服務(wù)的生成,模板項(xiàng)目在后臺執(zhí)行一些操作如
- 創(chuàng)建一個(gè)包含所有g(shù)RPC依賴項(xiàng)的ASP.NET?Core項(xiàng)目。 
- 創(chuàng)建一個(gè)名為的gRPC服務(wù)定義文件greet.proto。 
- 根據(jù)服務(wù)定義文件自動(dòng)生成所有g(shù)RPC存根。 
- GreeterService.cs根據(jù)自動(dòng)生成的gRPC存根創(chuàng)建gRPC服務(wù)。 
- 在Startup.cs中配置gRPC管道映射到GreeterService.cs 
運(yùn)行服務(wù)
創(chuàng)建gRPC客戶端
下面,我們創(chuàng)建一個(gè)控制臺應(yīng)用程序作為客戶端調(diào)用gRPC服務(wù);
引用gRPC服務(wù),步驟:右鍵項(xiàng)目添加=》服務(wù)引用彈出以下頁面;
點(diǎn)擊確定
我們看項(xiàng)目結(jié)構(gòu),他們會自動(dòng)幫我們處理一下操作:
- 添加引用包: 
?package?Grpc.Net.ClientFactory
?package Google.Protobuf
?package Grpc.Tools
- Protos 文件(包含greet.proto)自動(dòng)從AA.GrpcService項(xiàng)目拷貝 
- 自動(dòng)添加節(jié)點(diǎn) 
運(yùn)行結(jié)果圖:
小結(jié):.NETcore 3.0 使得使用gRPC是非常方便集成到項(xiàng)目中,希望這篇文章使你可以了解.NETcore與gRPC結(jié)合使用。那gRPC適用于以下場景
- 微服務(wù)– gRPC專為低延遲和高吞吐量通信而設(shè)計(jì)。gRPC對于效率至關(guān)重要的輕量級微服務(wù)非常有用。 
- 點(diǎn)對點(diǎn)實(shí)時(shí)通信– gRPC對雙向流具有出色的支持。gRPC服務(wù)可以實(shí)時(shí)推送消息而無需輪詢。 
- 多種語言環(huán)境– gRPC工具支持所有流行的開發(fā)語言,因此gRPC是多語言環(huán)境的理想選擇。 
- 網(wǎng)絡(luò)受限的環(huán)境– gRPC消息使用輕量級消息格式Protobuf進(jìn)行了序列化。gRPC消息始終小于等效的JSON消息。 
參考:
- https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.0 
- https://www.grpc.io/ 
- https://developers.google.com/protocol-buffers/docs/proto3 
- https://www.cnblogs.com/stulzq/p/11581967.html 
相關(guān)文章
總結(jié)
以上是生活随笔為你收集整理的.Net Core3.0使用gRPC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 从零开始实现ASP.NET Core M
- 下一篇: 中国.NET开发者峰会特别活动-基于k8
