v4.1.14(13,12,11,10)
更新日期: 2026.3.21
更新描述:
- HTTP 全面 Pipeline 直读重构:移除
HttpClientDataHandlingAdapter与HttpServerDataHandlingAdapter两个适配器类,HttpSessionClient改为直接基于PipeReader解析 HTTP 请求(HttpPipelineLoopAsync);零适配器开销,支持 Body 流式读取。 - WebSocket 全面 Pipeline 重构:
InternalWebSocket继承SafetyDisposableObject,接收循环改为基于InternalReadAsync的WebSocketPipelineLoopAsync(直接读取PipeReader)。 - EventArgs 对象复用优化:
MemoryEventArgs、BytesReaderEventArgs、ReceivedDataEventArgs、SendingEventArgs构造函数改为SetData/ReSetData方法,支持对象复用;TcpClientBase、TcpSessionClientBase、NamedPipeClientBase、SerialPortClientBase均新增预分配事件参数字段,大幅降低 GC 压力。 - UDP 接收循环健壮性改进:
StopAsync先设置Stopped状态再 Dispose Socket,修复NullReferenceException;接收循环区分非致命错误(ConnectionReset等,继续循环)与致命错误,新增ObjectDisposedException正常退出处理。 - Dmtp 发送优化:
DmtpActor新增MaxPackageSize属性限制包大小;SendAsync优先使用TransportWriter直接 Pipeline 写入,减少内存分配。 - TcpService 修复:接受新连接前增加服务运行状态检查,避免服务停止后仍处理新连接。
更新详情:
TouchSocket.Core
TouchSocket
-
TcpClientBase新增预分配事件参数字段(BytesReaderEventArgs、ReceivedDataEventArgs、SendingEventArgs),避免每次触发事件时分配新对象,降低 GC 压力。 -
UdpSessionBase接收循环错误处理增强:区分非致命 Socket 错误(如 Windows ICMPConnectionReset,记录日志后继续循环)与致命错误;新增ObjectDisposedException捕获分支(正常退出);服务已停止时各异常分支均安全退出。
TouchSocket.Http
-
HttpSessionClient覆盖ReceiveLoopAsync,通过HttpPipelineLoopAsync直接基于PipeReader解析 HTTP 请求头并处理 Body,不再使用适配器机制;HttpContextEventArgs与ServerHttpRequest实例复用,避免每次请求分配对象。 - HttpService 在极端情况下,Close会死锁的bug。
-
IHttpSessionClient接口新增SwitchProtocolAsync()方法,检测 HTTP 升级请求后退出 HTTP 解析循环并返回底层ITransport,用于自定义协议直接读写。
TouchSocket.Http(WebSocket)
-
InternalWebSocket继承SafetyDisposableObject,构造函数新增ITransport transport和bool autoReceive参数;接收循环迁移至InternalReadAsync(基于PipeReader帧解析)。 -
IWebSocket.AllowAsyncRead属性,及IDisposable继承;WebSocket 读取模式改为通过autoReceive参数控制。⚠️ 破坏性变更 -
HttpSessionClient.SwitchProtocolToWebSocketAsync参数由HttpContext httpContext改为bool autoReceive,WebSocket 接收循环迁移至WebSocketPipelineLoopAsync(基于ITransport读取)。⚠️ 破坏性变更 -
WebSocketClientBase移除默认构造函数中预分配InternalWebSocket,改在ProtectedWebSocketConnectAsync建立连接时创建(含ITransport和autoReceive参数)。 -
ProtectedWebSocketConnectAsync新增bool autoReceive参数。⚠️ 破坏性变更 -
WebSocketReceiveResult移除ReadLease<WSDataFrame>,改为直接持有WSDataFrame并新增IsCompleted属性;构造函数签名变为(WSDataFrame, string, bool)。⚠️ 破坏性变更 -
WebSocketExtension.ReadStringAsync/ReadBinaryAsync移除对AllowAsyncRead的前置校验,调用方无需显式启用即可使用异步读取扩展方法。
TouchSocket.NamedPipe
-
NamedPipeClientBase新增预分配事件参数字段(BytesReaderEventArgs、ReceivedDataEventArgs、SendingEventArgs),与 TCP 对齐。 -
NamedPipeClientBase暴露Transport属性,返回底层ITransport对象。 -
NamedPipeClientBase.RunSessionAsync重构会话生命周期管理,统一 try/catch/finally 结构。 -
NamedPipeClient.ConnectAsync内部方法由PipeConnectAsync重命名为NamedPipeConnectAsync。
TouchSocket.SerialPorts
-
SerialPortClientBase新增预分配事件参数字段,会话生命周期管理与 TCP/NamedPipe 对齐。
TouchSocket.Dmtp
-
DmtpActor.MaxPackageSize属性,用于限制单次发送的最大包大小(字节),超限时抛出ArgumentOutOfRangeException。 -
DmtpActor.SendAsync优先检测TransportWriter,存在时直接通过PipeBytesWriter写入底层管道,避免SegmentedBytesWriter中间分配。 -
DmtpActor.TransportWriter属性从init改为set,支持初始化后修改。 -
HttpDmtpSessionClient协议升级改用SwitchProtocolAsync()获取ITransport,引入DmtpPipelineLoopAsync管道读取循环;DmtpAdapter实例改为字段复用(m_dmtpAdapter)。 -
DmtpActor.BuildPackage<TWriter>私有泛型方法,统一封装 Dmtp 包构建逻辑。
v4.1.9(8)
更新日期: 2026.3.15
更新描述:
- JsonRpc 序列化全面重构:引入
JsonRpcConverter,基于Utf8JsonWriter/Utf8JsonReader直接读写协议,消除中间字符串分配,支持 AOT;JsonRpcOption大幅简化,移除SerializerConverter系列 API,改为统一的SerializerOptions(JsonSerializerOptions)。 - RouterPackage 命名空间迁移:
RouterPackage、MsgRouterPackage、WaitRouterPackage、IReadonlyRouterPackage迁移至TouchSocket.Dmtp命名空间;TouchSocketPro.Dmtp中 RouterPackage 功能命名空间由RouterPackage改为RouterPackages,完整重构文件结构。 - TCP 关闭机制重构:
TcpClientBase与TcpSessionClientBase均以Interlocked.CompareExchange原子标志替代SemaphoreSlim保护并发关闭,统一使用RunSessionAsync(try/catch/finally)管理会话生命周期,接收循环新增IsCanceled检查,修复连接已关闭但循环仍阻塞等待的问题。 - HTTP 静态文件热更新精确化:
FolderEntry重构为完整文件系统监控类,支持按子目录粒度精确失效,避免全量重载,资源释放实现IDisposable。
更新详情:
TouchSocket.Core
-
ByteBlock.ExtendSize/ValueByteBlock.ExtendSize逻辑调整:将"不支持扩容"的异常检测移入FreeLength < size分支内,只在真正需要扩容且无扩容支持时才抛出,避免误报。
TouchSocket
-
TcpClientBase.CloseAsync引入m_closeFlag原子整数(Interlocked.CompareExchange),替代原有的信号量保护,彻底消除并发关闭时的死锁风险。 -
TcpClientBase接收循环:将ReadLocker.CurrentCount < 1判断改为WaitAsync(0)非阻塞检测;新增result.IsCanceled短路分支,修复底层通道取消后循环仍阻塞等待下一次读取的问题。 -
TcpSessionClientBase.CloseAsync同步引入m_closeFlag原子标志,移除m_closeSemaphore(SemaphoreSlim),简化关闭路径;SafetyDispose移除对m_closeSemaphore.Dispose()的调用。 -
TcpSessionClientBase.m_dataHandlingAdapter字段添加volatile修饰,避免多线程可见性问题。
TouchSocket.Dmtp
-
TouchSocket.Dmtp.Routers模块(迁移自TouchSocket.Core):包含RouterPackage、MsgRouterPackage、WaitRouterPackage、IReadonlyRouterPackage,命名空间由TouchSocket.Core变更为TouchSocket.Dmtp。⚠️ 破坏性变更
TouchSocket.Http
-
FolderEntry从简单HashSet<string>重构为完整文件系统监控类,内置FileSystemWatcher,按物理子目录粒度精确跟踪文件增删改及重命名事件,引入ConcurrentDictionary<string, HashSet<string>>实现线程安全的目录-键映射,支持IDisposable资源释放。 -
StaticFilesPool热更新策略从全量重载改为按受影响子目录精确失效,大幅减少文件变更时的重载开销。
TouchSocket.JsonRpc
- 引入
JsonRpcConverter类,基于Utf8JsonWriter/Utf8JsonReader直接序列化/反序列化 JsonRpc 协议消息,零中间字符串分配,原生支持 AOT。 -
JsonRpcRequestConverter、JsonRpcWaitResultConverter两个旧版JsonConverter<T>,由JsonRpcConverter统一接管。⚠️ 破坏性变更 -
JsonRpcActor使用JsonRpcConverter替代旧转换器;新增SerializerOptions(JsonSerializerOptions)属性,供参数序列化与响应反序列化复用。 -
JsonRpcOption大幅简化:移除SerializerConverter、ClearAllFormatters、ConfigureAdvanced、UseCustomFormatter、UseDefaultJsonFormatter、UseSystemTextJsonFormatter等 API,改为直接暴露SerializerOptions(JsonSerializerOptions)。⚠️ 破坏性变更 -
InternalJsonRpcRequest移除ParamsStrings属性,参数现直接通过JsonRpcConverter.WriteRequest写入。 -
JsonRpcActor.Dispose实现,释放RpcDispatcher。
TouchSocket.Mqtt
-
MqttMessage新增CreatePropertiesWriter<TWriter>辅助方法,用于 MQTT V5 属性块的内存申请,语义更清晰。 - MQTT V5 全系消息(
MqttConnAckMessage、MqttConnectMessage、MqttPublishMessage等)属性块写入由CreateVariableWriter改为CreatePropertiesWriter。 -
ReconnectionOptionsExtension将ConfigureAwait(false)改为ConfigureDefaultAwait()。
TouchSocketPro.Dmtp
- RouterPackage 功能命名空间由
TouchSocket.Dmtp.RouterPackage改为TouchSocket.Dmtp.RouterPackages(注意末尾加s),文件全面重组。⚠️ 破坏性变更
v4.1.6(7)
更新日期: 2026.3.7
更新描述:
- WriterExtension 分块写入优化:引入梯度递增块大小策略(初始 4096,每 10 次迭代翻倍,上限 512KB),覆盖内存池各档位,兼顾小数据效率与大数据吞吐量。
- Metadata JSON 序列化支持:新增
MetadataJsonConverter,Metadata类支持与System.Text.Json协同工作,序列化为 Key/Value 对象数组格式。 - Dmtp 通道高性能重构:NET6.0+ 平台
InternalChannel改用System.Threading.Channels.Channel<T>实现,移除SemaphoreSlim + Queue组合,显著提升并发吞吐;通道包未消费时正确释放资源。 - HttpResponse 字符串写入优化:新增
WriteAsync(string)重载,使用分段写入避免大字符串一次性分配,降低内存占用和 GC 压力。 - WebSocket 握手失败修复:握手拒绝或协议不匹配时改用
EasyTask.SafeNewRun异步关闭,避免潜在死锁。 - SerialCore 串口接收修复:使用
SegmentedPipe替代CircularBuffer<byte>处理串口事件数据,修复高频事件驱动场景下的异常关闭问题。
更新详情:
TouchSocket.Core
-
WriterExtension分块写入策略升级:引入InitialChunkSize=4096、MaxChunkSize=512KB及ChunkSizeDoubleInterval=10常量,写入块大小每经过 10 次迭代翻倍,自适应覆盖内存池各档位,提升大数据吞吐量。 -
MetadataJsonConverter类,实现JsonConverter<Metadata>,支持将Metadata序列化为 Key/Value 对象数组的 JSON 格式,并可正确反序列化。 -
Metadata类添加[JsonConverter(typeof(MetadataJsonConverter))]特性,开箱即用支持System.Text.Json序列化。
TouchSocket.Dmtp
-
InternalChannel拆分为InternalChannel_Net60.cs(NET6.0+)和InternalChannel_NotNet60.cs两个部分类,分别针对不同运行时实现最优的通道数据传递。 - NET6.0+ 平台
InternalChannel改用System.Threading.Channels.Channel<ChannelPackage>替代SemaphoreSlim + Queue<ChannelPackage>组合,实现无锁高并发数据传递,并新增ReceivedDataAsync方法。 -
DmtpActor.QueueChannelPackage方法重命名为QueueChannelPackageAsync并改为异步调用,NET6.0+ 使用异步写入通道,非 NET6.0 平台保持同步。 - 通道 Id 不存在时,
ChannelPackage现在能正确调用SafeDispose()释放资源,避免内存泄漏。 -
InternalChannel中抛出的异常类型从Exception更改为更具体的InvalidOperationException。
TouchSocket.Http
-
HttpExtensions.WriteAsync<TResponse>(TResponse response, string message)重载方法,使用SegmentedBytesWriter分段写入字符串,避免一次性将整个字符串转换为字节数组,降低内存占用和 GC 压力。 -
HttpSessionClientWebSocket 握手失败(协议不正确或被拒绝)时,改用EasyTask.SafeNewRun异步执行CloseAsync,避免在当前异步上下文中同步关闭导致潜在死锁。
TouchSocket.SerialPorts
-
SerialCore使用SegmentedPipe替代CircularBuffer<byte>作为串口事件驱动的数据缓冲区,修复高频事件触发时因SpinWait+CircularBuffer竞态导致的异常关闭问题。 -
SerialCore.SerialCore_DataReceived写入侧从SpinWait循环改为直接GetMemory/Advance,消除忙等待,降低 CPU 占用。 - 释放信号量时改用
try/catch SemaphoreFullException替代CurrentCount判断,消除信号量释放的竞态条件。
v4.1.5
更新日期: 2026.3.1
更新描述:
- 全局异步优化:所有
ConfigureAwait(EasyTask.ContinueOnCapturedContext)调用统一改为ConfigureDefaultAwait(),简化代码并提升异步性能表现。 - PlcBridge驱动器架构重构:引入事件驱动机制替代轮询模式,大幅降低CPU占用率,提升驱动器执行效率。
- 驱动器执行方法优化:将驱动器的读写方法返回类型从
Task改为ValueTask,减少不必要的堆分配。
更新详情:
All
- 全局异步代码优化,将所有
ConfigureAwait(EasyTask.ContinueOnCapturedContext)调用统一改为ConfigureDefaultAwait(),简化代码结构并提升性能。
TouchSocket.Rpc
TouchSocketPro.PlcBridges
- 引入
DriveRunner类,采用事件驱动机制(AsyncManualResetEvent)替代传统轮询模式,驱动器仅在有读写请求时才执行,显著降低CPU占用率。 -
PlcBridgeService.AddDriveAsync方法优化驱动器添加逻辑:分组驱动器仅在未运行时启动,避免重复启动;独立分组驱动器先添加后启动,确保状态一致。 -
PlcDrive<TValue>抽象类中的ExecuteReadAsync和ExecuteWriteAsync方法返回类型从Task<Result>改为ValueTask<Result>,提升异步性能。 -
PlcDrive基类中的OnExecuteAsync方法返回类型从Task<int>改为ValueTask<int>。 -
PlcDrive新增AsyncManualResetEvent属性,配合DriveRunner实现按需执行机制。 -
MemoryPlcDrive<TValue>驱动器调整方法返回类型为ValueTask<Result>,并使用EasyValueTask.FromResult提升性能。 -
InternalPlcOperator<TValue>操作类中所有异步等待统一使用ConfigureDefaultAwait()。
v4.1.4
更新日期: 2026.2.25
更新描述:
Metadata类完全重构,不再继承Dictionary<string, string>,支持超长值按 UTF-8 编码长度自动分段存储。- 新增
WriteVarString/ReadVarString配套方法,提供可变长度编码的字符串序列化支持。 - 移除
PackageBase、RouterPackage中的#if AllowsRefStruct条件编译指令,简化代码结构。 - 代码风格优化,多处 switch 语句改用 switch 表达式。
更新详情:
TouchSocket.Core
-
WriterExtension.WriteVarString<TWriter>方法,使用VarUInt32编码 UTF-8 字节长度(长度+1),支持null与空字符串的区分写入。 -
ReaderExtension.ReadVarString<TReader>方法,与WriteVarString配套,读取可变长度编码的 UTF-8 字符串。 -
Metadata类:从继承Dictionary<string, string>改为实现IEnumerable<KeyValuePair<string, string>>,底层存储改为List<KeyValuePair<string, string>>,支持值超过 254 字节(UTF-8)时自动分段存储与读取合并。
v4.1.2(3)
更新日期: 2026.2.12
更新描述:
- 【新功能】TouchSocketPro新增Dmtp内网穿透(Relay)功能,支持端口映射和数据转发。
- MQTT消息分发内存优化,使用引用计数和ArrayPool减少内存分配和GC压力。
- 多个通信组件连接流程优化,确保事件触发顺序正确。
- CheckClearPlugin增强日志,提供更详细的调试信息。
- BytesReader性能优化,修复序列读取和释放逻辑。
更新详情:
TouchSocket.Core
-
BytesReader.Sequence属性使用m_position而不是BytesRead,提升读取性能。 -
BytesReader.Dispose方法标记为readonly,符合结构体最佳实践。
TouchSocket.Mqtt
- 引入
SharedPayload类支持引用计数的Payload共享,大幅减少内存复制。 -
MqttArrivedMessage.Payload类型从ReadOnlyMemory<byte>改为ReadOnlySequence<byte>,支持零拷贝场景。 -
MqttPublishMessage.Payload类型从ReadOnlyMemory<byte>改为ReadOnlySequence<byte>,统一内存模型。 -
DistributeMessage类,使用SharedPayload实现消息分发时的内存共享。 -
MqttActor使用ConcurrentDictionary替代Dictionary存储QoS2消息,提升并发性能。 -
MqttActor新增PooledArrivedMessage结构体,使用ArrayPool管理QoS2消息的内存生命周期。 -
MqttSessionActor消息分发流程增加异常处理,确保SharedPayload正确释放。 -
MqttBroker.ForwardMessageAsync方法返回已分发的订阅者数量,并优化多订阅者场景下的内存共享。 -
Subscription、ThreadSafeTopicSubscriptions类从MqttBroker中独立出来,提升代码模块化。
TouchSocket
-
TcpClientBase.PrivateOnConnected方法调整事件触发顺序:先触发OnTcpConnected事件,再启动接收循环。 -
TcpSessionClientBase.PrivateOnConnected方法调整事件触发顺序:先触发OnTcpConnected事件,再启动接收循环。 -
CheckClearPlugin添加详细的Debug和Warning级别日志,便于调试连接清理逻辑。 -
TcpService在当接收短链接数据时,无法接收数据。
TouchSocket.NamedPipe
-
NamedPipeClientBase.PrivateConnected方法调整事件触发顺序:先触发OnNamedPipeConnected事件,再启动接收循环。 -
NamedPipeSessionClientBase.PrivateConnected方法调整事件触发顺序:先触发OnNamedPipeConnected事件,再启动接收循环。
TouchSocket.SerialPorts
-
SerialPortClientBase.PrivateConnected方法调整事件触发顺序:先触发OnSerialConnected事件,再启动接收循环。
TouchSocketPro.Dmtp
-
IDmtpRelayActor接口,定义Dmtp内网穿透Actor的核心功能。
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压力