我眼中的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的调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值