gRPC .NET Core跨平台学习
前些天发布gRPC C# 学习,在.NET Framework 中使用gRPC ,今天来学习 .NET Core gRPC。
gRPC 的.NET Core 包在NuGet 上发布了,结合.NET Core 实现gRPC 完美跨平台。
本篇主要讲解 .NET Core 版gRPC客户端运行在Ubuntu系统上,与局域网内的服务端通信。
下面我们来正式开始。
在之前的代码基础开发.NET Core版。
本文运行环境:
服务端:WIN10 x64
客户端:Ubuntu 14.04
添加.NET Core版gRPC Client
首先我们打开之前的gRPCDemo 代码,GitHub:https://github.com/linezero/Blog/tree/master/gRPCDemo 。
添加一个.NET Core 控制台应用 gRPCNETCoreClient
然后在 gRPCNETCoreClient 项目上添加引用:
Install-Package Grpc -Pre
移植传统类库至.NET Core类库
安装好Grpc 以后我们就可以来移植类库了,这里我们首先创建一个gRPCNETCoreDemo Class Library。
新建好以后我们将 project.json 文件更改为如下:
{ "version": "1.0.0-*", "frameworks": { "net452": { "dependencies": { "Grpc": "1.0.0", "Grpc.Core": "1.0.0", "Google.Protobuf": "3.0.0", "System.Interactive.Async": "3.0.0" } }, "netstandard1.6": { "imports": "dnxcore50", "dependencies": { "NETStandard.Library": "1.6.0", "Grpc": "1.0.1-pre1", "Grpc.Core": "1.0.1-pre1", "Google.Protobuf": "3.1.0", "System.Interactive.Async": "3.1.0-rc" } } } }
这样类库就能支持.NET Framework 4.5.2 以及 .NET Core。
这里我省略了生成代码,直接将gRPCDemo 中的类复制过来。然后gRPCNETCoreClient 添加gRPCNETCoreDemo 引用。
gRPCNETCoreClient 中Program.cs 添加如下代码,基本上和上篇代码一致,新增了控制台编码输出格式。
public class Program { public static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Channel channel = new Channel("127.0.0.1:9007", ChannelCredentials.Insecure); var client = new gRPC.gRPCClient(channel); var reply = client.SayHello(new HelloRequest { Name = "LineZero .NET Core Client" }); Console.WriteLine("来自" + reply.Message); channel.ShutdownAsync().Wait(); Console.WriteLine("任意键退出..."); Console.ReadKey(); } }
代码编写好以后,我们来执行gRPCServer ,然后使用dotnet run 执行 gRPCNETCoreClient。
成功通信,证明支持.NET Core。
发布至Ubuntu系统运行
下面将gRPCNETCoreClient 发布至Ubuntu系统跨平台运行。
代码绑定ip需要稍作调整。
查看本地ip 是多少,将gRPCServer 中的localhost 改成本地ip ,并将 Client的127.0.0.1 也改成本地ip。
发布 gRPCNETCoreClient
dotnet publish
将发布后的目录复制到 Ubuntu 系统。
下面先在本地启动Server ,然后在Ubuntu系统执行Client 。
成功在Ubuntu 系统上通信,这里服务端是运行在本地,客户端是在另外一台机器上。
gRPC 官网文档:http://www.grpc.io/docs/
protobuf文档:https://developers.google.com/protocol-buffers/docs/overview
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
相关文章
- ASP.NET Core RSA加密或解密
- 运行Vue在ASP.NET Core应用程序并部署在IIS上
- 学习ASP.NET Core Blazor编程系列十四——修改
- 学习ASP.NET Core Blazor编程系列十二——路由(下)
- 学习ASP.NET Core Blazor编程系列九——服务器端校验
- 学习ASP.NET Core Blazor编程系列七——新增图书
- 学习ASP.NET Core Blazor编程系列二十九——JWT登录(3)
- 学习ASP.NET Core Blazor编程系列二十八——JWT登录(2)
- 学习ASP.NET Core Blazor编程系列二十三——登录(2)
- 学习ASP.NET Core Blazor编程系列十八——文件上传(中)
- abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十二)
- 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)
- 学习ASP.NET Core Razor 编程系列十一——把新字段更新到数据库
- 学习ASP.NET Core Razor 编程系列八——并发处理
- ASP.NET Core AD 域登录
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
- 基于.NET Core的Hypertext Application Language(HAL)开发库
- ASP.NET Core中使用EF Core(MySql)Code First
- 在 ASP.NET Core 中 使用 Serilog
- 精通 ASP.NET Core MVC (第 7 版) 源码下载
- 《精通 ASP.NET Core MVC (第七版)》开始发售
- 深入 .NET Core 基础 - 2:共享框架