我眼中的RPC

要了解RPC前提:

1、网络序列化传输(如protobuf 等)

2、异步知识(Task)

3、了解客户端和服务器是怎么发协议

 

那什么是RPC?一句话就是RPC是指远程过程调用(这句话到处都有没意义),我自己理解:RPC消息和普通消息相比。就是RPC消息在普通消息头中加入了客户端用于标识挂起消息的唯一ID即RpcID,用于在服务器收到消息后返回透传回客户端重新激活客户端挂起的异步方法。

我们以ET为例,ET中大致分为两种协议:第一种非RPC协议 和 第二种RPC协议

我们以登陆为例讲两种方式:

协议定义


Login_C2G = 10001
Login_G2C = 10002
 
[Message(10001)]
[ProtoContract]
public partial class Message_Login_C2G
{
[ProtoMember(1, IsRequired = true)]
public string UserName;
[ProtoMember(91, IsRequired = true)]
public string PWD{ get; set; }
}
[Message(10002)]
[ProtoContract]
public partial class Message_Login_G2C
{
[ProtoMember(1, IsRequired = true)]
public string Result;
}

 

 

 

第一种非RPC协议:

协议格式:【(10001)协议号】【字节数组(Message_Login_C2G 序列化)】

客户端把以上包发给服务器,服务器解出来,在以相同的格式发给客户端。这就是普通的协议。

第二种RPC协议

协议格式:【(10001)协议号、RPCID】【字节数组(Message_Login_C2G 序列化)】

RPC 协议格式上就是在发给服务器的时候包头加了RPCID。这个ID是客户端发起一个RPC请求时唯一标识这个请求的一个ID.

TIM图片20180303141244

服务器收到协议后,解出包内容后带上客户端发送上来的RpcID返回给客户端。客户端收到服务器返回的消息找到对应挂起的RPC消息重新激活,这就完成了一次RPC的调用

posted on   &大飞  阅读(183)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示