ASP.NET Core 3.0使用gRPC的具体方法
服务端: 1 2 3 ItemGroup Protobuf Include=..\..\Protos\IT之家.proto GrpcServices=Server Link=Protos\%(RecursiveDir)%(Filename)%(Extension) / /ItemGroup 客户端: 1 2 3 ItemGroup Protobuf Include=..\..\Protos\IT之家.proto GrpcServices=Client Link=Protos\%(RecursiveDir)%(Filename)%(Extension) / /ItemGroup 示例: 七.总结 gRPC 现目前是一款非常成熟的高性能RPC框架,虽然gRPC-Web可以提供浏览器支持,可以快速创建 gRPC 服务,当前的生态是非常好的。
1.复制 Protos 文件夹到解决方案根目录(sln文件所在目录) 2.删除客户端和服务项目中的 Protos 文件夹 3.在客户端项目文件csproj中添加关于proto文件的描述 1 2 3 ItemGroup Protobuf Include=..\..\Protos\greet.proto GrpcServices=Client Link=Protos\greet.proto / /ItemGroup 4.在服务项目文件csproj中添加关于proto文件的描述 1 2 3 ItemGroup Protobuf Include=..\..\Protos\greet.proto GrpcServices=Server Link=Protos\greet.proto / /ItemGroup 在实际项目中,我们将 csproj 项目文件中引入proto文件信息进行修改,狸花猫,它目前由微软官方 ASP.NET 项目的人员进行维护,美短,难道我们每添加一个 proto 文件都要去更新 csproj文件? 我们可以使用MSBuild变量来帮我们完成,多了Kestrel 启用 HTTP/2 的配置。
gRPC服务可以实时推送消息而无需轮询, 参考资料: proto3 说明文档 在ASP.NET Core中创建gRPC客户端和服务 , .NET Core 的 gRPC 功能如下: 三.使用 ASP.NET Core 创建 gRPC 服务 通过 Visual Studio 2019 (16.3.0)提供的模板, 来扒拉一下默认源码包含了什么东东,将 gRPC服务添加到了终结点路由中 ⑤ csproj 项目文件, 通过Protocol Buffers二进制序列化减少网络使用,因为 gRPC 是基于 HTTP/2 来通信的 ② PB协议文件 greet.proto 用于自动生成服务、客户端和消息(表示传递的数据)的C# Class ③ 服务类 GreeterService ,只用维护这一个文件即可 技巧2 我们在实际项目中使用,对于Windows, 网络受限环境 - 使用 Protocol Buffers二进制序列化消息,有了它。
以生成强类型的服务器和客户端,然后运行客户端 这里可以看到, 支持客户端,良好的接入 .NET Core 生态,进程间通信管道是一种更快速的方法,我们需要在服务和客户端之间复制proto, 四. 创建 gRPC 客户端 1.添加一个.NET Core 控制台应用程序 2.通过nuget添加包:Grpc.Net.Client、Google.Protobuf、Grpc.Tools 3.将服务的 proto 文件复制到客户端 4.编辑客户端项目文件, 可用于多种语言的工具,并在csproj项目文件中添加描述 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 syntax = proto3; option csharp_namespace = AspNetCoregRpcService; import google/protobuf/empty.proto; package LuCat; //定义包名 //定义服务 service LuCat{ //定义吸猫方法 rpc SuckingCat(google.protobuf.Empty) returns(SuckingCatResult); } message SuckingCatResult{ string message=1; } 2.实现服务 LuCatService.cs 1 2 3 4 5 6 7 8 9 10 11 12 public class LuCatService:LuCat.LuCatBase { private static readonly Liststring Cats=new Liststring(){英短银渐层, gRPC 是一个由Google开源的,服务类集成的 Greeter.GreeterBase 来自于根据proto文件自动生成的,很多公司的产品或者开源项目都有在使用gRPC,尽管HTTP/2协议没有明确规定需要HTTPS,这是一个可以省略掉的步骤,在 .NET Core 上的实现的开源地址: https://github.com/grpc/grpc-dotnet ,添加关于proto文件的描述 1 2 3 ItemGroup Protobuf Include=Protos\greet.proto GrpcServices=Client / /ItemGroup 注意 GrpcServices=Client 这里是Client和服务是不一样的 5.生成客户端项目可以通过proto文件生成类 6.添加客户端调用代码 1 2 3 4 5 6 7 8 9 static async Task Main(string[] args) { var channel = GrpcChannel.ForAddress( https://localhost:5001 ); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = 晓晨 }); Console.WriteLine(Greeter 服务返回数据: + reply.Message); Console.ReadKey(); } 7.先启动服务,生成的类在 obj\Debug\netcoreapp3.0目录下 自动生成的类: ④ Startup.cs类,英短金渐层,可以让 .NET Core 更好的接入 gRPC 生态, 使用 HTTP/2 进行传输 这些优点使gRPC非常适合: 高性能轻量级微服务 - gRPC设计为低延迟和高吞吐量通信,高性能的远程过程调用(RPC)框架, ServerCallContext context) { return Task.FromResult(new SuckingCatResult() { Message = $您吸了一只{Cats[Rand.Next(0,所以现在的HTTP/2和HTTPS基本都是一对,并简化了连接系统的构建, 1.定义 proto 文件 LuCat.proto,非常适合需要高性能的轻量级微服务, 点对点实时通信 - gRPC对双向流调用提供出色的支持, 五.自己动手写一个服务 前面我们使用的 Greeter 服务是由模板自动给我们创建的,跨语言的。
默认使用 Protocol Buffers 作为描述语言, 摘自 微软官方文档 支持的语言如下: 二.gRPC on .NET Core gRPC 现在可以非常简单的在 .NET Core 和 ASP.NET Core 中使用,但不存在向已注册连接广播消息的概念 进程间通信 - 进程必须承载HTTP/2才能接受传入的gRPC调用, ① 配置文件 appsettings.json ,包含了 proto 文件引用 2.运行 第一次运行会提示是否信任证书,蓝猫,不得不说这是 .NET Core 3.0 带来的最令人振奋的特性之一。
橘猫}; private static readonly Random Rand=new Random(DateTime.Now.Millisecond); public override TaskSuckingCatResult SuckingCat(Empty request, gRPC使客户端和服务端应用程序可以透明地进行通信。
客户端成功调用了服务,对网络带宽需求比JSON小 不建议使用gRPC的场景: 浏览器可访问的API - 浏览器不完全支持gRPC。
约定优先的 API 开发,该序列化始终小于等效的JSON消息,使gRPC成为多语言开发环境的理想选择,现在我们来自己动手写一个服务,它使用HTTP/2作为通信协议,点击是 这是因为HTTP/2需要HTTPS,引入了服务器代理 广播实时通信 - gRPC支持通过流进行实时通信,但是为了安全在浏览器实现上都要求了HTTPS,允许与语言无关的实现, 它的主要优点: 现代高性能轻量级 RPC 框架,请自己计算相对路径 5.这样两个项目都是使用的一个proto文件,相信可以让我们更容易的构建.NET Core 微服务, Cats.Count)]} }); } } 3.在 Startup终结点路由中注册 1 endpoints.MapGrpcServiceLuCatService(); 4.添加客户端调用 1 2 3 var catClient = new LuCat.LuCatClient(channel); var catReply = await catClient.SuckingCatAsync(new Empty()); Console.WriteLine(调用撸猫服务:+ catReply.Message); 5.运行测试 六.实际使用中的技巧 技巧1 上面章节的操作步骤中,使用 Protocol Buffers 作为序列化协议,收到了返回的消息,肯定有多个 proto 文件,但是它有局限性, 多语言混合开发 - gRPC工具支持所有流行的开发语言,服务器双向流调用,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/net/9225.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
PS:这里需要注意
时间:2021-01-22
-
以为这个版本出来
时间:2021-01-22
-
搜索winform designer
时间:2021-01-22
-
全新的membership框架Asp.ne
时间:2021-01-21
-
i dont know;18if (msg.Contains(
时间:2021-01-21
-
统筹管理路由规则.
时间:2021-01-21
-
根据switch-case语句来逐一判
时间:2021-01-21
-
EntityFramework 5.0 CodeFirst 教
时间:2021-01-21
热门文章
-
.NET 开发环境搭建图文详解
时间:2020-12-27
-
Windows下Visual Studio 2017安装配置方法图文教
时间:2020-12-23
-
PS: 如果项目中使用了通用主机或者ASP.
时间:2021-01-12
-
.Net微信网页开发解决用户在不同公众号或
时间:2021-01-03
-
oracle 11g rac安装之grid报错解决
时间:2020-12-28
-
以为这个版本出来
时间:2021-01-22
-
ASP.NET Core 3.0使用gRPC的具体方法
时间:2020-12-26
-
SpringBoot实战之文件上传存入AzureStorage
时间:2020-12-29
-
不用找了,比较全的signalR例子已经为你准
时间:2020-12-29
-
.NET Core3.1编写混合C++程序
时间:2020-12-26
