说明
TouchRpc是RRQM框架的特殊数据格式的RPC,它虽然不具备跨语言性,但是跟随dotnet core跨平台。而且其高效的执行效率,简单的操作,以及强大的功能,都让人欲罢不能。
特点:
- 支持自定义类型参数。
- 支持具有默认值的参数设定。
- 支持out、ref 关键字参数。
- 支持服务器回调客户端 。
- 支持客户端之间相互调用。
- 支持TCP、UDP等不同的协议调用相同服务。
- 支持异步调用。
- 支持权限管理,让非法调用死在萌芽时期。
- 支持静态织入调用,静态编译调用,也支持方法名+参数调用。
- 支持调用配置(类似MQTT的AtMostOnce,AtLeastOnce,ExactlyOnce)。
- 支持EventBus(企业版支持)。
- 支持流推送。
- 支持通道。
- 支持文件传输。
- 支持自定义序列化。
- 全异常反馈 ,服务器调用状态会完整的反馈到客户端(可以设置不反馈)。
- 高性能,在保证送达但不返回的情况下,10w次调用用时0.8s,在返回的情况下,用时3.9s。
场景
什么情况下使用TouchRpc比较好呢?首先,你得先了解RPC,了解完后,因为TouchRpc无法跨语言,所以,建议以下场景使用TouchRpc比较稳妥。
- 不需要跨语言的终端,例如:Unity游戏,Winform、WPF、MAUI等软件。
- 服务器之间集群。
- 扩展微服务,此时可以使用反向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 | 收到协议数据 |