gRPC .NET Core跨平台学习

摘要:
前几天,发布了gRPCC#学习,并在中使用了gRPC。NET框架。今天,我们将学习。NET核心RPC。这个gRPC的NETCore包在NuGet上发布,并与结合。NETCore实现了gRPC的完美跨平台。本文主要解释。NET Core版gRPC客户端在Ubuntu系统上运行,并与LAN中的服务器通信。开发。NET Core版本。以下代码添加到gRPCNETCoreClient中的Program.cs中,这与前面的代码基本相同,并添加了控制台代码输出格式。成功的沟通证明了对的支持。NETCore。发布到Ubuntu系统运行。接下来,将gRPCNETCoreClient发布到Ubuntu系统,以便跨平台运行。

前些天发布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

gRPC .NET Core跨平台学习第1张

然后在 gRPCNETCoreClient 项目上添加引用:

Install-Package Grpc -Pre

移植传统类库至.NET Core类库

安装好Grpc 以后我们就可以来移植类库了,这里我们首先创建一个gRPCNETCoreDemo Class Library。

gRPC .NET Core跨平台学习第2张

新建好以后我们将 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。

gRPC .NET Core跨平台学习第3张

成功通信,证明支持.NET Core。 

发布至Ubuntu系统运行

下面将gRPCNETCoreClient 发布至Ubuntu系统跨平台运行。

代码绑定ip需要稍作调整。

查看本地ip 是多少,将gRPCServer 中的localhost 改成本地ip ,并将 Client的127.0.0.1 也改成本地ip。

发布 gRPCNETCoreClient

dotnet publish 

将发布后的目录复制到 Ubuntu 系统。

下面先在本地启动Server  ,然后在Ubuntu系统执行Client 。

gRPC .NET Core跨平台学习第4张

成功在Ubuntu 系统上通信,这里服务端是运行在本地,客户端是在另外一台机器上。

gRPC 官网文档:http://www.grpc.io/docs/

protobuf文档:https://developers.google.com/protocol-buffers/docs/overview

如果你觉得本文对你有帮助,请点击“推荐”,谢谢。 

免责声明:文章转载自《gRPC .NET Core跨平台学习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CocosPods安装和导入第三方框架WordPress引用静态资源方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VS2017 移动开发(Android and IOS) 序

序    公司原因,要求用C#开发移动端app,老板觉得用现在会的C#做会比较快。。。 从零开始,折腾一个多星期,重装系统三遍(强迫症),其它各种折腾,终于手机运行上了第一个APP,看看就好。。。   不得不吐槽几个按钮没有任何事件安装包有40M+。    (2018.04.03补充安装包大小可以多个设置进行减小)    因为Xamarin被微软收购,所以...

JavaScript开源跨平台框架NativeScript

NativeScript是一款使用JavaScript语言来构建跨平台原生移动应用的开源框架,支持iOS、Android和Windows Phone。且NativeScript的使用没有过多繁杂的要求,只需使用自己已经掌握的JavaScript和CSS技能就能开发出真正具有原生用户体验的移动应用。    作为免费开源项目的NativeScript,它的源...

Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

   (本文是基于老版本的VS和Xamarin,而VS2017已经集成了Xamarin,所以,本文已经过时,最新的Xamarin开发介绍请参见 使用 Xamarin开发手机聊天程序 。)    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的...

protobuf配置与使用

Protobuf配置与安装 1 安装与配置 1、protobuf是google公司提出的数据存储格式,详细介绍可以参考:https://code.google.com/p/protobuf/ 2、下载最新的protobuf,下载地址:https://code.google.com/p/protobuf/downloads/list 3、下载protobuf...

在ASP.NET Core跨平台应用程序开发中如何捕获并处理全局异常

问题描述 在传统的ASP.NET Web Api 应用程序开发中,我们处理全局异常的方法通常是实现一个ExceptionFilterAttribute的子类,如下: public classErrorHandlingFilter : ExceptionFilterAttribute { public override voidOnException...

Google的Protobuf协议分析

protobuf和thrift类似,也是一个序列化的协议实现,简称PB(下文出现的PB代表protobuf)。 Github:https://github.com/google/protobuf 上图,说明一下protobuf协议。 PB以“1-5个字节”的编号和类型开头,格式:编号左移3位和类型取或得到。 编号是什么? 编号就是 定义的proto文件中...