历史更新
TouchSocket
框架升级/发版规则升级前重点关注可能造成【破坏性】的标签类型:、、、
版本号规则:主版本号.次版本号.修订版本号
- 只要【确认】为框架
bug
,则当天修复,当天发版,修订版本号加 1
。 - 如果
.csproj
文件有变更,则当天发版,修订版本号加 1
。 - 其余情况,每年发布一个
主版本
。
v1.3
更新日期:2023.3.1
更新描述:兼容性更新。
- 整体增加异步方法。
- Rpc源代码生成策略,支持接口实例并存。
- TcpClient在UseReconnect插件时,Disconnect事件不触发bug。
- ws协议的TouchRpc服务端,增加HttpContext上下文获取。
v1.2
更新日期:2023.2.15
更新描述:兼容性更新。
- TouchRpc支持命名元组。
- Rpc源代码生成策略。
- TouchRpc在Websocket协议下,启动,连接异常bug。
- TouchRpc在调用WaitSend下失败的bug。
- TouchRpc在Handshaked时,调用Rpc超时bug。
- 序列化、反射在unity中使用il2cpp编译的bug。
- 反序列化在初次加载时会失败的bug。
- BytePool没有公共构造函数的bug。
- ws协议的TouchRpc服务端,增加HttpContext上下文获取。
- ByteBlock对于int,long等数据,写入和读取的时候支持大小端指定。
- IServicePlugin插件,用于显示通知服务器的启动状态。
- Rpc支持接口特性标记。
- 将BytePool由静态调整为实例,且由其Default实例作为默认。
v1.1
更新日期:2023.1.13
更新描述:小版本升级,可能会有不兼容。请按下列提示修改。
- TouchRpc系文件传输时,文件夹不存在的提示。
- WaitingClient,当客户端断开连接时,可选是否抛出异常。
- Fast序列化时。可选序列化只读属性。
- 多个不稳定Bug。
- Tcp客户端新增Disconnecting事件。在主动Close时生效。
- 多个事件类名称修改,请按照提示修改即可。
- 多个无用方法参数。
v1.0.0
更新日期:2023.1.1
更新描述:大版本升级,请详细阅读下列更新日志。
- 将最高版本升级为NET7。
- Tcp系异步发送效率。
- TouchRpc系Channel的稳健性。
- 多个不稳定Bug。
- ValueByteBlock,在简单代码块里面能有效减少创建的类。
- MemoryCache类,其功能类似微软官方。但是支持全部泛型。
- IPackage系。该系列能以超高效率的进行二进制序列化。
- SingleTimer类,不可重入的Timer。
- Jsonrpc支持自定义适配器解析(EE)
- 严重TouchRpc系OnRouting通知,所有的客户端之间的通信,都必须经过OnRouting的筛查。
- TouchRpc系小文件传输,在文件小于1Mb时,其传输效率是常规传输的10倍以上。
- TouchRpc系超大文件多链路传输,支持多个客户端协同传输同一个文件,这在互联网环境中,效率比常规传输提高类3-5倍。
- TouchRpc系Redis组件,能实现双端共同存储。
- 严重精简所有命名空间,删除所有三级命名空间。例如:TouchSocket.Core.ByteManager精简为TouchSocket.Core。
- 严重删除Newtonsoft.Json的源代码嵌入。全局的Json会根据环境动态调整,详情见Json工具
- 严重框架默认日志由ConsoleLogger,替换为EmptyLogger(不输出任何东西)。
- 严重Tcp全系,在连接时,ID的初始值使用long类型从0递增。
- 严重Tcp服务器,将定时清理无数据交互的选项替换为UseCheckClear插件。并且默认没有启用,需要手动加入。
- Tcp系适配器,取消部分参数。
- DataLock改名为DataSecurity。
- EasyAction改名EasyTask。
- IMessage改名IMessageObject。
- TokenInstance改名MessageInstance。
- TouchRpc系,精简常规文件传输操作。
- 严重TouchRpc系,所有插件通知参数,默认都设为不允许操作,需要手动设置e.IsPermitOperation=true。
- Newtonsoft.Json的源代码嵌入。全局的Json会根据环境动态调整,详情见Json工具。
*** 更新示例指南 ***
(1)适配器参数报错:直接删除isAsync参数,以及isAsync为True的所有逻辑。 (2)依赖属性的声明报错:增加泛型约束即可,详情查看依赖属性 (3)服务端定时清理警告:在配置插件中使用UseCheckClear,并且进行相关配置。
版本号: 0.7.0
更新日期:2022.9.21 更新描述:兼容性更新,增强型更新。RPC内容需要客户端与服务器同步更新。 更新详情:
优化
- Fast二进制序列化,支持自定义序列化。
- TouchRpc全系,在文件传输等大型IO时,由于心跳失败而断开连接。
- 优化AspNetCore的IContainer。
- TcpCommandLinePlugin与WSCommandLinePlugin支持获取客户端参数。
新增
- 插件实例会以单例注入容器。
- 所有适配器支持缓存超时设定。
- 修改所有事件为委托。
- 开放AspnetCore创建Tcp,Http等服务器的配置。
- IClient增加发送、接收的最后时间记录。
- Http支持多文件上传(目前仅支持小文件,具体大小以实际运行内存为准,实测100Mb没问题)。
- Websocket插件默认会处理Close报文。且插件支持Close。
- Rpc支持模板代码重写。
- TouchRpc支持元组。
- JsonRpc支持Websocket协议。
修改
- IScopedContainer修改为IContainerProvider
修复
- BytePool回收内存时不判断大小的bug。
删除
- 无。
版本号: 0.6.0
更新日期:2022.9.10 更新描述:兼容性更新,增强型更新。专为Unity 3D适配。 更新详情:
优化
- Gzip的压缩效率。
- 发送效率。
新增
- IDataCompressor数据传输压缩接口。
- RemoteStream支持数据读写压缩。
- WaitResultPackageBase类,专属非序列化的数据格式化。
- DelaySender延迟缓存发送。
修改
- 无
修复
- Rpc注册服务为单例时,实际上是瞬时服务的bug。
删除
- 独立线程发送。
版本号: 0.5.0
更新日期:2022.9.1 更新描述:兼容性更新,增强型更新。 更新详情:
优化
- 全局资源的获取逻辑。
新增
- Container增加卸载注册功能。
- FilePool新增FileStorageStream的获取。
- http客户端(及websocket)支持代理和验证代理。
- TouchRpc全系新增远程文件操作
- TouchRpc(除udp)新增远程流访问
修改
- 无
修复
- 修复Http客户端请求重复Header时的bug。
删除
- TouchRpc全系的事件操作,推荐直接插件的方式,或者使用TouchRpcActionPlugin然后添加委托。
更新示例 TouchRpc的相关事件均已使用插件代替。所以请使用插件实现操作。如果需要事件等功能的话,可以用TouchRpcActionPlugin的插件实现。例如:
.UsePlugin()
.ConfigurePlugins(a=>
{
a.Add<TouchRpcActionPlugin<TcpTouchRpcClient>>()//此处的逻辑可用插件替代完成。
.SetFileTransfering((client, e) =>
{
//有可能是上传,也有可能是下载
client.Logger.Info($"服务器请求传输文件,ID={client.ID},请求类型={e.TransferType},文件名={e.FileInfo.FileName}");
})
.SetFileTransfered((client, e) =>
{
//传输结束,但是不一定成功,需要从e.Result判断状态。
client.Logger.Info($"服务器传输文件结束,ID={client.ID},请求类型={e.TransferType},文件名={e.FileInfo.FileName},请求状态={e.Result}");
});
})
版本号: 0.4.5
更新日期:2022.8.25 更新描述:兼容性更新,增强型更新。 更新详情:
优化
- FileLogger的写入逻辑,大大地提升了写入效率。
新增
- Pipeline适配器
- TLV适配器
- WaitingClient支持按条件等待返回。
- 日志系统可以筛选日志的输出类型
- Rpc系统,可以使用单例、瞬时生命周期的服务。
- Rpc系统,可定义持久化模型。
- Rpc在使用瞬时生命周期的服务时,可以直接获取调用上下文。
- XmlRpc增加调用上下文。
修改
- 日志系统。
- Rpc的调用上下文均采用接口,例如:JsonRpc改为IJsonRpcCallContext,WebApi为IWebApiCallContext。
- IRpcActionFilter的参数列表。
修复
- UdpSession资源不释放的Bug。
删除
- 冗余元素。
版本号: 0.3.5
更新日期:2022.8.12 更新描述:兼容性更新,增强型更新。 更新详情:
优化
- 各类客户端发送逻辑。
- Method类的调用逻辑。
新增
- 适配器可以设定发送IRequestInfo对象。
- 插件新增UseWebSocket的快捷方式。
- ReconnectionPlugin插件可以获得重连次数的重载设置。
- 【Pro】TcpService的服务注入。
- 【Pro】HttpService的服务注入。
- 【Pro】IOC容器的共享使用。
修改
- 各类发送逻辑,以最小化发送方法为基础,其余方法改为扩展方法。
- 相关接口的实现。
- 由网友修改GetInfo
修复
- Container获取泛型失败bug。
- BetweenAnd适配器适配器部分bug。
- Router标签无法路由的bug。
- 修复TouchRpc推送文件状态不正确bug
- 修复独立线程在断线重连后发送bug。
删除
- 冗余的发送方法,不影响上版本任何使用。
版本号: 0.2.4
更新日期:2022.7.28 更新描述:兼容性更新。 更新详情:
优化
- 优化IOC容器。
- 优化Metadata的写入方式。
- FileLogger,当日志文件达到1Mb时,会再新增文件序号。
新增
- Mapper类,支持简单类型映射
- Tcp服务器、客户端、udp等增加端口复用配置。
- 【Pro】轮询式断线重连。
- 【Pro】NATService转发客户端重连。
修改
- RRQM二进制序列化,改名为Fast。
- TouchRpcClient连接时的Metadata,改为由Config配置注入。
- FilePool,取消延迟释放机制。
修复
- 修复WebSocket连接问题
删除
- 客户端直接调用的短线重连方式。仅保留在Config注入的功能。
版本号: 0.1.0
更新日期:2022.7.16 更新描述:初始化版本发布。由RRQMSocket迁移而来。
迁移指南:
1.所有类的命名空间修改,此处如果类型名未修改的话,可由vs智能提示解决。
2.类型名称修改
原类型名称 | 新类型名称 |
---|---|
RRQMBitConverter | TouchSocketBitConverter |
RRQMConfig | TouchSocketConfig |
RRQMConverter | TouchSocketConverter |
RRQMDependencyObject | DependencyObject |
MsgEventArgs | MsgEventArgs |
RRQMEventAgrs | TouchSocketEventArgs |
IServerProvider | IRpcServer |
ServerProvider | RpcServer |
RRQMOverlengthException | OverlengthException |
3.使用逻辑修改
1)原RRQMConfig设置Logger的方法,改为容器注入: 断线重连逻辑 RpcStore使用变更 如果是仅有一个Rpc解析器,那么可以直接删除RpcStore的声明,从而使用对应的解析器实例,直接注册服务。然后可以通过其属性RpcStore,获取到具体的RpcStore实例。
如果是有多个解析器,那么,首先可以使用任意一个解析器的RpcStore属性实例,作为主RpcStore,然后添加其他解析器。当然也可以直接new RpcStore,然后统一管理解析器。其中构造函数中的Container容器,可以直接new Container(),但是更建议使用和解析器相同的容器,这样注入的服 务会变得全局可用。