跳到主要内容

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

  •   TcpDmtpSessionClient.CloseAsync 方法优化关闭流程,先调用 SendCloseAsync 发送关闭消息,再执行 CloseAsync 完成关闭。

TouchSocket

  •   ReconnectionOption<TClient> 构造函数简化 ConnectAction 逻辑,移除内置重连重试代码,仅保留连接调用。
  •   ReconnectionPlugin<TClient> 轮询任务使用 CancellationToken.None 替代插件的取消令牌,避免意外中断轮询。

TouchSocket.WebApi.Swagger

  •   SwaggerJsonSerializerContext JSON序列化上下文类,使用源生成器优化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 方法增加空值检查,避免不必要的序列化操作。
  •   WebApiClientWebApiClientSlim 使用 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
    • OpenApiComponentOpenApiContentOpenApiInfoOpenApiParameter
    • OpenApiPathValueOpenApiPropertyOpenApiRequestBodyOpenApiResponse
    • OpenApiRootOpenApiSchema
  •   所有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.StartStop 同步方法(涵盖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压力