Skip to content

v4.9.9

Latest

Choose a tag to compare

@monksoul monksoul released this 04 Jul 23:32

更新日志:https://furion.net/docs/category/upgrade/

  • 新特性

    • [新增] HTTP 远程请求 [Body] 特性支持配置 DisposeStreamOnRequestCompletion 4.9.9.17 22d2c46
    • [新增] HTTP 远程请求支持多实例服务注册 4.9.9.16 1284ea8
    • [新增] HTTP 远程请求内容处理器支持返回多个 HttpContent 组合 4.9.9.16 1284ea8
    • [新增] HTTP 远程请求构建器 RemoveContent 方法 4.9.9.16 1284ea8
    • [新增] HTTP 远程请求支持批量添加请求结束时需要释放的对象方法:AddDisposables 4.9.9.16 1284ea8
    • [新增] HTTP 远程请求获取本地 IP 地址和 MAC 地址方法:HttpRemoteUtility.GetLocalIPv4()HttpRemoteUtility.GetLocalMacAddress() 4.9.9.16 1284ea8
    • [新增] Cron 表达式 H 字符支持:HR 功能完全等价,所有 R 的语法均适用于 H 4.9.9.14 45fe276
    • [新增] Cron 表达式支持 JenkinsR#N / H#N 语法:用于 DayOfWeek 字段,表示每月第 N 个随机星期几,解析时随机选定星期几 4.9.9.14 45fe276
    • [新增] Cron 表达式 Macro 宏:@weekends 4.9.9.14 45fe276
    • [新增] 定时任务周末触发器特性和方法:Weekends 4.9.9.14 45fe276
    • [新增] HTTP 远程请求可通过 .SetBaseAddress(url)[BaseAddress(url] 充当公共前缀功能 4.9.9.13 ⏱️2026.07.05 0224fa0
    • [新增] HTTP 远程请求支持添加泛型响应内容转换器 4.9.9.10 ⏱️2026.07.03 9a37cfa
    • [新增] HTTP 远程请求 JSON 响应反序列化包装器 ResultHandler 功能 4.9.9.10 ⏱️2026.07.03 9a37cfa
    • [新增] HTTP 远程请求支持发送 IBrowserFile 文件 4.9.9.9 ⏱️2026.07.02 fa73c28
    • [新增] HTTP 声明式请求支持通过 [Header("键: 值")] 方式设置标头 4.9.9.9 ⏱️2026.07.02 fa73c28
    • [新增] HTTP 远程请求 SetContent 方法支持配置 disposeStreamOnRequestCompletion 参数 4.9.9.9 ⏱️2026.07.02 fa73c28
    • [新增] HTTP 远程请求 IFormFile 内容处理器支持 4.9.9.9 ⏱️2026.07.02 8a8e44b
    • [新增] 视图引擎 CompileFromCached 方法 4.9.9.5 ⏱️2026.06.29 c1b3c35
    • [新增] HTTP 远程请求 IAsyncEnumerable<T> 响应内容类型支持 4.9.9.3 ⏱️2026.06.25 4b80b9b
    • [新增] Cron 表达式支持 Rvalue1,value2,value3 离散值随机语法 4.9.9.2 ⏱️2026.06.24 99b6e94
    • [新增] Cron 表达式支持获取指定数量的下/上所有发生时间 4.9.9.1 ⏱️2026.06.24 99b6e94
  • 突破性变化

    • [调整] Cron 表达式 R 随机语法:区间改为 R(min-max),带步长改为 R(min-max)/step,离散值改为 R(value1,value2,...)R/step 保持不变 4.9.9.14 45fe276
    • [调整] Cron 表达式 Macro 宏:@workday -> @weekdays 4.9.9.14 45fe276
    • [调整] 定时任务工作日触发器的特性和方法名:Workday -> Weekdays 4.9.9.14 45fe276 84f468a
    • [调整] 重命名代理拦截器 AspectDispatchProxy -> DispatchProxyAsync 4.9.9.12 ⏱️2026.07.05 f09a934
    • [移除] Furion.PureFurion.Pure.Xunit 拓展包 4.9.9.11 ⏱️2026.07.04 e026b02

Furion 公告:v4.9.9 起移除 Furion.Pure,统一为单一包,全面拥抱 EFCore

Furion 从一开始就默认集成了 .NET 官方的 Entity Framework Core(简称 EFCore)。但由于早期 EFCore 概念繁杂、上手门槛较高,不少开发者更倾向使用第三方 ORM,因此我们将 Furion 拆分为 Furion 和 Furion.Pure 两个包:前者包含 EFCore,后者不包含

2021 年拆包后,Furion 包的流量和 NuGet 下载量急剧下降,而 Furion.Pure 的下载量却迅速攀升。原本统一的下载量被迫分散到两个包,导致新用户在搜索 “Furion” 时,看到的 Furion 包下载量少得可怜——大部分下载实际上被 Furion.Pure 带走。从长远发展来看,这非常不利:第一,Furion 包每个版本的下载量严重缩水;第二,同时维护两个包及其依赖需要投入巨大的时间和精力。

因此,从 Furion v4.9.9 开始,我们将移除 Furion.Pure 包及相关扩展,并在后续开发中逐步把 EFCore 模块功能抽离为独立模块。以后只保留 Furion 一个包,不再提供 Furion.Pure。

✅ 升级指引

从 Furion.Pure 升级到 v4.9.9 只需完成以下两处调整:

  1. 替换 NuGet 包
    将项目中的 Furion.Pure 包替换为 Furion
  2. (如果使用了定时任务持久化)修改数据库记录
    将作业触发器表中 AssemblyName 字段的值由 Furion.Pure 更新为 Furion

除此之外无需任何其他变更。唯一可感知的影响是发布目录下会多出一个 EFCore 相关的 dll 文件。

另外,在 AI 时代,.NET 生态中大部分第三方 ORM 的发布频率和代码提交频率明显降低,维护活跃度大不如前,而 EFCore 的下载量和用户数正呈指数级增长。AI 也大大降低了 EFCore 的使用门槛,所以 我们推荐新项目优先选择 EFCore,而非第三方 ORM。

接下来,我们还会 重构 EFCore 扩展模块,并移除所有非 EFCore 的第三方 ORM 扩展及相关的脚手架和文档。

    • [新增] HTTP 远程请求 QUERY 请求支持 4.9.9.8 ⏱️2026.07.01 1195ffa
    • [调整] HTTP 远程请求 [Query] 重命名为 [QueryParam] 4.9.9.8 ⏱️2026.07.01 b9df71b

昨天,IETF(互联网工程任务组)正式发布了 RFC 10008,为 HTTP 协议族增添了一个新成员——QUERY 方法。这是一种与 GET 同样安全、幂等,但支持携带请求体的 HTTP 动词。

https://www.rfc-editor.org/info/rfc10008

框架已第一时间提供适配支持。

值得注意的是,原有的 [Query] 特性已重命名为 [QueryParam],现在的 [Query] 则用作 HTTP 方法(请求谓词)。

    • [升级] 重构视图引擎底层代码,改进性能、内存占用及未来拓展性 4.9.9.7 ⏱️2026.06.30 b1d69b2
    • [移除] 视图引擎字符串拓展方法 4.9.9.5 ⏱️2026.06.29 8f37d03
    • [调整] 事件总线上下文以及 CancellationToken 参数设计 4.9.9 ⏱️2026.06.23 c0d2c4d
  • 问题修复

    • [修复] Serve.Run()File-Based Apps 单文件应用中出现异常 4.9.9.21 4b67d6b
    • [修复] HTTP 远程文件上传/下载时,控制台进度打印可能抛出异常的问题 4.9.9.20 acfd9dd
    • [修复] 规范化文档自定义标签 Tag 之后注释丢失问题 4.9.9.19 e9c8ada
    • [修复] HTTP 远程请求在极端情况下出现连接池耗尽问题 4.9.9.18 9b7b430
    • [修复] Cron 表达式 RandomParser.ToString()R/step 的简洁输出,避免全范围步长被错误展开 4.9.9.14 45fe276
    • [修复] HTTP 远程请求在 Blazor WebAssembly 应用中使用出现解压异常问题 4.9.9.13 ⏱️2026.07.05 0224fa0
    • [修复] HTTP 远程请求分析日志在一些特殊场景下出现空行打印问题 4.9.9.13 ⏱️2026.07.05 0224fa0
    • [修复] HTTP 远程请求声明式接口不支持封闭泛型接口定义问题 4.9.9.12 ⏱️2026.07.05 aa47822
    • [修复] 规范化文档页面注销登录后没有清除 token 问题 4.9.9.11 ⏱️2026.07.04 a64a769
    • [修复] HTTP 远程请求存在未释放 HttpResponseMessage 问题 4.9.9.10 ⏱️2026.07.03 9a37cfa
    • [修复] 视图引擎存在内存一直无法释放问题 4.9.9.5 ⏱️2026.06.29 48f778f
    • [修复] 数据验证 AbstractValueValidator<> 遗漏 abstract 关键字导致程序集扫描异常 4.9.9.4 ⏱️2026.06.26 77f2533
    • [修复] Cron 表达式 R 字符解析出现矛盾问题 4.9.9.1 ⏱️2026.06.24 99b6e94
    • [修复] Cron 表达式解析 R 字符并获取下一次执行时间错误问题 4.9.9 ⏱️2026.06.23 8ba4d3c
  • 其他更改

    • [改进] HTTP 远程请求默认 Content-Type 推断逻辑 4.9.9.15 ⏱️2026.07.06 5495a09
    • [改进] 视图引擎编译模板出错时可以直观显示错误的模板上下文代码 4.9.9.8 ⏱️2026.07.01 f5e6771
    • [调整] 友好异常处理,将内部异常和外部异常一起呈现 4.9.9.7 ⏱️2026.06.30 cf42cf4
    • [改进] 视图引擎编译性能,减少约 40MB 大小内存,支持 GC 回收 4.9.9.6 ⏱️2026.06.30 a17a14a
    • [改进] App.CompileCSharpClassCodeToStream 编译 C# 代码,支持 GC 回收 4.9.9.6 ⏱️2026.06.30 cae4287
    • [改进] [FlexibleArray<T>] 查询参数模型绑定 4.9.9.3 ⏱️2026.06.25 a7aae88 @YaChengMu !937
    • [改进] 两个流变对象之间比较性能 4.9.9 ⏱️2026.06.23 b08b9d5
  • 文档

    • [更新] HTTP 远程请求文档、流变对象文档、事件总线文档、Cron 表达式文档、视图引擎文档、任务队列文档、规范化文档