v3.1.19
更新日期: 2025.10.25
更新描述:
- 兼容性修复升级。
更新详情:
TouchSocket.Sockets
-
TcpClient在连接失败时,没有正确释放Socket资源的bug。
v3.1.18
更新日期: 2025.9.27
更新描述:
- 版本号升级至 v3.1.18。
- 修复 TCP 发送数据分片问题,确保大数据包完整发送。(#85)
- RPC 全局筛选器注册与解析机制调整,支持按类型注册,由容器解析实例,接口命名更清晰。(#83)
- WebSocket 关闭帧处理完善,正确解析 CloseStatus 与关闭原因,增强标准兼容性。
- Dmtp RPC 调用上下文清理逻辑优化,降低潜在内存占用风险。
更新详情:
TouchSocketVersion
- 基础版本号由
3.1.17升级为3.1.18(TouchSocketVersion.props)。
TouchSocket.Sockets
-
TcpCore发送循环逻辑,改为使用sentLength进行切片发送与累计,避免出现“发送数据未切片导致大包未完整发送”的问题;当BytesTransferred == 0且仍有数据时抛出不完整传输异常。(#85)
TouchSocket.Rpc
- 全局筛选器注册 API 更名:
Filter<T>()/Filter(Type)调整为AddFilter<T>()/AddFilter(Type),语义更清晰。 - 暴露
RpcStore.Filters只读属性,便于获取已注册的全局筛选器类型列表。 -
RpcMethod.GetFilters签名与实现调整,接收筛选器类型列表与IResolver,按需从容器解析筛选器实例,减少共享实例的副作用;InternalRpcServerProvider同步适配新的调用方式。(#83)
TouchSocket.Http
-
WebSocketClientBase在接收关闭帧时,解析前 2 字节(大端)为CloseStatus并赋值给连接对象,剩余负载按 UTF-8 作为关闭原因消息;触发关闭流程更符合规范。
TouchSocket.Dmtp
-
DmtpRpcActor在处理响应时优先移除调用上下文项,避免因上下文残留导致的资源占用问题。
v3.1.17
更新日期: 2025.9.9
更新描述:
- 兼容性修复更新。
更新详情:
TouchSocket.SerialPorts
-
SerialPortClient在某些情况下,会导致程序奔溃的bug。
v3.1.16
更新日期: 2025.8.21
更新描述:
- SSL配置重构和安全性改进。
- 代码格式优化和规范化。
- 版本号更新至3.1.16。
更新详情:
TouchSocket.Core
-
SystemExtension.WriteAsync方法的代码格式,将多行的ConfigureAwait调用合并为一行,提升代码可读性。
TouchSocket
-
ClientSslOption构造函数重构,移除自动读取系统根证书存储的复杂逻辑,改为初始化空的X509Certificate2Collection集合,提升安全性。 -
SslOption.SslProtocols属性添加默认值SslProtocols.None,简化SSL配置。 -
TouchSocketConfigExtension中SSL配置逻辑简化:- 将
TargetHost从value.Authority改为value.Host - 移除复杂的条件编译SSL协议配置,统一使用
SslProtocols.None
- 将
v3.1.15
更新日期: 2025.8.3
更新描述:
- HTTP协议头部解析性能优化。
- RPC代码生成器命名空间改进。
更新详情:
TouchSocket.Http
-
HttpBase.ParsingHeader方法中的字节块解析逻辑,优化内存使用和变量命名,提升HTTP头部解析性能。 - 修复头部长度计算错误的问题。
TouchSocket.SourceGenerator
-
RpcClientCodeBuilder.GetNamespace方法,改进默认命名空间生成策略,支持根据RpcAttributeName自定义命名空间格式。 - 代码生成器的命名空间逻辑,提升生成代码的组织结构。
v3.1.14
更新日期: 2025.7.20
更新描述:
- HTTP模块性能优化和内存管理改进。
更新详情:
TouchSocket.Http
-
HttpResponse.GetContentAsync方法中的内存流初始化,使用精确的内容长度预分配内存,提升性能。 - 内存分配策略,减少不必要的内存占用。
- 变量命名和局部变量使用,提升代码可读性。
v3.1.13
更新日期: 2025.7.14
更新描述:
- 修复和改进升级,提升稳定性和性能。
- MQTT协议处理优化和错误修复。
更新详情:
TouchSocket.Mqtt
- MQTT 协议名称统一为 "MQTT"(大写),修复协议标准一致性问题。
-
MqttAdapter中消息解析位置计算错误,修复数据包边界计算问题。 -
VariableByteIntegerRecorder中长度设置错误,修复变长整数记录器的边界处理。
v3.1.12
更新日期: 2025.7.8
更新描述:
- 兼容性修复升级。
- 代码质量和文档规范化改进,以及功能增强。
更新详情:
TouchSocket.Core
- 代码注释规范化,统一将 "null" 改为
<see langword="null"/>的XML文档格式。 -
EasyMemoryMarshal类增加了更详细的文档和泛型约束。 - 多个核心类的内存管理和线程安全性。
-
TouchSocketBitConverter中的异常文档注释。
TouchSocket.Mqtt
- MQTT协议名称从 "MQTT" 统一为 "Mqtt"。
-
MqttSessionActor消息分发机制,提升性能和稳定性。 -
ThreadSafeTopicSubscriptions类,提供线程安全的主题订阅管理。 -
MqttBroker的消息转发逻辑,改进并发处理能力。 -
MqttReceivedEventArgs中属性命名一致性问题。
TouchSocket.SerialPorts
-
ISerialPortClient和SerialPortClient实现IConnectableClient接口。 -
ConnectAsync方法支持异步连接操作。 -
ISerialPortSession接口继承关系,移除冗余接口。
TouchSocket.Modbus
-
IModbusRtuMaster实现IConnectableClient接口。 -
ModbusRtuMaster增加ConnectAsync方法支持。
TouchSocket.WebApi
-
RegexRouterAttribute类增加详细的XML文档注释。 -
WebApiAttribute中的路由处理逻辑和变量命名。
TouchSocket.Sockets
- 网络监听器和客户端基类的参数验证和错误处理。
-
ReconnectionPlugin的 Dispose 方法错误,修复无限循环任务的正确释放机制。(#68 by @godchadigo)
v3.1.9(10)(11)
更新日期: 2025.6.24
更新描述:
兼容性修复升级。
更新详情:
TouchSocket.Core
-
Result和Result<T>在调试时的显示。 -
IByteBlock的部分方法传参。
TouchSocket.Mqtt
-
IMqttTcpClient没有继承ISetupConfigObject的bug。
TouchSocket.SerialPort
-
StreamAsync异步流模式工作异常的bug。
TouchSocketPro.Modbus
-
ModbusCoilsDrive支持线圈读写。 -
ModbusDiscreteInputsDrive支持离散输入读写。 -
ModbusHoldingRegistersDrive支持保持寄存器读写。 -
ModbusInputRegistersDrive支持输入寄存器读写。
TouchSocketPro.PlcBridges
-
PlcObject组件。
v3.1.8
更新日期: 2025.6.15
更新描述:
兼容性修复升级。
更新详情:
TouchSocket.Core
-
DependencyProperty在调试时的显示。 -
SafeDispose方法的返回,由void改为Result。此修改不影响代码编译,但是需要重新编译依赖dll。
TouchSocket.Http
- 当
Http服务器在响应后,HttpResponse不会清空Content的bug。 #ICEVTN
TouchSocket.Modbus
-
IModbusResponse类新增IsSuccess属性,可用于快捷获取响应结果。 -
IModbusResponse的Data属性由Byte[]改为ReadOnlyMemory<byte>。如果仍需使用数组,请使用Data.Span.ToArray()方法获取数据。
TouchSocket.SerialPort
-
StreamAsync性能异步流模式,可在SerialPortOption中直接启用。 #PR72
TouchSocketPro.PlcBridges
- 新组件发布。
v3.1.7
更新日期: 2025.6.8
更新描述:
兼容性修复升级。
更新详情:
TouchSocket.Core
- FileLogger在Windows服务发布时,保存路径错误的bug。
TouchSocket.Sockets
- ClientFactory的MinCount失效的bug。
TouchSocket.Dmtp
- FileResourceInfo类新增Create方法和Save的其他重载。更方便的支持断点续传方式。
- FileSectionResult类释放逻辑,减少异常的发生。
v3.1.6
更新日期: 2025.6.2
更新描述:
兼容性修复升级。
更新详情:
TouchSocket.SerialPort
- 串口组件数据接收回调事件异常。#ICB8IN
v3.1.5
更新日期: 2025.5.24
更新描述:
兼容性修复升级。
更新详情:
TouchSocket.Core
- 源生成器提示。
v3.1.3(4)
更新日期: 2025.5.18
更新描述:
兼容性修复升级。
更新详情:
TouchSocket.Core
-
Method相关操作,具体请看新文档。
TouchSocket.Dmtp
-
Dmtp Channel的HoldOnAsync、CompleteAsync、CancelAsync等方法返回值改为Result,不再抛出异常。
v3.1.2
更新日期: 2025.5.11
更新描述:
兼容性修复升级。
更新详情:
All
- 全系语法分析器和源生成器,使用增量源生成器,减少编译时间。
TouchSocket.Core
-
Logger在添加到容器时,支持直接设置日志等级。 -
ByteBlock、ValueByteBlock在请求的length为0时,会抛出异常。 #69 -
WaitHandlePool在waitData为null无法Destroy释放问题。#IC64WX - 弃用
ManualContainer。
TouchSocket.Sockets
- 发送字符串的效率,极大减少GC的产生。
-
UseCheckClear的使用体验,使用更为贴切的方法名称。 -
CheckClearPlugin在应用到Client,第2次检验会失效的bug。#IC5J1I
TouchSocket.Http
-
HttpClientBase请求时,新增直接添加Host的逻辑。#IC6OU2 -
WebSocket在断开时,会判断是否带有主动断开消息,如果带有,则投递主动断开的消息。 -
SetStatus的使用体验,在默认参数(成功)时,则使用SetStatusWithSuccess代替。 -
WebSocket的Ping与Pong使用Result进行返回。不再抛出异常。 -
Http在处理请求时,阻塞接收执行上下文的bug,这会导致如果收到http请求,且需要较长时间执行时,如果连接方已断开,则断开消息不会立即执行的bug。也会间接导致WebApi的CancellationToken失效。
TouchSocket.NamedPipe
-
UseNamedPipeSessionCheckClear的插件扩展方法。
TouchSocket.Rpc
-
ISingletonRpcServer的接口。
TouchSocket.SerialPort
-
UseSerialPortSessionCheckClear的插件扩展方法。
TouchSocket.WebApi
-
WebApi调用上下文中CancellationToken不起作用的bug。
v3.1.0(1)
更新日期: 2025.4.29
更新描述:
此次升级可能会有部分代码不兼容项,请在升级前做好备份,并且详细阅读3.1升级指南。
此次升级所有组件在运行时完全兼容3.0,所以无论客户端还是服务端,都可以进行差异化更新。
更新详情:
All
-
DateTime调整为DateTimeOffset。 -
Task.Run全部使用EasyTask.Run再次封装运行。 - 所有组件在日志记录时,传入可触发源,可更好的进行日志记录。
TouchSocket.Core
-
AsyncBoundedQueue类调整为AsyncQueue。 -
BytePool类不再使用,目前使用ArrayPool<T>代替。 -
ByteBlock类不再提供默认参数构造函数,目前强制传入申请长度。 -
ResultCode枚举项Fail调整为Failure。 -
FastSerializerContext默认不再支持DataTable和DataSet。如有需要,请自行添加DataTableFastBinaryConverter和DataSetFastBinaryConverter。 -
PeriodPackageAdapter接收性能。 -
BlockSegment性能。 -
WaitHandlePool性能。 -
PeriodPackageAdapter接收不判断最大包设定的bug。 - 若干扩展方法。
TouchSocket.Sockets
-
StopAsync、CloseAsync等方法,在调用时不再抛出异常,而是返回Task<Result>。 -
IClient的接口,不再继承自IDependencyObject。如有需求请使用IDependencyClient。 -
IServerStopedPlugin插件,改名为IServerStoppedPlugin。 -
Tcp、Udp等组件的释放逻辑
TouchSocket.Dmtp
- 添加
IActor的方式。
TouchSocket.Hosting
- 日志记录信息。
TouchSocket.Http
- 性能大幅提高。
-
HttpStatusCode静态类,支持常用的状态码。 - WebSocket的
SwitchProtocolToWebSocketAsync方法返回值由bool改为Result。 -
InitHeaders、SetStatus等方法中设置Header的方法,由Add调整为TryAdd。 - 默认情况下,服务在响应Header中,设置
Server时,不再显示具体版本。#IC25RJ - HttpClient在断开连接时,不触发
OnTcpClosed的bug。
TouchSocket.WebApi.Swagger
- 在Swagger显示时,支持参数属性。PR68
TouchSocket.Rpc
-
SingletonRpcServer名称改为SingletonRpcServer。 -
QueueRpcDispatcher性能。
TouchSocket.Mqtt
- 功能首发。