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
- 功能首发。