v11.11.2026.0201 ApiHttpClient支持多服务竞速与负载均衡;增强ObjectContainer依赖注入;扩展TokenModel支持Scope;优化网络层性能与单元测试;新增UriInfo、PeerEndpointSelector等工具类;完善使用文档与Copilot协作指令石头 authored at 2026-02-01 09:43:27
diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
index 0000000..e5f51cc
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,63 @@
+# NewLife.Core 版本更新记录
+
+## v11.11.2026.0201 (2026-02-01)
+
+### 核心功能
+
+#### ApiHttpClient 增强
+- **多服务竞速与负载均衡**:支持多地址竞速下载,自动选择最快节点
+- **哈希校验**:支持文件下载时的哈希校验功能
+- **负载均衡器重构**:新增 `RaceLoadBalancer`、`PeerEndpointSelector` 等负载均衡组件
+- **节点管理**:自动屏蔽失败节点,支持可配置的启动延迟步长
+- **性能追踪**:为竞速调度和下载过程增加 Tracer 埋点
+
+#### 依赖注入(DI)增强
+- **ObjectContainer 优化**:增强文档与核心功能,支持延迟 DI 集成
+- **Token 模型扩展**:引入 `IToken` 接口,提升令牌模型的扩展性
+- **TokenModel 扩展**:新增 Scope 属性支持,改为 partial 类提高扩展容错
+
+### 网络层优化
+- **NetClient 重构**:完善文档与注释,补充单元测试
+- **会话/服务器增强**:增强 Net 会话与服务器注释及单元测试
+- **消息处理统一**:统一 `IMessage` 处理逻辑,简化消息提取代码,支持原始内容追踪
+- **UdpServer 修复**:修正监听 0 端口后没有自动回填到 NetServer 的问题
+- **并发性能优化**:优化消息队列并发性能,完善编码器注释
+
+### 工具类新增与增强
+- **UriInfo 增强**:新增 `ToUri` 方法,增强对 IPv6 及多格式 URL 的解析支持
+- **Span 扩展**:新增 `Span<byte> Trim` 扩展方法及单元测试
+- **配置支持**:`Config<T>` 支持泛型字典(修复 [#172](https://github.com/NewLifeX/X/issues/172))
+- **序列化优化**:如果属性定义了 `DataObjectFieldAttribute`,让它们排在前面
+
+### 文档与协作
+- **使用手册**:为主要功能模块编写使用手册(ApiHttpClient、网络库等)
+- **Copilot 指令优化**:
+ - 新增 Markdown 文档规范
+ - 完善主动优化原则及细化规范
+ - 新增防御性注释与日志规范
+ - 新增集合表达式与 Null 条件运算符指引
+ - 优化 XCode/Cube 指令读取与 XML 检测策略
+ - 自动分发 Copilot 指令文件及 MSBuild 支持
+
+### 测试与质量
+- **单元测试大幅增强**:为网络库核心功能、UriInfo、PeerEndpointSelector、ApiHttpClient 等新增大量单元测试
+- **测试健壮性提升**:优化测试用例健壮性与时区兼容性,提升 CI 兼容性
+
+### 其他优化
+- **日志优化**:简化线程池和长任务在日志里的名字,让应用启动时的日志更整齐
+- **AddServer 改进**:添加服务地址时返回服务节点
+
+---
+
+## 历史版本
+
+### v11.10.2026.0101 (2026-01-01)
+- 重构 IEventBus,支持 EventHub
+- ApiHttpClient 支持文件下载
+
+---
+
+**说明**:
+- 正式版发布周期:每月月初
+- 测试版发布周期:提交代码到 GitHub 时自动发布
+- 版本号格式:正式版 `{主版本}.{子版本}.{年}.{月日}`,测试版 `{主版本}.{子版本}.{年}.{月日}-beta{时分}`
diff --git "a/Doc/\346\226\260\347\224\237\345\221\275\345\233\242\351\230\237.png" "b/Doc/\346\226\260\347\224\237\345\221\275\345\233\242\351\230\237.png"
new file mode 100644
index 0000000..6b8a1a7
Binary files /dev/null and "b/Doc/\346\226\260\347\224\237\345\221\275\345\233\242\351\230\237.png" differ
diff --git a/NewLife.Core/NewLife.Core.csproj b/NewLife.Core/NewLife.Core.csproj
index c3fd05b..de5e650 100644
--- a/NewLife.Core/NewLife.Core.csproj
+++ b/NewLife.Core/NewLife.Core.csproj
@@ -7,7 +7,7 @@
<Description>Core basic components: log (file / network), configuration (XML / JSON / HTTP), cache, network (TCP / UDP / HTTP /WebSocket), serialization (binary / XML / JSON), APM performance tracking. 核心基础组件,日志(文件/网络)、配置(XML/Json/Http)、缓存、网络(Tcp/Udp/Http/WebSocket)、序列化(Binary/XML/Json)、APM性能追踪。</Description>
<Company>新生命开发团队</Company>
<Copyright>©2002-2026 NewLife</Copyright>
- <VersionPrefix>11.10</VersionPrefix>
+ <VersionPrefix>11.11</VersionPrefix>
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
<FileVersion>$(Version)</FileVersion>
@@ -32,7 +32,7 @@
<RepositoryUrl>https://github.com/NewLifeX/X</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>新生命团队;X组件;NewLife;$(AssemblyName)</PackageTags>
- <PackageReleaseNotes>重构IEventBus,支持EventHub;ApiHttpClient支持文件下载</PackageReleaseNotes>
+ <PackageReleaseNotes>ApiHttpClient支持多服务竞速与负载均衡;增强ObjectContainer依赖注入;扩展TokenModel支持Scope;优化网络层性能与单元测试;新增UriInfo、PeerEndpointSelector等工具类;完善使用文档与Copilot协作指令</PackageReleaseNotes>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
diff --git a/NewLife.Security/NewLife.Security.csproj b/NewLife.Security/NewLife.Security.csproj
index 9710b34..62c36e7 100644
--- a/NewLife.Security/NewLife.Security.csproj
+++ b/NewLife.Security/NewLife.Security.csproj
@@ -6,7 +6,7 @@
<Description>扩展加密算法</Description>
<Company>新生命开发团队</Company>
<Copyright>©2002-2026 NewLife</Copyright>
- <VersionPrefix>11.10</VersionPrefix>
+ <VersionPrefix>11.11</VersionPrefix>
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
<FileVersion>$(Version)</FileVersion>
diff --git "a/X\347\273\204\344\273\266.sln" "b/X\347\273\204\344\273\266.sln"
index eeadd1f..adbb82b 100644
--- "a/X\347\273\204\344\273\266.sln"
+++ "b/X\347\273\204\344\273\266.sln"
@@ -1,12 +1,13 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.1.32228.430
+# Visual Studio Version 18
+VisualStudioVersion = 18.2.11415.280 d18.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Others", "Others", "{32891F65-FBA1-42B2-918E-61F3A9623F2A}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitignore = .gitignore
+ ChangeLog.md = ChangeLog.md
.github\copilot-instructions.md = .github\copilot-instructions.md
.github\workflows\publish-beta.yml = .github\workflows\publish-beta.yml
.github\workflows\publish.yml = .github\workflows\publish.yml