refactor: 调度服务端改为控制台架构,借助现有H ost架构和分布式缓存架构
|
# AntJob 版本更新历å²
## v5.1.2026.1028 (2026-10-28)
### 通信与调度
- **HTTP 通é“完整化**:客户端按地å€å议自动选择 HTTP(S) 或 TCP RPC,HTTP 通é“è¡¥é½ç™»å½•令牌ã€å¿ƒè·³ä¿æ´»ã€UTC æ¢ç®—ä¸Žå¢žé‡ SetJob;直接对接 AntWeb å³å¯ï¼Œæ— 需独立 AntServer
- **WebSocket 下行通知**:新增 `/AntJob/Notify` é•¿è¿žæŽ¥ï¼Œä½œä¸šå˜æ›´ä¸Žæ¶ˆæ¯åˆ°è¾¾å³æ—¶ä¸‹å‘ï¼›æ–线é‡è¿žåŽè‡ªåŠ¨è¡¥å¿æ‹‰å–,通知丢失由轮询兜底
- **注册ä¸å¿ƒå¼€å…³**:新增 `UseRegistry`,å¯å…³é—星尘注册ä¸å¿ƒè§£æžã€ç›´æŽ¥ä½¿ç”¨é…置地å€ï¼›ç»æ³¨å†Œä¸å¿ƒè§£æžæ—¶ä¼˜å…ˆ AntWeb
- **消æ¯åž‹ä½œä¸šç©ºé—²å‘¨æœŸå¯é…ç½®**:新增 `MessageIdlePeriod`(默认 15 秒),HTTP é€šé“æ”¶åˆ°é€šçŸ¥å³æ—¶å”¤é†’ï¼Œæ— éœ€ç‰å¾…轮询
### AOT 与多è¯è¨€
- **NativeAOT 就绪**:AntJobã€AntJob.Extensionsã€AntJob.Dataã€AntJob.Serverã€AntJob.Agent å…¨é‡å¼€å¯ AOT/è£å‰ªåˆ†æžå™¨å¹¶åšåˆ° 0 告è¦ï¼›æ–°å¢ž `Samples/AotSmoke` 并在 CI å¢žåŠ NativeAOT å‘布冒烟,验è¯è¯è¡¨ã€è°ƒåº¦å™¨ã€æ‰©å±•处ç†å™¨ä¸Žæ—¶é—´è¡¨è¾¾å¼åœ¨åŽŸç”Ÿç¼–è¯‘åŽä»å¯ç”¨
- **ä¾èµ–注入å¯è£å‰ª**:`Scheduler.AddHandler<T>` 与 `EntityBase<TEntity>` è¡¥é½ `DynamicallyAccessedMembers` æ ‡æ³¨ï¼Œæ³›åž‹æ³¨å†Œä¸å†è¢«è£å‰ª
- **全产å“è¯è¡¨**:`AntJob`ã€`AntJob.Extensions`ã€`AntJob.Data`ã€`AntJob.Server`ã€`AntJob.Web` 五套è¯è¡¨ç»Ÿä¸€è¦†ç›– 11 ç§è¯è¨€ï¼Œè‹±æ–‡ä¸ºæºæ–‡ä¸Žå…œåº•;扩展库 4 æ¡ã€æ•°æ®å±‚ 1 æ¡ã€Web 宿主 4 æ¡ï¼ˆè®¤è¯ã€grant_typeã€TaskIDã€WebSocket 通知)è¿è¡Œæ—¶æ¶ˆæ¯æ”¹ä¸ºè‹±æ–‡æºæ–‡
- **包元数æ®å¤šè¯è¨€**:`AntJob` 与 `AntJob.Extensions` çš„ `AssemblyTitle`/`Description` 改用英文,`PackageDescription` ä¸è‹±åŒè¯ï¼Œ`PackageTags` è¡¥ `AOT`/`NativeAOT`/`本地化`,与 NewLife.Core 一致
### å¯é 性与并å‘
- **上报幂ç‰**:忽略任务终结åŽçš„é‡å¤ä¸Žä¹±åºä¸ŠæŠ¥ï¼ŒåŒä¸€ä½œä¸šçš„上报串行更新统计,é¿å…统计漂移
- **é”与调度**:作业é”è¶…æ—¶ä¸å†ç»§ç»åˆ†é…ä»»åŠ¡ï¼Œè°ƒåº¦è½®æ¬¡ç¦æ¢é‡å…¥ï¼Œå•轮调度异常ä¸å†ä¸æ–定时器
- **在线记录**ï¼šç»Ÿä¸€ä¼šè¯æ ‡è¯†æž„建并é™åˆ¶é•¿åº¦ï¼Œæ¸…ç†æ”¹ä¸ºæ¡ä»¶åˆ 除,并å‘登录唯一约æŸå†²çªåŽå›žè¯»ï¼ŒRPC 调用ä¸å†é€æ¬¡åˆ·æ–°åœ¨çº¿è®°å½•
- **åœæœº**ï¼šåœæ¢è°ƒåº¦å™¨æ—¶å¹¶è¡Œåœæ¢å¤„ç†å™¨å¹¶å–消å¯åЍé‡è¯•,连接失败时释放客户端与æä¾›è€…,Web åœæœºé‡Šæ”¾åŽå°æ¸…ç†å®šæ—¶å™¨
### 性能优化
- **调度循环**:多作业并行申请任务,调度循环与动æ€å¤„ç†å™¨æŒ‰å称建索引,处ç†å™¨é›†åˆæžšä¸¾ä¸Žä¸‹è¡Œé€šçŸ¥å¹¶å‘安全
- **通知链路**:åŒåº”用通知并å‘下å‘ï¼Œé€šçŸ¥ä¼šè¯æŒ‰åº”用建立索引,转å‘ä¸å†é‡å¤ååºåˆ—化,作业新增仅在å¯ç”¨æ—¶å‘é€é€šçŸ¥
- **消æ¯åž‹ä½œä¸š**:按通知定å‘唤醒并空闲退é¿ï¼Œé™ä½Žç©ºè½¬è½®è¯¢å¼€é”€
- **æ¨¡æ¿æ›¿æ¢**:`TemplateHelper` å ä½ç¬¦æŸ¥æ‰¾æ”¹ä¸º Ordinalï¼Œæ¨¡æ¿æ›¿æ¢æå‡ 37~61 å€
### 功能完善
- **SYS-18 C# 脚本处ç†å™¨**:基于 Roslyn 执行任务æºå¸¦çš„ C# 代ç ,脚本å¯è®¿é—®ä½œä¸šä¸Šä¸‹æ–‡ï¼Œè¿”回值为æˆåŠŸå¤„ç†æ•°ï¼›net45 ç›®æ ‡ä¸æ”¯æŒ
- **SYS-10 HttpJobProvider**:修æ£ä»¤ç‰Œç«¯ç‚¹ä¸º `/AntJob/Token`ã€AddJobs 请求体与 Produce 路径;Web ç«¯è¡¥é½ `SetJob` 接å£ã€ä»¤ç‰ŒåŠ¨ä½œè·¯ç”±ä¸Žç‰¹æ€§è·¯ç”±æ˜ å°„ï¼ˆ`MapControllers`)
- **å¹¶å‘自动注册**ï¼šå¤šå®¢æˆ·ç«¯åŒæ—¶æ³¨å†ŒåŒå应用时,唯一约æŸå†²çªåŽè‡ªåЍ釿–°åŠ è½½ï¼Œé¿å…登录失败
### ä¾èµ–å‡çº§ä¸Žå·¥ç¨‹
- **ä¾èµ–å‡çº§**:NewLife.Core 12.0.2026.1024ã€NewLife.Remoting 4.0.2026.1024ã€NewLife.Stardust 3.10.2026.1024ã€NewLife.XCode 12.3.2026.1024ã€NewLife.Redis 7.0.2026.1024ã€NewLife.MySql 1.5.2026.1024 å‡ä¸ºæœ€æ–°æ£å¼ç‰ˆï¼›NewLife.Cube.Core 从 6.15 beta 切到 6.16.2026.1027 æ£å¼ç‰ˆ
- **工具链**:Microsoft.NET.Test.Sdk 18.11.0ã€xunit.runner.visualstudio 4.0.1ã€coverlet.collector 10.1.0ã€Microsoft.SourceLink.GitHub 10.0.403
- **æ•°æ®å±‚ç›®æ ‡æ¡†æž¶**:`AntJob.Data` å¢žåŠ `net8.0` ç›®æ ‡ä½¿ AOT 分æžå™¨çœŸæ£ç”Ÿæ•ˆï¼Œ`netstandard2.1` ä¿ç•™å…¼å®¹
- **解决方案è¿ç§»**:`èš‚èš.sln` è¿ç§»ä¸º `.slnx` æ–°æ ¼å¼
- **确定性构建**:版本å·åœ¨ç¡®å®šæ€§ç¼–译下改用固定程åºé›†ç‰ˆæœ¬ï¼Œå…¼å®¹ BenchmarkDotNet ç‰æž„建器
- **打包质é‡**:`AntJob.Extensions` 与 `AntWeb` è¡¥é½ `PackageReadmeFile` 与 `PackageIcon`ï¼Œä¸‰ä¸ªåŒ…æ‰“åŒ…å‘Šè¦æ¸…é›¶
### 测试与文档
- **CI**:新增 win-x64 / linux-arm64 测试矩阵ã€riscv64 / s390x 指令集冒烟与 NativeAOT å‘布冒烟;本地化è¯è¡¨ï¼ˆå«åŒç¨‹åºé›†å¤šè¯è¡¨é”®å†²çªï¼‰ã€README è¯è¨€åˆ‡æ¢ä¸Žç»“构一致性纳入门ç¦
- **å‘布æµç¨‹**:publish 工作æµåŒæ—¶æŽ¨é€ GitHub Packages 与 NuGet.org 并创建 GitHub Releaseï¼›`publish-beta.yml` 触å‘路径纳入 `AntJob.Web/**`
- **README**ï¼šé‡æ–°æŽ’版,顶部åªä¿ç•™æ ‡é¢˜ã€å¾½ç« 与è¯è¨€åˆ‡æ¢ï¼›è‹±æ–‡ä¸ºé»˜è®¤è½åœ°é¡µï¼Œå…¶ä½™ 10 ç§è¯è¨€ä¸ºåŒæž„完整翻译;新增 `check-readme-structure.ps1` 防æ¢å•è¯ç§æ¼æ”¹
- **测试与基准**:新增 `AntTest.Web` é›†æˆæµ‹è¯•项目与 `Benchmark/AntJob.Benchmarks`;架构设计补充消æ¯è°ƒåº¦æ—¶åºã€æ¶ˆæ¯ç”Ÿäº§ã€ä¸»å¤‡åˆ‡æ¢ä¸Žæ˜Ÿå°˜é›†æˆè¯´æ˜Žï¼ŒåŠŸèƒ½æ¸…å•完æˆçއ 100%
- **å‘布基线**:这是 NuGet.org 上首个 5.x æ£å¼åŒ…,`v4.5.2026.901` 之åŽçš„æ”¹åŠ¨å®Œæ•´æ”¶å½•
### Bug ä¿®å¤
- **[fix]** `TimeExpression.Build(String, DateTime)` 陿€é‡è½½æ¤å‰ç›´æŽ¥è¿”回 `null`,现按模æ¿é¦–对花括å·è§£æžæ—¶é—´å移并ä¿ç•™å‰åŽç¼€ï¼Œæ— èŠ±æ‹¬å·æ—¶åŽŸæ ·è¿”å›ž
- **[fix]** 手工实例化调度器(未ç»è¿‡ä¾èµ–注入)å¯åЍä¸å†ç©ºå¼•用,并回è½å…¨å±€æ—¥å¿—ï¼ŒæŽ§åˆ¶å°æŽ¥å…¥ä¸å†å…¨ç¨‹é™é»˜
- **[fix]** 作业未注册或未å¯ç”¨æ—¶è¾“出明确æç¤ºï¼Œé¦–次接入ä¸å†"看起æ¥ä»€ä¹ˆéƒ½æ²¡å‘生"
- **[fix]** 新建 Cron å®šæ—¶ä½œä¸šä»¥å½“å‰æ—¶é—´ä¸ºåŸºå‡†è®¡ç®—下一次执行,é¿å…å¯ç”¨åŽæŒ‰å®¢æˆ·ç«¯ä¸ŠæŠ¥çš„å½“å¤©é›¶ç‚¹è¡¥è·‘æ•°å°æ—¶æ—¶é—´ç‰‡
- **[fix]** ç¤ºä¾‹é¢„çƒæ•°æ®å±‚åŽå†å¯åŠ¨ä½œä¸šï¼Œæ¶ˆé™¤é¦–æ¬¡æ‰§è¡Œä¸Žå»ºè¡¨ç«žäº‰å¯¼è‡´çš„ `no such table`
- **[fix]** ç¤ºä¾‹é»˜è®¤å…³é— XCode SQL 日志,é¿å…日志被 SQL 淹没;示例程åºé›†è¡¥é½æ ‡é¢˜ã€å…¬å¸ä¸Žç‰ˆæœ¬ä¿¡æ¯
- **[fix]** `Samples/HelloWork` è¿ç§»åˆ°å½“剿ޥå£ï¼ˆ`Scheduler.Setting` + `StartAsync`),æ¢å¤å¯ç¼–译å¯è¿è¡Œ
- **[fix]** 申请未知作业ä¸å†ç©ºå¼•用,并é™åˆ¶å•次申请数
- **[fix]** åº”ç”¨æ¶ˆæ¯æ•°ä¸Žç™»å½•写入改用应用编å·å¹¶ä¸²è¡Œ
- **[fix]** 会è¯è¶…æ—¶é…置真æ£ç”Ÿæ•ˆ
- **[fix]** 动æ€å¤„ç†å™¨æŒ‰ç±»åæœç´¢å·²åŠ è½½ç¨‹åºé›†ï¼Œæ£€æŸ¥ä¸å†å› å•个节æµè·³è¿‡åŽç»ä½œä¸š
- **[fix]** 注册作业åŽåˆ·æ–°åº”用作业数
- **[fix]** æ¶ˆæ¯æ¶ˆè´¹åŽæ¸…ç†æ£ç¡®çš„去é‡é”®ï¼Œç”Ÿäº§æ¶ˆæ¯æ—¶åŒæ¥è½åº“æ¶ˆæ¯æ•°
- **[fix]** 执行与上报异常ä¸å†æŠ›åˆ°çº¿ç¨‹æ±
- **[fix]** ä¸ŠæŠ¥æ—¶è®°å½•é“¾è·¯æ ‡è¯†å¹¶æ”¹è¿›è¶Šæƒæç¤º
- **[fix]** WebSocket é€šçŸ¥ä¼šè¯æŒ‰å®¢æˆ·ç«¯æ ‡è¯†å¤ç”¨ï¼Œæ—§ä¼šè¯é”€æ¯ä¸å†è¯¯åˆ åŒç¼–ç 的新会è¯
- **[fix]** `AntJob.Web` 打包内嵌 `AntJob.Data` çš„è·¯å¾„æ”¹ä¸ºå®žé™…äº§ç‰©æ‰€åœ¨çš„ç›®æ ‡æ¡†æž¶ç›®å½•ï¼Œé¿å…干净工作区打包报 NU5026
---
## v4.5.2026.0902 (2026-09-02)
### 网络层优化
- **HttpJobProvider 全异æ¥åŒ–**ï¼šé‡æž„ä¸ºå…¨å¼‚æ¥æŽ¥å£å¹¶è¡¥å…¨ `SetJob` 方法,é¿å…阻塞线程;该æä¾›è€…基于 HTTP REST API 与调度ä¸å¿ƒé€šä¿¡ï¼Œé€‚ç”¨äºŽæ— TCP 端å£çš„场景,与 `NetworkJobProvider`(TCP RPC)功能ç‰ä»·
### 测试与质é‡
- **免釿µ‹è¯•覆盖**:分批为数æ®å±‚ã€å¤„ç†å™¨ã€SqlHandlerã€DataHandler ç‰æ ¸å¿ƒæ¨¡å—补充 SQLite é›†æˆæµ‹è¯•与å•元测试,显著æå‡æµ‹è¯•覆盖率与å¯é 性
### 文档与å作
- **新增设计文档**:新增需求文档ã€åŠŸèƒ½æ¸…å•与架构设计三份设计文档,并在 README ä¸å¢žåŠ æ–‡æ¡£ç´¢å¼•
- **注释优化**:精简跨行 XML 注释为å•è¡Œæ ¼å¼ï¼Œæå‡ AI 与开å‘者阅读效率
### 工程优化
- **版本å·ç”Ÿæˆä¿®æ£**:修æ£ç‰ˆæœ¬å·ç”Ÿæˆé€»è¾‘,规范程åºé›†ä¸Žæ‰“包输出
- **ä¿®å¤ TrimEnd 误用**:将多处 `TrimEnd` ä¿®æ£ä¸º `TrimSuffix`ï¼Œç¡®ä¿æ£ç¡®å¤„ç†åŒºåŸŸåç§°ï¼›åŒæ—¶ç¦ç”¨ SourceLink
- **ä¾èµ–æ›´æ–°**:å‡çº§å„å项目 NuGet ä¾èµ–包至 2026 å¹´ 7 月最新版
---
## v4.4.2026.0501 (2026-05-01)
### 打包与工程优化
- **AntJob.Web 独立å‘包**:打包 AntJob.Web 时内嵌 AntJob.Dataï¼Œæ— éœ€å•独å‘布两个 NuGet 包,简化用户ä¾èµ–
- **CI 构建增强**:增强 AntJob.Web å¤šç›®æ ‡æ¡†æž¶æ‰“åŒ…åŠ CI è¾“å‡ºè·¯å¾„çµæ´»æ€§ï¼Œæ”¯æŒæŒ‰çŽ¯å¢ƒå˜é‡æŽ§åˆ¶ç›®æ ‡æ¡†æž¶
- **ä¾èµ–æ›´æ–°**:更新å„å项目 NuGet ä¾èµ–åŒ…ç‰ˆæœ¬ï¼›æ·»åŠ `.csproj.lscache` 到 `.gitignore`
---
## v4.4.2026.0201 (2026-02-01)
### 主è¦å˜æ›´
- å‡çº§XCodeæ‹¦æˆªå™¨æž¶æž„ï¼Œæ”¯æŒæ›´çµæ´»çš„æ•°æ®è®¿é—®æ‹¦æˆª
- å‡çº§.NET10.0支æŒï¼Œä¿æŒä¸Žæœ€æ–°.NETç‰ˆæœ¬åŒæ¥
- 实体类增强,完善作业ã€ä½œä¸šä»»åŠ¡ã€ä½œä¸šé”™è¯¯ç‰å®žä½“çš„å—æ®µå’Œæ³¨é‡Š
- 更新基础组件到最新版本(NewLife.Coreã€NewLife.XCodeã€NewLife.Remotingã€NewLife.Stardust)
- 优化GitHub Actions工作æµé…ç½®
### è¯¦ç»†å˜æ›´
- **XCode拦截器架构** (2026-02-01)
- å‡çº§XCode拦截器架构,增强数æ®è®¿é—®å±‚的扩展能力
- 新增XCode专用指令文档 `.github/instructions/xcode.instructions.md`
- å®Œå–„å®žä½“ç±»æ³¨é‡Šå’Œå—æ®µå®šä¹‰
- 优化作业ã€ä½œä¸šä»»åŠ¡ã€ä½œä¸šé”™è¯¯ç‰å®žä½“的业务逻辑
- **框架å‡çº§** (2026-01-13)
- å‡çº§.NET10.0支æŒï¼Œæ‰€æœ‰Webé¡¹ç›®å’Œæµ‹è¯•é¡¹ç›®å‡æ”¯æŒæœ€æ–°.NET版本
- æ›´æ–°ç›®æ ‡æ¡†æž¶ï¼šAntJob.Agentã€AntJob.Serverã€AntJob.Webã€AntTestã€HisAgentã€HisWebã€Test
- **ä¾èµ–æ›´æ–°**
- 2026-01-24: æ›´æ–°Copilotå作指令文档
- 2026-01-14: å‡çº§NuGet包ä¾èµ–,更新基础组件
- 2025-12-14: 优化GitHub Actions工作æµ
- 2025-12-09: 更新基础组件版本
### 包ä¾èµ–版本
- NewLife.Core: 11.11.2026.0201
- NewLife.XCode: 11.24.2026.0201
- NewLife.Remoting: 3.7.2026.0201
- NewLife.Stardust: 3.7.2026.0201
---
## v4.4.2025.0902 (2025-09-02)
### 主è¦å˜æ›´
- 处ç†å™¨Handleræ–°å¢žå¼‚æ¥æ”¯æŒ
- å¢žåŠ åƒµæ»ä»»åŠ¡æ£€æµ‹ï¼Œç‰¹åˆ«è§£å†³è°ƒç”¨C++éžæ‰˜ç®¡ä»£ç 阻塞问题
- 调度通信全部使用异æ¥å¤„ç†
---
åŽ†å²æ›´æ—©ç‰ˆæœ¬çš„å˜æ›´è®°å½•请å‚考 Git æäº¤åކå²ã€‚
|