在使用gRpc之前,需要先了解一点基础知识。
1. Protocol Buffers 具体参考https://protobuf.dev/ :
简答来说就是Google开发的一种数据描述的格式。和具体的开发语言无关,根据这个东西,你能定义你方法的参数,返回值类型。
首先 创建一个 xxx.proto 文件 .例如 sayHello.proto
syntax = "proto3";
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 results_per_page = 3;
}
SearchRequest 相当于C#类名字。string ,int32 ,int32 是proto里面的数据类型。query ,page_number ,results_per_page 是类的属性名,后面又给了数字,这个是proto的语法要求。在给字段编号时遵循以下规则
- 你必须给你的字段一个1-536,870,911的编号
- 每个字段的编号必须唯一
- 19,000 to 19,999是 Protocol Buffers 预留的,你要是用了 编译器就报警。(最好别用免得有麻烦)
- 不能使用保留字段名字和保留字段编号
举例子:
message SearchRequest {
reserved 15, 9 to 11;
reserved "foo", "bar";
string query = 1;
int32 page_number = 2;
int32 results_per_page = 3;
string foo =4;
string bar=10;
}
文档中有一段写了 字段可以是单数或者复数。
单数就用optional修饰和C#中普通的字段没区别 如: string query = 1和optional string query = 1
复数就用repeated修饰,C#对于repeated修饰的字段会生成一个RepeatedField的泛型字段,相当于是list集合 如: repeated string emails= 4; 他最后生成C#类,就简单看成list<string>
定义枚举
在.proto文件中是可以定义枚举的 ,如:
enum Corpus {
CORPUS_UNSPECIFIED = 0;
CORPUS_UNIVERSAL = 1;
CORPUS_WEB = 2;
CORPUS_IMAGES = 3;
CORPUS_LOCAL = 4;
CORPUS_NEWS = 5;
CORPUS_PRODUCTS = 6;
CORPUS_VIDEO = 7;
}
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 results_per_page = 3;
Corpus corpus = 4;
}
package
syntax = "proto3";
option csharp_namespace = "gRPCDemo.demo";
package requestUser;
message UserItem{
string name = 1;
int32 age = 2;
string address = 3;
repeated string phones = 4 ;
}
syntax = "proto3";
option csharp_namespace = "gRPCDemo.demo";
import "Protos/userPackage.proto";
package greet;
message HelloRequest {
requestUser.UserItem user = 1;
}
message HelloReply {
string message = 1;
}
重点来了。定义服务Defining Services
如果你想让别人调用你的服务(就是别人调用你的方法),就要定义服务
service SearchService {
rpc Search(SearchRequest) returns (SearchResponse);
}
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
有这些基础后,我们下一节来测试一下。
https://www.cnblogs.com/baiyunpiaopiao/p/18628560
|
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章