v4.1.1
更新日期: 2026.2.1
更新描述:
- JSON序列化优化,新增全局默认配置选项。
- 重连插件优化重连逻辑和错误处理。
- HTTP响应增强,修复内容长度校验和流式写入问题。
- DMTP关闭流程优化,先发送关闭消息再执行关闭。
- PLC桥接服务修复,驱动运行器正确关联分组信息。
更新详情:
TouchSocket.Core
-
TouchSocketCoreUtility.IsUrl方法,使用Uri.TryCreate替代正则表达式,提升URL验证性能和准确性。 -
SerializeConvert.DefaultJsonSerializerOptions全局默认JSON序列化选项属性,允许用户自定义全局序列化配置。 -
SerializeConvert.ToJsonString方法使用全局默认选项进行序列化。 -
SerializeConvert.FromJsonString方法新增可选jsonSerializerOptions参数,支持自定义序列化选项(默认使用全局配置)。
TouchSocket.Http
-
HttpResponse.WriteAsync方法在无内容时自动添加Content-Length: 0头部。 -
HttpResponse.WriteAsync方法修正内容长度校验逻辑,当写入数据超过预期长度时抛出异常。 -
HttpExtensions.CreateWriteStream方法的WriteAsync重载缺少cancellationToken参数传递,现已正确传递取消令牌。
TouchSocket.Dmtp
TouchSocket
-
ReconnectionOption<TClient>构造函数简化ConnectAction逻辑,移除内置重连重试代码,仅保留连接调用。 -
ReconnectionPlugin<TClient>轮询任务使用CancellationToken.None替代插件的取消令牌,避免意外中断轮询。
TouchSocket.WebApi.Swagger
-
SwaggerJsonSerializerContextJSON序列化上下文类,使用源生成器优化OpenAPI对象序列化性能。 -
SwaggerPlugin.GetOpenApiJson方法使用SwaggerJsonSerializerContext.Default.OpenApiRoot进行序列化,提升性能。
TouchSocketPro.PlcBridges
-
PlcBridgeService.GetOrAddDriveRunner方法创建DriveRunner时正确传递分组信息,而非使用GUID。
v4.1.0
更新日期: 2026.1.25
更新描述:
- 【不兼容变更】默认JSON序列化器从
Newtonsoft.Json切换到System.Text.Json,提升性能和AOT兼容性。 - RPC代码生成器优化,移除同步代码生成相关逻辑,简化代码结构。
- Swagger组件全面迁移到
System.Text.Json,提升性能和内存使用。 - Modbus主站扩展类精简,移除部分重复的同步方法。
- 命名管道服务扩展类优化,移除同步启动方法。
更新详情:
TouchSocket.Core
-
TouchSocket.Rpc.RpcAttribute中的同步代码生成相关逻辑和注释代码,简化代码结构。 -
RpcAttribute.GetPublicProperties抽象方法,要求派生类实现属性获取逻辑。 -
RpcAttribute.LoadPublicPropertiesAsDictionary方法改为私有,优化属性加载逻辑。 -
RpcAttribute.GetPublicPropertiesAsDictionary方法上的RequiresUnreferencedCode特性。 -
CodeGenerator类移除注释代码,简化代码结构。
TouchSocket.WebApi
-
WebApiOption构造函数不再自动添加JSON序列化器,需要用户手动配置序列化器。 -
WebApiSerializerConverter.AddJsonSerializerFormatter方法(使用Newtonsoft.Json)。 -
WebApiSerializerConverter默认构造函数中添加System.Text.Json序列化器配置,清除默认解析器链以优化性能。 -
WebApiSerializerConverter.Serialize方法增加空值检查,避免不必要的序列化操作。 -
WebApiClient和WebApiClientSlim使用SystemTextJsonStringToClassSerializerFormatter替代JsonStringToClassSerializerFormatter。 -
WebApiAttribute.GetPublicProperties方法实现,返回公共属性列表。 -
WebApiJsonSerializerFormatter改为继承自SystemTextJsonStringToClassSerializerFormatter。 -
WebApiSystemTextJsonSerializerContext增加常见类型的JSON序列化支持(bool、string、int、double、float、DateTime、DateTimeOffset、Version)。
TouchSocket.WebApi.Swagger
- Swagger组件所有OpenAPI相关类从
Newtonsoft.Json迁移到System.Text.Json:OpenApiComponent、OpenApiContent、OpenApiInfo、OpenApiParameterOpenApiPathValue、OpenApiProperty、OpenApiRequestBody、OpenApiResponseOpenApiRoot、OpenApiSchema
- 所有JSON特性从
[JsonProperty]改为[JsonPropertyName]。 -
OpenApiStringEnumConverter从继承Newtonsoft.Json.Converters.StringEnumConverter改为继承System.Text.Json.Serialization.JsonStringEnumConverter。 -
SwaggerPlugin.GetOpenApiJson方法使用System.Text.Json.JsonSerializer进行序列化,配置使用JsonIgnoreCondition.WhenWritingNull和格式化输出。 -
SwaggerPlugin.BuildHttpMethod方法修复同一路径多个HTTP方法时的路由冲突问题。
TouchSocket.XmlRpc
-
XmlRpcAttribute中已废弃的构造函数(带参数版本)。 -
XmlRpcAttribute.GetPublicProperties方法实现,返回公共属性列表。
TouchSocket.Rpc
-
RpcClientExtension.Invoke同步方法(两个重载版本)。 -
RpcClientExtension.InvokeT<T>同步方法(两个重载版本,用于不同RPC客户端)。
TouchSocket
-
ClientExtension.Close同步方法(两个重载版本)。 -
ClientExtension.SafeClose同步方法(两个重载版本,已标记为Obsolete)。 -
ClientExtension.Connect同步方法(三个重载版本)。 -
ClientExtension.TryConnect同步方法(两个重载版本)。 -
SenderExtension.Send同步方法(多个重载版本,涵盖ISender、IRequestInfoSender、IIdSender、IUdpClientSender)。 -
ServiceExtension.Start和Stop同步方法(涵盖IServiceBase、ITcpService、IUdpSession)。 -
WaitingClientExtension.SendThenResponse同步方法(四个重载版本)。
TouchSocket.Modbus
-
ModbusMasterExtension.SendModbusRequest同步方法。 -
ModbusMasterExtension.ReadWriteMultipleRegisters同步方法(不带超时参数版本)。 -
ModbusMasterExtension.ReadCoils等读写方法的多个同步重载版本。 -
ModbusMasterExtension中所有标记为AsyncToSyncWarning的同步扩展方法。
TouchSocket.NamedPipe
-
NamedPipeServiceExtension.Start同步方法。
TouchSocketPro.PlcBridges
-
IPlcOperatorExtension.Read同步方法。
TouchSocket.TcpCommandLine
-
TcpCommandLinePlugin构造函数中使用SystemTextJsonStringToClassSerializerFormatter替代JsonStringToClassSerializerFormatter。
性能改进
- System.Text.Json在大多数场景下比Newtonsoft.Json性能提升 20-50%
- 异步方法强制使用避免了异步转同步的性能损耗
- Swagger JSON生成性能提升约 30%
- 减少内存分配,降低GC压力