说明

TouchRpc是RRQM框架的特殊数据格式的RPC,它虽然不具备跨语言性,但是跟随dotnet core跨平台。而且其高效的执行效率,简单的操作,以及强大的功能,都让人欲罢不能。

特点:

  • 支持自定义类型参数。
  • 支持具有默认值的参数设定。
  • 支持out、ref 关键字参数。
  • 支持服务器回调客户端
  • 支持客户端之间相互调用
  • 支持TCP、UDP等不同的协议调用相同服务。
  • 支持异步调用。
  • 支持权限管理,让非法调用死在萌芽时期。
  • 支持静态织入调用静态编译调用,也支持方法名+参数调用。
  • 支持调用配置(类似MQTT的AtMostOnce,AtLeastOnce,ExactlyOnce)。
  • 支持EventBus(企业版支持)。
  • 支持流推送。
  • 支持通道。
  • 支持文件传输。
  • 支持自定义序列化
  • 全异常反馈 ,服务器调用状态会完整的反馈到客户端(可以设置不反馈)。
  • 高性能,在保证送达但不返回的情况下,10w次调用用时0.8s,在返回的情况下,用时3.9s。

场景

什么情况下使用TouchRpc比较好呢?首先,你得先了解RPC,了解完后,因为TouchRpc无法跨语言,所以,建议以下场景使用TouchRpc比较稳妥。

  1. 不需要跨语言的终端,例如:Unity游戏,Winform、WPF、MAUI等软件。
  2. 服务器之间集群。
  3. 扩展微服务,此时可以使用反向RPC实现。

实际上TouchRpc有四个版本,分别为:

类型 特性
Tcp版 基于TCP协议,连接性能最好,执行效率最高,支持TouchRpc所有功能。
Udp版 基于UDP Package协议,无连接,执行效率高,仅支持TouchRpc的Rpc功能。
Http版 基于Http握手连接,数据交互仍然使用TCP。连接性能一般,但兼容性强,支持JsonRpc,WebApi,XmlRpc,WebSocket等一系列Http组件,且执行效率和TCP版一样高,支持TouchRpc所有功能。
WebSocket版 该版本是仅适用于Asp.Net Core的版本,特点就是和Asp.Net Core共用端口。但是执行数据使用的是WebSocket,所有效率只有Tcp版的80%。支持TouchRpc所有功能

可配置项

继承基类。

属性名 属性描述
SetVerifyTimeout 设置验证超时时间,默认3000ms。(仅TcpTouchRpc可用)
SetVerifyToken 设置验证口令。
SetHeartbeatFrequency 设置心跳。默认为间隔2000ms,连续3次无响应即视为断开。
SetSerializationSelector 设置序列化选择器。
SetResponseType 设置允许的响应类型
SetRootPath 设置根路径

支持插件接口客户端、服务器均支持

支持ITcpPlugin接口,即可实现下列事务的触发。
或者继承自TouchRpcPluginBase类,重写相应方法即可。

|

ITouchRpcPlugin

OnHandshaking 即将握手连接。Client端不会触发。
OnHandshaked 握手连接完成。
OnStreamTransfering 即将接收流数据,用户需要在此事件中对e.Bucket初始化。
OnStreamTransfered 流数据处理,用户需要在此事件中对e.Bucket手动释放。
当流数据传输结束之后。并不意味着完成传输,请通过Result属性值进行判断。
OnFileTransfering 在文件传输即将进行时触发。
OnFileTransfered 当文件传输结束之后。并不意味着完成传输,请通过Result属性值进行判断。
OnReceivedProtocolData 收到协议数据