DotNetCore 基于gRPC进行通信

本文介绍了如何在DotNetCore中利用gRPC进行通信,详细讲解了.proto文件的作用,以及如何编译proto文件。接着展示了如何设置公共类库、创建服务端和客户端代码,提供了一个简单的入门指南,鼓励读者深入学习gRPC的相关知识。
摘要由CSDN通过智能技术生成

关于gRPC

		有了 gRPC, 我们可以一次性的在一个 .proto 文件中定义服务并使用任何支持它的语言去实现客户端和服务器,
	反过来,它们可以在各种环境中,从Google的服务器到你自己的平板电脑, gRPC 帮你解决了不同语言间通信的复杂性
	以及环境的不同。使用 protocol buffers 还能获得其他好处,包括高效的序列号,简单的 IDL 以及容易进行的接口
	更新。
																									----摘自官方文档 

什么是.proto文件?

	protocol-buffers 是由google 出品的,一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议。
可以用于网络通信和数据存储。其文件后缀名为.protot

开始噶事

首先我们创建一个文件夹在文件夹中创建一个后缀名为 .proto的文件
我的文件就起名为Test.proto
//声明语法
syntax="proto3";
//下面写命名空间的地址也就是JAVA的包名
package GRPCClassLib;

//java 的包名
option java_package="com.GRPCClassLib";
//Java的类名
option java_outer_classname="GRPCTest";
//c# 的命名空间
option csharp_namespace="GRPCClassLib.GRPCTest";


service test
{
  rpc TestMethod (SearchResponse ) returns (ResponseDto);
}

//每个字段由字段限制、字段类型、字段名和编号四部分组成


message SearchResponse 
{
  int32 code=1;
}

message ResponseDto
{
   int32 Code=1;
   string Respons=2;
}

message Respons
{
    string Id=1;

    string msg=2;
}

接下来就是编译我们所写的 proto文件了。
我直接写(chao)了个 批处理程序,
废话不多说上代码
//如果你没有.prop的编译工具的话,先把这段给略过,等会再回来看也行

@rem 生成客户端和服务器端存根

setlocal

@rem 进入当前目录

cd /d %~dp0

set TOOLS_PATH= 编译工具所在的地址//我是使用dotnetCore NuGet包下载的 gPRC.Tool 工具,所以是 包所在地址

%TOOLS_PATH%\protoc.exe ^
--proto_path 这里写proto文件所在的目录地址 ^
--csharp_out= 文件输出保存的目录(下同) ^
--java_out= ^ //这个代表Java的输出
--python_out= ^ //这个代表?的输出
--grpc_out=^ 这个是Grpc的输出
--plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe ^

这里写文件文件的地址/Tests.proto

endlocal
timeout 10

下面是生成的文件

在这里插入图片描述

gRPC应用在DotnetCore中

接下来就是将生成的代码应用在项目中了!
第一步打开VS 这个就不用我说了吧!
这里我们创建两个个控制台程序
一个作为服务端、一个作为客户端
然后在创建一个类库作为公共的gRPC类库
然后我们引用Google的NUGet包

Install-Package Grpc

Install-Package Google.Protobuf
//这两个包是三个项目都需要引用的
然后是
Grpc.Tools这个Nuget包 这个主要是下载proto的编译工具,其实不需要引到项目里面,但是没有的同学可能要去下载了

Install-Package Grpc.Tools	
然后就是运行编译命令了,一般编译工具的地址在packed文件夹里面,但是Core的packed文件夹并不是按项目分的,所以一般都是 
C:\Users\用户名\.nuget\packages\grpc.tools\1.22.0-pre1\tools\windows_x64
Linux的同学呢,自己找一下吧。

设置公共类库

其实很简单,就是将生成的两个CS文件给放进去
在这里插入图片描述

创建服务端代码

首先呢,创建一个服务类

这里起名 TestService.cs
然后项目引用公共类库
当前服务类继承公共类库中的
在这里插入图片描述


using Grpc.Core
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值