gRPC搭建使用方式

gRpc 官网  链接

新建服务端项目

在服务端内先编写一个 .proto 文件

greet.proto

syntax = "proto3";service Greeter {  rpc SayHello (HelloRequest) returns (HelloReply);}message HelloRequest {  string name = 1;}message HelloReply {  string message = 1;}

服务端生成 .proto 代码为 C#   NutGet Install-Package Grpc.Tools

 

找到tools 从里面选择自己电脑的版本

把 protoc.exe 、 grpc_csharp_plugin.exe 复制出来和 .proto 文件放在一起

编写一个 .cmd 文件和 .proto 文件放在一起,插入生成代码的指令。(注意 greet.proto 这是 .proto 文件名)

protoc -I . --csharp_out . --grpc_out . --plugin=protoc-gen-grpc=grpc_csharp_plugin.exe greet.proto 

点击cmd 生成 会获得两个C#文件。

新建类GreeterService

并在使用客户端之前启动(启动服务端之前,要先排除与.Net 无关的.proto文件,不然直接运行会报错的)

public class GreeterService : Greeter.GreeterBase{    private readonly ILogger<GreeterService> _logger;    public GreeterService(ILogger<GreeterService> logger)    {        _logger = logger;    }    public override Task<HelloReply> SayHello(HelloRequest request,        ServerCallContext context)    {        _logger.LogInformation("Saying hello to {Name}", request.Name);        return Task.FromResult(new HelloReply         {            Message = "Hello " + request.Name        });    }  } class Program {     const int Port = 2020;     static void Main(string[] args)     {         Server server = new Server        {            Services = { Greeter.BindService(new GreeterService()) },            Ports = { new ServerPort("127.0.0.1", 2020, ServerCredentials.Insecure) }         };         server.Start();         Console.WriteLine("127.0.0.1");         Console.WriteLine("GrpcService server listening on port " + Port);         Console.WriteLine("任意键退出...");         Console.ReadKey();     }}

新建控制台客户端项目

客户端调用服务端

namespace gRPCClient{    class Program    {        static void Main(string[] args)        {                  // The port number(5001) must match the port of the gRPC server.            Channel channel = new Channel("127.0.0.1", 2020, ChannelCredentials.Insecure);            var client = new Greeter.GreeterClient(channel).WithHost("127.0.0.1");                        try            {                var reply = client.SayHelloAsync(new HelloRequest { Name = "Zhang San" });                Console.WriteLine("来自" + reply.ResponseAsync.Result);                channel.ShutdownAsync().Wait();                Console.WriteLine("Greeting: " + reply.ResponseAsync.Result);                Console.WriteLine("Press any key to exit...");                Console.ReadKey();            }            catch (Exception ex)            {                throw ex;            }                    }    }}
(0)

相关推荐

  • Python如何调用RPC接口

    Python如何调用RPC接口是很多Python开发工程师比较关心的问题,本篇文章好程序员Python培训小编就给喜欢Python开发的小伙伴们分享一下Python调用RPC接口的详解,文中有详细的代 ...

  • gRPC背压流控、压缩及JSON通信【知识笔记】

    目录 一.压缩 1.Server端所有方法压缩 2.Server单独方法压缩 3.Client请求内容压缩 二.使用JSON通信 1.方法描述使用JSON编译 2.JSON编译具体过程 三.手动流量控 ...

  • 让 gRPC 提供 REST 服务

    Intro gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计. gRPC 基于 HTTP/2 标准设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求 ...

  • Python配置gRPC环境

    Python配置gRPC环境,gRPC是一款高性能.开源的RPC框架,产自Google,基于ProtoBuf序列化协议进行开发,支持多种语言(Golang.Python.Java等),本篇文章好程序员 ...

  • 搭建投资架构:哪种方式更节税?

    实践中,高净值人士多通过名下多种不同类型的公司投资拟上市公司,从而会有多种不同的投资方案.由于不同类型的公司适用的税收法规不同,税收优惠不同,相关的限制条件不同,税收成本和对应的投资收益也有差异.同时 ...

  • MySQL主从复制集群搭建—binlog二进制文件方式

    老哥絮叨 上篇文章我们大致介绍了什么是MySQL主从复制,主从复制的几种集群架构图大概都有哪几种,今天我们就来讲讲如何实现MySQL集群的搭建.主从复制有两种方式可以实现,binlog和GTID,这期 ...

  • 最简单的方式搭建一个私有云

    最简单的方式搭建一个私有云

  • 如何用最简单的方式搭建企业数字化管理平台?一味的砸钱真的好吗?

    近年来,国内产业数字化升级进程不断加快,以物联网建设.5G网络.大数据.人工智能为代表的新基建全面发力,数字经济已成为推动经济持续稳定增长的关键动能.特别是受新冠疫情影响,就连国内很多企业的管理模式都 ...

  • 估值20亿的集团架构的搭建方式

    这个世界上只有一种方法论可以解决任何问题,那就是对标方法论!对标创业实验室倡导向有结果的牛人学习,每年去采访50位有结果的互联网创业牛人.把他们的一线实战干货整理成一套解决方法,发放给创业者们! 今天 ...

  • Spring Boot 搭建 ELK,这才是正确看日志的方式!

    作者:JingQ 来源:https://www.sevenyuan.cn 在看大型网站的中间件技术,对于Elasticsearch有点兴趣,所以将配置流程记录了一下. 为什么要用ELK " ...

  • RabbitMQ:搭建Haproxy+RabbitMQ集群方式(完成)

    RabbitMQ:搭建Haproxy+RabbitMQ集群方式(完成) 你是小KS 2020-05-29 14:36:29 189 收藏 1 原力计划 分类专栏: 消息队列 版权声明:本文为博主原创文 ...

  • 搭建属于你自己的RAMOS系统 – WIN7+VHD+GURB map方式

    前段时间加了一个内存条,将笔记本内存升级到了6G,由于之前用的是32位的win7不可以直接使用6G内存,便装了64位的系统.网上找资源的时候发现,大内存可以使用RamOS,从内存中虚拟出来一个硬盘,然 ...

  • 一对一直播软件源码框架搭建步骤及盈利方式

    做为直播行业的延展平台,一对一直播软件源码在直播系统开发的火热下也变得更火热起来,由于自身具备的强社交性,对想要扩充自己社交圈子的用户来说是最合适不过的选择.一对一直播软件源码虽然在开发过程上比直播系 ...