html 手机网站开发,进了网站的后台系统 怎么改公司的网站,提高网站的权重的最佳方法,网络营销方式论文欢迎大家参加4小时Dapr.NET 5的实战课程课程链接 https://ke.qq.com/course/4000292?tuin1271860f什么是GRPCgRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。gRPC 的主要优点是#xff1a;高性能轻量级 RPC 框架。协定优先 API 开发#xff0c;默认使用协议缓冲… 欢迎大家参加4小时Dapr.NET 5的实战课程课程链接 https://ke.qq.com/course/4000292?tuin1271860f什么是GRPCgRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。gRPC 的主要优点是高性能轻量级 RPC 框架。协定优先 API 开发默认使用协议缓冲区允许与语言无关的实现。可用于多种语言的工具以生成强类型服务器和客户端。支持客户端、服务器和双向流式处理调用。使用 Protobuf 二进制序列化减少对网络的使用。这些优点使 gRPC 适用于效率至关重要的轻量级微服务。需要多种语言用于开发的系统。需要处理流式处理请求或响应的点对点实时服务。Dapr中的GRPCDapr中的GRPC与我们通常情况下使用GRPC大致是一致的唯一的不同是Dapr中的GRPC会固定调用接口/dapr.proto.runtime.v1.AppCallback/OnInvoke因此我们在Dapr中使用GRPC时proto文件中不需要再定义service节点中的rpc接口只需要定义交互使用的序列化结构体即可。项目实战我们继续使用FrontEndBackEnd项目首先需要将BackEnd中的监听协议切换成https因为GRPC是基于HTTP2实现的传输层使用TLS。public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup().UseUrls(https://*:5000);});BackEnd1.为BackEnd引入Nuget包Dapr.AspNetCoreGrpc.AspNetCore2.在BackEnd中新建Protos/greet.proto文件定义交互的结构体syntax proto3;
option csharp_namespace GrpcGreeter;
package greet;message HelloRequest {string name 1;
}message HelloReply {string message 1;
}注意不需要定义service.rpc接口因为Dapr中的GRPC固定调用接口/dapr.proto.runtime.v1.AppCallback/OnInvoke。3.修改项目文件BackEnd.csprojItemGroupProtobuf IncludeProtos\greet.proto GrpcServicesServer //ItemGroup4.新增接口类Services/HelloServicepublic class HelloService : AppCallback.AppCallbackBase{public override async TaskInvokeResponse OnInvoke(InvokeRequest request, ServerCallContext context){var response new InvokeResponse();switch (request.Method){case sayhi:var input request.Data.UnpackHelloRequest();response.Data Any.Pack(new HelloReply { Message ok });break;}return response;}}HelloService中我们只需要定义OnInvoke方法通过request.Method来实现不同业务的代码编写。5.为grpc注入类services.AddGrpc();6.为grpc新增终结点映射endpoints.MapGrpcServiceHelloService();FrontEnd1.为FrontEnd引入Nuget包Google.ProtobufGrpc.Net.ClientGrpc.Tools2.新增Protos/greet.proto文件syntax proto3;
option csharp_namespace GrpcGreeter;
package greet;message HelloRequest {string name 1;
}message HelloReply {string message 1;
}3.修改FrontEnd.csproj文件ItemGroup
Protobuf IncludeProtos\greet.proto GrpcServices“Client /
/ItemGroup4.在DaprController中新增接口[HttpGet(grpc)]public async TaskActionResult GrpcAsync(){using var daprClient new DaprClientBuilder().Build();var result await daprClient.InvokeMethodGrpcAsyncHelloRequest, HelloReply(backend, sayhi, new HelloRequest { Name aaa });return Ok(result);}测试1.运行BackEnddapr run --dapr-http-port 3511 --app-port 5000 --app-id backend --app-protocol grpc dotnet .\BackEnd\bin\Debug\net5.0\BackEnd.dll --app-ssl我们通过--app-protocol grpc指明了使用grpc通过--app-ssl指明了开启tls2.运行FrontEnddapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll3.调用FrontEnd的dapr/grpc接口进行测试调用成功相关文章Dapr实战一 基础概念与环境搭建Dapr .NET Core实战二 服务调用Dapr .NET Core实战三状态管理Dapr .NET 实战四发布和订阅Dapr .NET 实战五ActorDapr .NET 实战六绑定Dapr .NET 实战七SecretsDapr .NET 实战八服务监测Dapr .NET 实战九本地调试Dapr .NET 实战十-终篇K8S运行DaprDapr .NET实战十一单机Dapr集群负载均衡为什么 Dapr 如此令人兴奋