如何在.NET Core(.NET6)项目中高效实践gRPC并实现长尾词的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计756个文字,预计阅读时间需要4分钟。
目录
一、简介
二、创建gRPC服务端
1. 创建gRPC项目 2. 编写自定义服务三、创建gRPC客户端
1. 创建客户端项目 2. 调用gRPC服务(HTTPS) 3. 内网http调用四、IOC注入方式调用gRPC
五、在webAPI中加入gRPC
目录
- 一、简介
- 二、创建gRPC服务端
- 1.创建gRPC项目
- 2.编写自己的服务
- 三、创建gRPC客户端
- 1.创建客户端项目
- 2.grPC服务localhost:7246";
using(var channel=GrpcChannel.ForAddress(url))
{
var client = new Order.OrderClient(channel);
var reply = client.CreateOrder(new CreateRequest()
{
OrderNo = DateTime.Now.ToString("yyyMMddHHmmss"),
OrderName = "冰箱22款",
Price = 1688
});
Console.WriteLine($"结果:{reply.Result},message:{reply.Message}");
}
Console.ReadKey();
}
}
结果:
3.gRPC内网localhost:5246"; using(var channel=GrpcChannel.ForAddress(url)) { var client = new Order.OrderClient(channel); var reply = client.CreateOrder(new CreateRequest() { OrderNo = DateTime.Now.ToString("yyyMMddHHmmss"), OrderName = "冰箱22款", Price = 1688 }); Console.WriteLine($"结果:{reply.Result},message:{reply.Message}"); } Console.ReadKey(); }
比起aka.ms/new-console-template for more information using GrpcDemo.Client; using GrpcDemo.Service; using Microsoft.Extensions.DependencyInjection; Console.WriteLine("Hello, World!"); IServiceCollection services = new ServiceCollection(); services.AddTransient<GrpcRequestTest>(); #region gRPC Client注册 AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); services.AddGrpcClient<Order.OrderClient>(options => { options.Address = new Uri("localhost:5246"); }).ConfigureChannel(grpcOptions => { //可以完成各种配置,比如token }); #endregion //构建容器 IServiceProvider serviceProvider = services.BuildServiceProvider(); //解析grpc请求测试 var grpcRequestTest = serviceProvider.GetService<GrpcRequestTest>(); //执行 grpcRequestTest.CreateOrder();
grpcRequestTest里代码:
/// <summary> /// gRPC请求测试 /// </summary> public class GrpcRequestTest { private Order.OrderClient _orderClient; public GrpcRequestTest(Order.OrderClient orderClient) { _orderClient = orderClient; } public void CreateOrder() { var reply = _orderClient.CreateOrder(new CreateRequest() { OrderNo = DateTime.Now.ToString("yyyMMddHHmmss"), OrderName = "冰箱22款", Price = 1688 }); Console.WriteLine($"结果:{reply.Result},message:{reply.Message}"); Console.ReadKey(); } }
结果:
四、webapi中加入gRPC
通常我们的服务有对外提供对外接口,又要对内提供gRPC服务,那怎么做呢,下面在webapi中加入gRPC服务
1.创建asp.net core mvc项目
2.安装nuget包
Grpc.AspNetCore
3.添加protebuf文件
把上面的proto文件复制过来
4.添加Service
public class OrderService : Order.OrderBase { private readonly ILogger<OrderService> _logger; public OrderService(ILogger<OrderService> logger) { _logger = logger; } /// <summary> /// 创建订单 /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task<CreateResult> CreateOrder(CreateRequest request, ServerCallContext context) { //报存数据库 todo return Task.FromResult(new CreateResult { Result = true, Message = "订单创建成功" }); } /// <summary> /// 查询订单 /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task<QueryResult> QueryOrder(QueryRequest request, ServerCallContext context) { //查询数据库 //todo return Task.FromResult(new QueryResult { OrderInfo = new OrderInfo { Id = request.Id, OrderNo = DateTime.Now.ToString("yyyyMMddHHmmss"), OrderName = "冰箱", Price = 1288 } }); } }
5.注册gRPC服务
在Program.cs文件中
到这里,就把gRPC加入到webapi里面了。
6.验证
启动asp.net core mvc程序
浏览器能访问,证明restful api是没问题的。
然后再用上面的客户端访问一下gRPC的服务。
结果:
这样就成功对外提供api接口和对内提供gRPC服务了。
源码地址:github.com/weixiaolong325/GrpcDemo.Service
到此这篇关于.NET Core(.NET6)中gRPC使用实践的文章就介绍到这了,更多相关.NET Core中gRPC使用内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!
本文共计756个文字,预计阅读时间需要4分钟。
目录
一、简介
二、创建gRPC服务端
1. 创建gRPC项目 2. 编写自定义服务三、创建gRPC客户端
1. 创建客户端项目 2. 调用gRPC服务(HTTPS) 3. 内网http调用四、IOC注入方式调用gRPC
五、在webAPI中加入gRPC
目录
- 一、简介
- 二、创建gRPC服务端
- 1.创建gRPC项目
- 2.编写自己的服务
- 三、创建gRPC客户端
- 1.创建客户端项目
- 2.grPC服务localhost:7246";
using(var channel=GrpcChannel.ForAddress(url))
{
var client = new Order.OrderClient(channel);
var reply = client.CreateOrder(new CreateRequest()
{
OrderNo = DateTime.Now.ToString("yyyMMddHHmmss"),
OrderName = "冰箱22款",
Price = 1688
});
Console.WriteLine($"结果:{reply.Result},message:{reply.Message}");
}
Console.ReadKey();
}
}
结果:
3.gRPC内网localhost:5246"; using(var channel=GrpcChannel.ForAddress(url)) { var client = new Order.OrderClient(channel); var reply = client.CreateOrder(new CreateRequest() { OrderNo = DateTime.Now.ToString("yyyMMddHHmmss"), OrderName = "冰箱22款", Price = 1688 }); Console.WriteLine($"结果:{reply.Result},message:{reply.Message}"); } Console.ReadKey(); }
比起aka.ms/new-console-template for more information using GrpcDemo.Client; using GrpcDemo.Service; using Microsoft.Extensions.DependencyInjection; Console.WriteLine("Hello, World!"); IServiceCollection services = new ServiceCollection(); services.AddTransient<GrpcRequestTest>(); #region gRPC Client注册 AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); services.AddGrpcClient<Order.OrderClient>(options => { options.Address = new Uri("localhost:5246"); }).ConfigureChannel(grpcOptions => { //可以完成各种配置,比如token }); #endregion //构建容器 IServiceProvider serviceProvider = services.BuildServiceProvider(); //解析grpc请求测试 var grpcRequestTest = serviceProvider.GetService<GrpcRequestTest>(); //执行 grpcRequestTest.CreateOrder();
grpcRequestTest里代码:
/// <summary> /// gRPC请求测试 /// </summary> public class GrpcRequestTest { private Order.OrderClient _orderClient; public GrpcRequestTest(Order.OrderClient orderClient) { _orderClient = orderClient; } public void CreateOrder() { var reply = _orderClient.CreateOrder(new CreateRequest() { OrderNo = DateTime.Now.ToString("yyyMMddHHmmss"), OrderName = "冰箱22款", Price = 1688 }); Console.WriteLine($"结果:{reply.Result},message:{reply.Message}"); Console.ReadKey(); } }
结果:
四、webapi中加入gRPC
通常我们的服务有对外提供对外接口,又要对内提供gRPC服务,那怎么做呢,下面在webapi中加入gRPC服务
1.创建asp.net core mvc项目
2.安装nuget包
Grpc.AspNetCore
3.添加protebuf文件
把上面的proto文件复制过来
4.添加Service
public class OrderService : Order.OrderBase { private readonly ILogger<OrderService> _logger; public OrderService(ILogger<OrderService> logger) { _logger = logger; } /// <summary> /// 创建订单 /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task<CreateResult> CreateOrder(CreateRequest request, ServerCallContext context) { //报存数据库 todo return Task.FromResult(new CreateResult { Result = true, Message = "订单创建成功" }); } /// <summary> /// 查询订单 /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task<QueryResult> QueryOrder(QueryRequest request, ServerCallContext context) { //查询数据库 //todo return Task.FromResult(new QueryResult { OrderInfo = new OrderInfo { Id = request.Id, OrderNo = DateTime.Now.ToString("yyyyMMddHHmmss"), OrderName = "冰箱", Price = 1288 } }); } }
5.注册gRPC服务
在Program.cs文件中
到这里,就把gRPC加入到webapi里面了。
6.验证
启动asp.net core mvc程序
浏览器能访问,证明restful api是没问题的。
然后再用上面的客户端访问一下gRPC的服务。
结果:
这样就成功对外提供api接口和对内提供gRPC服务了。
源码地址:github.com/weixiaolong325/GrpcDemo.Service
到此这篇关于.NET Core(.NET6)中gRPC使用实践的文章就介绍到这了,更多相关.NET Core中gRPC使用内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

