gRPC官方快速上手学习笔记(c#版)
上手前准备工作
支持操作系统:windows、OS X、Linux。实例采用.net、.net core sdk。
- The .NET Core SDK command line tools.
- The .NET framework 4.5 (for OS X and Linux, the open source .NET Framework implementation, “Mono”, at version 4+, is suitable)
- Git (to download the sample code)
在windows系统开发环境, 采用 Visual Studio开发工具, 需要满足以下要求:
- .NET Framework 4.5+
- Visual Studio 2013 or 2015.
- Git (to download the sample code)
在OS X 系统开发环境, 采用Xamarin Studio开发工具, 需要满足以下要求:
- Mono 4.4.2+ (or Mono 4+ is sufficient if you manually update NuGet to version 2.12+)
- Xamarin Studio 6.0+
- Git (to download the sample code)
在 Linux 系统开发环境, 采用 the Monodevelop IDE,需要满足以下要求 :
- Mono 4.4.2+ (or Mono 4+ is sufficient if you manually update nuget to version 2.12+)
- MonoDevelop 5.9+
- A NuGet executable, at version 2.12+ (you’ll need to restore NuGet package dependencies from the command line)
- Git (to download the sample code)
下载官方demo
git clone -b v1.6.x https://github.com/grpc/grpc
- 打开下载的demo文
C:\Users\YPF\Desktop\grpc
- 进入目录
examples/csharp/helloworld
Build the example
- 使用Visual Studio打开
Greeter.sln
- 在该项目的解决右键
重新生成解决方案
项目会自动使用NuGet进行必要的package的安装。
运行 a gRPC application
- 运行服务
> cd GreeterServer/bin/Debug
> GreeterServer.exe
- 运行客户端
> cd GreeterClient/bin/Debug
> GreeterClient.exe
更新 a gRPC service
打开目录examples/protos/helloworld.proto
将原来的文件修改为如下并保存:
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// Sends another greeting
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
生成 gRPC code
在demo的根目录(examples/csharp/helloworld
)下执行如下命令:
packages\Grpc.Tools.1.6.1\tools\windows_x86\protoc.exe -I../../protos --csharp_out Greeter --grpc_out Greeter ../../protos/helloworld.proto --plugin=protoc-gen-grpc=packages/Grpc.Tools.1.6.1/tools/windows_x86/grpc_csharp_plugin.exe
这里的
Grpc.Tools.1.6.1
这个命令必须是跟项目中使用NuGet安装的版本一致,否则会报错。
更新并从新运行
修改服务端代码
GreeterServer/Program.cs
class GreeterImpl : Greeter.GreeterBase
{
// Server side handler of the SayHello RPC
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
}
// Server side handler for the SayHelloAgain RPC
public override Task<HelloReply> SayHelloAgain(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello again " + request.Name });
}
}
修改服务端代码
GreeterClient/Program.cs
public static void Main(string[] args)
{
Channel channel = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
String user = "you";
var reply = client.SayHello(new HelloRequest { Name = user });
Console.WriteLine("Greeting: " + reply.Message);
var secondReply = client.SayHelloAgain(new HelloRequest { Name = user });
Console.WriteLine("Greeting: " + secondReply.Message);
channel.ShutdownAsync().Wait();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
运行 a gRPC application
- 运行服务
cd GreeterServer/bin/Debug
GreeterServer.exe
- 运行客户端
cd GreeterClient/bin/Debug
GreeterClient.exe
参考文章:
gRPC官方快速上手学习笔记(c#版)的更多相关文章
- [Docker]Docker快速上手学习笔记
0. 学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器 ...
- Sass简单、快速上手_Sass快速入门学习笔记总结
Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...
- FWT快速沃尔什变换学习笔记
FWT快速沃尔什变换学习笔记 1.FWT用来干啥啊 回忆一下多项式的卷积\(C_k=\sum_{i+j=k}A_i*B_j\) 我们可以用\(FFT\)来做. 甚至在一些特殊情况下,我们\(C_k=\ ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- Java基础及JavaWEB以及SSM框架学习笔记Xmind版
Java基础及JavaWEB以及SSM框架学习笔记Xmind版 转行做程序员也1年多了,最近开始整理以前学习过程中记录的笔记,以及一些容易犯错的内容.现在分享给网友们.笔记共三部分. JavaSE 目 ...
- Netty学习笔记-入门版
目录 Netty学习笔记 前言 什么是Netty IO基础 概念说明 IO简单介绍 用户空间与内核空间 进程(Process) 线程(thread) 程序和进程 进程切换 进程阻塞 文件描述符 文件句 ...
- 官方教程Stealth学习笔记(一)
今天開始要更新官方教程stealth的学习笔记啦, 我将会记录和解说一个小游戏基本的流程和关键地方的技巧. 我会依照官方教程的顺序来更新. ...
- ASP.NET Core快速入门--学习笔记系列文章索引目录
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...
- Python快速入门学习笔记(二)
注:本学习笔记参考了廖雪峰老师的Python学习教程,教程地址为:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb49318210 ...
随机推荐
- TCP协议三次握手与四次挥手通俗解析
TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字 ...
- pycharm中的快捷键和简单设置
PyCharm3.x默认快捷键 PyCharm Default Keymap 1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Sp ...
- 201671010121 2016-2017-2《java程序设计》第一周学习总结
之前学了些C语言,学的也不是太懂,还算能读懂一些简答的代码吧,我觉得这就是进步.刚步入大二,在计算机这个专业里不刻苦是不行的.但是,到我拿到Java书的时候,真心是吓住我了,好厚的一本书啊,不过在老师 ...
- .NET Core多平台开发体验[1]: Windows
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- fileZilla 设置 记录一笔 以防忘记
- django全文检索
-------------------linux下配置操作1.在虚拟环境中依次安装包 1.pip install django-haystack haystack:django的一个包,可以方便地对m ...
- django源码解析一(请求处理流程)
1.我们都知道WSGI是一个规范,规范了server和application之间通信的一些约束,server端在监听到请求之后,会把请求转给application去处理,他们之间关联起来的桥梁是一个e ...
- HTTPS静态服务搭建过程详解
HTTPS服务对于一个前端开发者来说是一个天天打招呼的老伙计了,但是之前我跟HTTPS打交道的场景一直是抓包,自己没有亲自搭建过HTTPS服务,对HTTPS的底层知识也是一知半解.最近正好遇到一个用户 ...
- Word直接发布新浪博客(以Wo…
原文地址:Word直接发布新浪博客(以Word 2013为例)作者:paulke2011 注意:这篇博客直接由Word 2013发出!这虽然也算是一个教程,但更多的是一个试验品. 老早就知道Word有 ...
- JavaScript 的使用基础总结③
JavaScript 中的对象 JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... JavaScript 允许自定义对象. (一)数组 数组对象的作用是:使用单独的变量名来存储 ...