网站打不开了怎么办,淘宝指数在线查询,网站建设流程服务,企业网站建设与推广范文介绍该方式适用于多个服务之前都是**.Net项目**的场景优点#xff1a;可以在 .NET 服务器和客户端之间共享 .NET 服务和数据协定类型。无需在 .proto 文件和代码生成过程中定义协定。操作引用组件创建一个共享的类库ShareProto#xff0c;该类库可以被服务端和客户端进行访问… 介绍该方式适用于多个服务之前都是**.Net项目**的场景优点可以在 .NET 服务器和客户端之间共享 .NET 服务和数据协定类型。无需在 .proto 文件和代码生成过程中定义协定。操作引用组件创建一个共享的类库ShareProto该类库可以被服务端和客户端进行访问添加下面的包引用PackageReference Includeprotobuf-net.Grpc Version1.0.152 /
PackageReference Includeprotobuf-net.Grpc.AspNetCore Version1.0.152 /protobuf-net.Grpc是一个社区项目通过属性批注的.Net类型来定义应用的gRPC服务和消息。服务端增加一个获取支付信息的grpc服务[ServiceContract]
public interface IPayProto
{/// summary///获取订单服务/// /summary/// param namerequest/param/// param namecallContext/param/// returns/returns[OperationContract]TaskPayResult GetPayInfo(PayVm request, CallContext callContext default);
}[DataContract]
public class PayVm
{[DataMember(Order 1)]public string PayOrderNo { get; set; }
}[DataContract]
public class PayResult
{[DataMember(Order 1)]public string OrderNo { get; set; }[DataMember(Order 2)]public double Price { get; set; }
}ServiceContract标识为grpc服务OperationContract标识为服务下的端点(也可以理解为控制器下的方法)DataContract标识为请求或者返回的对象。DataMember标识为对象下的属性。创建PayService来实现IPayProto服务接口public class PayService : IPayProto
{public TaskPayResult GetPayInfo(PayVm request, CallContext callContext default){System.Console.WriteLine($接收到的参数是 {request.PayOrderNo});return Task.Run(() new PayResult { OrderNo request.PayOrderNo, Price 10.02f });}
}如果没有实现客户端调用的时候会提示服务没有实现ConfigureServices中增加服务注册代码优先services.AddGrpc();
services.AddCodeFirstGrpc();Configure中启用服务app.UseEndpoints(endpoints
{endpoints.MapGrpcServicePayService();endpoints.MapControllers();
});客户端客户端引用ShareProto类库控制台引用组件PackageReference IncludeGrpc.Net.Client Version2.38.0 /调用方法using var channel GrpcChannel.ForAddress(https://localhost:5001);
var client channel.CreateGrpcServiceIPayProto();
var reply client.GetPayInfo(new PayVm { PayOrderNo 10 });
Console.WriteLine($Greeting: {reply.GetAwaiter().GetResult().OrderNo});参考文档官网https://protobuf-net.github.io/protobuf-net.Grpc代码优先Grpc服务https://docs.microsoft.com/zh-cn/aspnet/core/grpc/code-first?viewaspnetcore-3.1