ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把。同时记录体验的过程。如果你也想按照本文的步骤体验的话,那你得先安装.NET Core3.0预览版的SDK。至于开发工具我用的时VS2019,当然你也可以使用VS Code进行。

作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/10631420.html

gRPC的简单介绍

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。 有关 gRPC 基础知识的详细信息,请参阅 gRPC 文档页。

gRPC 的主要优点是:

现代高性能轻量级 RPC 框架。

协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。

可用于多种语言的工具,以生成强类型服务器和客户端。

支持客户端、服务器和双向流式处理调用。

使用 Protobuf 二进制序列化减少对网络的使用。

这些优点使 gRPC 适用于:

效率至关重要的轻量级微服务。

需要多种语言用于开发的 Polyglot 系统。

需要处理流式处理请求或响应的点对点实时服务。

ASP.NET Core 3.0上gRPC服务模板初体验 创建gRPC服务

打开VS2019 从 Visual Studio“文件”菜单中选择“新建” > “项目”。(由于我是新打开的VS,所以按照如下图所示创建新项目)

1554009071721

如下图所示,选择创建《ASP.NET Core Web 应用程序》,然后点击下一步

1554009107868

在此页面按照下图所示,输入项目名称,位置,解决方案名称,然后点击右下角的“创建”按钮进行创建。

1554009210208

你以为上述步骤中点击“创建”就结束了嘛?说好的要创建gRPC服务模板的,所以,点击上面的创建后会弹出如下图所示,让你选择服务模板的窗口,这里按照下图所示选择gRPC服务模板,然后再次点击右下角的创建,才是真正的创建项目。

1554009368040

创建成功后,会出现如下图所示的项目结构

1554009441048

至此,我们就创建好了一个gRPC服务的模板,接下来我们先测试一番,然后再好好的看下这个模板的结构吧

测试gRPC服务

首先打开HelloGrpc.Server 这个服务端的工作目录,然后Shift+鼠标右键弹出如下图所示的右键菜单,如图所示打开ps窗口

1554009655486

输入dotnet run 命令运行此gRPC服务端项目,如下图所示,说明服务端启动正常,并开始监听对应的端口。

1554009713142

同样的方法,我们启动客户端,这时候客户端会向该服务端发送一条包含具有其名称“GreeterClient”的消息的问候信息。 该服务端将发送一条消息“Hello GreeterClient”作为响应,并显示在命令提示符中。如下图所示:

1554009820515

至此,gRPC服务模板创建的服务端以及客户端测试成功。下面我们就好好的探究一下这个服务模板吧。

gRPC模板解析

在HelloGrpc.Server 服务的端项目中有如下几个文件

greet.proto:greet.proto 文件定义 Greeter gRPC,且用于生成 gRPC 服务器资产。

Services 文件夹:包含 Greeter 服务的实现。

appSettings.json:包含配置数据,如 Kestrel 使用的协议。(熟悉ASP.NET Core的你一定很熟悉)

Program.cs:包含 gRPC 服务的入口点。(熟悉ASP.NET Core的你一定很熟悉)

Startup.cs:IWebHostBuilder的启动配置文件,包含配置应用行为的代码。(熟悉ASP.NET Core的你一定很熟悉)

gRPC 客户端 HelloGrpc.Client 文件:

Program.cs 包含 gRPC 客户端的入口点和逻辑。

下面我们再打开每个文件看看里面究竟是什么东东吧。

proto文件 proto

GRPC使用约定优先的API开发方法。默认情况下,使用协议缓冲区(Protobuf)作为接口设计语言(IDL)。这个.proto文件包含:

GRPC服务的定义。

在客户端和服务器之间发送的消息。

有关Protobuf文件语法的更多信息,请参见正式文件(原型).

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdzs.html