跳到主要内容

v4.3.1

更新日期: 2026.8.9

更新描述:

  • ReconnectionOption 新增 OnLog 统一回调:新增 OnLog 异步日志回调,统一重连成功/失败/放弃事件通知;旧三个回调保持兼容。
  • 新增 TouchSocket.Redis 模块:全新 Redis 客户端/服务端实现,支持 RESP 协议,内置内存数据库及常用命令。

更新详情:

TouchSocket

  •   ReconnectionLogType 枚举,包含 Failed(重连失败)、GiveUp(放弃重连)、Success(重连成功)三个值。
  •   ReconnectionLogEventArgs 类,包含 Type(日志类型)、Attempts(当前尝试次数)、MaxRetryCount(最大重连次数)、Message(日志消息)、Exception(可选异常)属性。
  •   ReconnectionOption<TClient>.OnLogFunc<TClient, ReconnectionLogEventArgs, Task>)属性,统一异步重连日志回调;默认实现转调旧的 OnFailed/OnGiveUp/OnSuccessed,重新赋值后旧三个回调不再被自动调用。
  •   ReconnectionPlugin 内部将三处回调调用(成功/失败/放弃)统一重构为调用 InvokeReconnectionLogAsync,通过 OnLog 统一分发。

TouchSocket.Redis(新模块)

  •   IRedisSession 接口,定义 SendRedisValueAsync 发送 RESP 值方法。
  •   IRedisClient 接口,继承 IRedisSession,新增 ConnectAsyncExecuteAsync 方法,表示完整 Redis 客户端契约。
  •   RedisValueKind 枚举,定义 RESP 协议值类型:NullSimpleStringErrorIntegerBulkStringArray
  •   RedisValue 类,实现 RESP 值的构造、序列化与解析,提供 CommandBulkStringValueIntegerValueErrorSimpleString 等工厂方法。
  •   RedisClient 类,继承 TcpClientBase 实现 IRedisClient,内置请求/响应队列,支持并发命令执行及自动 AUTH 认证。
  •   RedisService 类,继承 TcpServiceBase<RedisSessionClient>,内置 RedisDatabase 内存数据库及 RedisCommandProcessor 命令处理器,提供兼容 Redis 协议的 TCP 服务端。
  •   RedisSessionClient 类,实现 IRedisSession,负责服务端会话的 RESP 接收与响应、AUTH 认证及插件派发。
  •   RedisDatabase 类,基于内存的 Redis 数据库,支持 String(GET/SET/DEL/EXISTS/INCR/DECR/MGET/MSET/EXPIRE/TTL/KEYS)、List(LPUSH/RPUSH/LLEN/LRANGE)、SortedSet(ZADD/ZCARD/ZREM)数据结构。
  •   RedisCommandProcessor 类,处理 RESP 命令分发,内置 PING、ECHO、QUIT、SELECT、AUTH、DBSIZE、FLUSHDB 及全部上述数据结构命令,支持继承扩展。
  •   RedisClientOption 配置类,包含 UserNamePassword 属性,为空密码时使用旧式 AUTH 认证。
  •   RedisServerOption 配置类,包含 UserNamePasswordAcceptSelectCommand 属性,控制服务端认证与 SELECT 命令支持。
  •   RedisConfigExtension,提供 SetRedisClientOption / SetRedisServerOption 配置扩展依赖属性。
  •   RedisClientExtension,提供 PingAsyncEchoAsyncQuitAsyncGetStringAsyncGetBytesAsyncSetAsyncExecuteForStringResultAsyncExecuteForLongResultAsyncExecuteForStringArrayResultAsyncExecuteForMemoryResultAsync 等常用命令扩展方法。
  •   IRedisReceivedPlugin 插件接口,支持在服务端接收到 RESP 值时通过插件系统派发 OnRedisReceived 事件。
  •   RedisReconnectionOptionsExtension.UseRedisCheckAction<TClient> 扩展方法,为 ReconnectionOption<TClient> 配置 Redis PING 心跳检测,支持自定义活动时间间隔与 PING 间隔。

v4.3.0

更新日期: 2026.8.1

更新描述:

  • 发送接口升级分段序列ISenderIIdSenderIUdpClientSender 核心发送接口参数由 ReadOnlyMemory<byte> 升级为 ReadOnlySequence<byte>,支持零拷贝分段发送。⚠️ 破坏性变更
  • SendInput 升级为分段序列SingleStreamDataHandlingAdapter.SendInput 参数升级为 ReadOnlySequence<byte>。⚠️ 破坏性变更
  • 新增 Memory 兼容扩展方法SenderExtension 新增 ReadOnlyMemory<byte> 重载,向下兼容旧调用。
  • HTTP 新增流式表单读取:新增 IStreamingFormReaderIStreamFormSection 接口及 GetStreamingFormReader 扩展方法,支持流式读取表单,不加载整体请求体。
  • McpHttpCallContext 暴露 HTTP 上下文:实现 IMcpHttpCallContext,新增 HttpContextHttpSessionClient 属性。

更新详情:

TouchSocket.Core

  •   SingleStreamDataHandlingAdapter.SendInput<TWriter> 参数由 in ReadOnlyMemory<byte> memory 升级为 in ReadOnlySequence<byte> sequence,默认实现遍历分段逐段写入,子类如需覆盖需同步更新签名。⚠️ 破坏性变更
  •   FixedHeaderPackageAdapter.SendInput<TWriter> 参数同步升级为 ReadOnlySequence<byte>,长度计算改用 checked((int)sequence.Length) 防溢出,数据写入改为逐分段循环写入。
  •   FixedSizePackageAdapter.SendInput<TWriter> 参数同步升级为 ReadOnlySequence<byte>,长度验证使用 sequence.Length
  •   TerminatorPackageAdapter.SendInput<TWriter> 参数同步升级为 ReadOnlySequence<byte>,数据写入改为逐分段写入后追加终止符。

TouchSocket

  •   ISender.SendAsyncIIdSender.SendAsyncIUdpClientSender.SendAsync 接口方法签名统一由 ReadOnlyMemory<byte> 升级为 ReadOnlySequence<byte>,支持分段只读序列直接发送。⚠️ 破坏性变更
  •   SenderExtension 新增三组 ReadOnlyMemory<byte> 重载扩展方法(对应 ISender/IIdSender/IUdpClientSender),内部包装为 ReadOnlySequence<byte> 后转发,保持旧调用代码兼容。
  •   TCP/UDP/KCP/NatTarget 全系组件(TcpClientTcpSessionClientTcpService<TClient>UdpSessionKcpClientKcpSessionClientNatTargetClient)统一新增 SendAsync(ReadOnlySequence<byte>, CancellationToken) 公共方法,服务端同步新增按 Id 分段发送重载。

TouchSocket.NamedPipe

  •   NamedPipeClient.SendAsync(ReadOnlySequence<byte>, CancellationToken) 方法,委托至 ProtectedSendAsync
  •   NamedPipeSessionClient.SendAsync(ReadOnlySequence<byte>, CancellationToken)SendAsync(string, ReadOnlySequence<byte>, CancellationToken) 方法。
  •   NamedPipeService<TClient>.SendAsync(string, ReadOnlySequence<byte>, CancellationToken) 方法,通过 Id 查找客户端后转发。

TouchSocket.SerialPorts

  •   SerialPortClient.SendAsync(ReadOnlySequence<byte>, CancellationToken) 方法,委托至 ProtectedSendAsync

TouchSocket.Http

  •   IStreamingFormReader 接口及 GetStreamingFormReader<TRequest> 扩展方法,支持流式拉取 multipart/form-dataapplication/x-www-form-urlencoded 表单数据,无论文件大小均不将请求体整体加载至内存。
  •   IStreamFormSection 接口,表示单个表单段,包含 NameFileNameIsFileContentTypeDataPair 等属性,以及 ReadAsync/CopyToAsync/ReadAsStringAsync 等流式读取方法。

TouchSocket.Mcp

  •   IMcpHttpCallContext 接口,定义 HttpContextHttpContext)和 HttpSessionClientIHttpSessionClient)属性,供 HTTP 传输场景访问请求上下文。
  •   McpHttpCallContext 实现 IMcpHttpCallContext 接口,构造函数新增 HttpContext httpContext 参数并存储到同名属性;同时暴露 HttpSessionClient 属性,对外提供当前 HTTP 会话客户端引用。