[pull] master from NewLifeX:master#31
Merged
Merged
Conversation
为 .NET Framework/Standard 2.0 增加 IAsyncEnumerable、IAsyncDisposable 及相关异步迭代器降级实现,包含核心接口、构建器、扩展方法和 ValueTaskSource 适配。csproj 针对低版本自动引用 System.Threading.Tasks.Extensions,提升异步流代码兼容性。
- 简化命名空间前缀,提升文档与代码可读性 - 泛型方法调用支持类型推断,代码更简洁 - 枚举 LogLevel 采用 file-scoped namespace,结构优化 - 针对不同旧版框架分别添加 System.Threading.Tasks.Extensions 依赖 - 注释 cref 链接统一,提升兼容性 - 应用 C# 14 新语法,提升现代化程度 - 其他注释与 using 优化,增强一致性
新增 AsyncInterfacesForwards.cs,TypeForwardedTo 转发 IAsyncDisposable、IAsyncEnumerable<T> 等异步接口,解决 netstandard2.0 类库在高版本运行时的类型冲突。优化 CsvFile 异步实现,统一 DisposeAsync 释放逻辑,ReadRecordAsync 使用实例缓冲区提升健壮性。新增 AsyncEnumerableTests.cs,全面覆盖异步接口与 CsvFile 异步场景测试,确保兼容性与正确性。
为 netstandard2.1/netcoreapp3.1/net5+ 增加异步接口、Nullable 注解、MemberNotNull/IsExternalInit 等类型的 TypeForwardedTo 声明,确保低版本类库在高版本环境下类型一致,避免 TypeLoadException。
重写 TaskEx.cs,提供跨版本 Task API 兼容层,支持 net45 下的 CompletedTask、FromResult、FromException、FromCanceled 等方法,其他框架直接委托标准库。移除各处 !NET45 条件编译别名,提升代码一致性与可维护性。补充详细注释,推荐统一使用 TaskEx 静态类。
移除所有 .NET 版本条件编译分支,统一 SendMessageAsync 返回类型为 ValueTask<Object>,简化接口与实现。调整相关类和辅助代码,提升一致性与可维护性。UdpSession 仅在写入成功时注册取消令牌,PooledValueTaskSource 始终引用所需命名空间。
新增TestLog日志断言器,NetSession.SendReply支持UDP上下文,Echo/Http/NetworkServer集成测试大幅扩展,涵盖多客户端类型、回显大包/多包/并发、服务端行为精确断言。新增Codec/JsonCodec/WebSocket集成测试,验证标准编解码器与对象回显。代码风格与注释优化,测试更易维护。
为TrimStart/TrimEnd扩展方法添加.NET 9+行为说明,提示单字符串参数可能误用BCL实例方法,建议用TrimPrefix/TrimSuffix。新增TrimPrefix(null)测试,增强健壮性。
引入 PacketCodec 实现 WebSocket 粘包/分包处理,提升协议健壮性。重构 WebSocketCodec 读写流程,支持 UserPacket 场景。WebSocketMessage 新增帧长度计算方法。完善 ReceiveMessageAsync 注释,明确适用场景。集成测试大幅增强,覆盖大包、并发、吞吐等边界与性能场景,确保高并发下 TPS≥100000。优化测试结构与注释。
重构并拆分编解码相关集成测试,独立各类 Fixture,提升结构清晰度和可维护性。新增高吞吐量测试(TCP/UDP 100K TPS、原始粘包/分帧注入),所有吞吐测试引入热身阶段,结果更真实。测试用例精度提升,断言更严格。扩展 HTTP/WebSocket/ApiHttpClient 并发与状态码测试。UdpServer 会话创建流程优化,避免多线程首包丢失。全面规范代码风格与注释。
- 显式增大 UDP 服务端/客户端收发缓冲区,减少高并发丢包 - 吞吐量测试(Echo/TCP/UDP/HTTP)统一增加热身阶段,消除冷启动影响 - UDP 吞吐测试重构为 fire-and-forget 并发发送+独立接收循环,提升并发度 - 新增 FastUdpCodecServerFixture/Session,专为 UDP 吞吐测试优化 - 吞吐测试断言门槛提升,日志输出区分热身与正式测试 - 优化代码风格与注释,保持规范一致
新增 NetHelper.CreateUdpClient 方法,统一创建已绑定本地端口的 UdpClient,彻底规避 SendAsync/ReceiveAsync 并发时的 Socket.Bind 竞态(WSAEINVAL)。UdpServer.OnSend 在 Client 为 null 时静默返回 -1,避免关闭期间异常日志。测试用例同步切换为新工具方法,简化代码并提升健壮性。
修复参数未传递时自动使用默认值,完善 IHttpHandler、ObjectContainer、DefaultReflect、IApiHandler 等参数绑定逻辑,提升依赖注入和接口调用的兼容性与易用性。
新增 EventHub.ReceiveAsync/PublishAsync,支持异步阻塞接收事件、超时与自动清理空闲总线。EventBusExtensions 增加 ReceiveAsync 扩展方法,支持广播语义和自动取消订阅。完善集群场景注释。补充多项单元测试覆盖正常、超时、取消、广播等场景。
重构主题分发,移除_dispatchers,统一事件路由至事件总线,简化注册与分发。新增高效事件头解析,优化消息处理流程,提升健壮性。完善总线自动清理,防止内存泄漏。新增/增强 EventBusTests、EventHubTests、EventHubIntegrationTests,覆盖多场景与边界,确保系统正确性。代码风格与注释全面对齐 NewLife 规范。
重构 EventBus 架构,统一发布/订阅/取消订阅为异步 API,支持 CancellationToken。新增 DelegateEventHandler 与 EventBusExtensions,极大简化委托订阅和一次性接收。EventContext 对象池优化,EventHub 路由与协议解码重构,兼容旧接口并标记废弃。接口文档与风格全面梳理,测试同步适配,提升可维护性与扩展性。
移除所有过时的 HandleAsync 接口,主入口统一为 OnReceiveAsync。重构 EventHubIntegrationTests 和 EventHubTests,全部测试用例切换为新 API,完善对订阅、发布、注册、总线清理等场景的覆盖。调整测试命名与断言,去除旧接口和类型参数不匹配相关逻辑,提升可维护性和语义清晰度。辅助类型集中管理。
新增 JsonOptions 属性,允许通过 JsonHost.Write 和 JsonHost.Read 方法使用自定义的 JSON 配置,提升复杂对象的编码和解码灵活性,同时保持默认行为的兼容性。
…ON序列化选项;WebSocket支持粘包分包处理;统一ValueTask异步接口移除多余条件编译;兼容旧版.NET的IAsyncEnumerable/IAsyncDisposable;修复UdpClient并发绑定竞态问题
增强配置文件写入的原子性与并发健壮性,防止并发写入交叉、异常导致配置丢失或半截文件。优化写入流程:加锁、_reading 抑制 watcher、空内容不覆盖、内容 trim 比较避免无谓重写,采用 .tmp+File.Replace 实现原子写入。新增多场景单元测试,验证崩溃/并发/空内容等情况下的安全性。Program.cs 增加手工验证方法。
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
将 FileConfigProvider._reading 字段改为 volatile,增强多线程可见性。File.Replace 增加 ignoreMetadataErrors 参数,避免加密属性导致的异常,提升原子写入兼容性。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )