乐此不疲
距离上一次更新过了将近一个月,在此期间 Furion 在 NuGet 平台获得了超 70万次下载量,总下载量约 1100万。伴随着 Furion 影响力越来越大,带来了用户量暴增,同时我们团队投入维护和研发成本也越来越高,但,我们并没有改变初心,依然选择做用户信任且坚实的后盾。
在用户的高频使用和鞭策外加上我们团队三年多的快速响应迭代,Furion 各个模块逐步成熟稳定,在国内选择 .NET 的企业中发挥了不可忽视的重要作用,极大减少企业招人成本、培训成本和维护成本。作为开发团队的我们,非常自豪且有成就感。
舒适陷阱
有时候,将一个开源项目标榜为 ⌈成熟稳定⌋,未必总是有益的。这样做会使项目团队过于满足并陷入舒适区,难以放弃他们辛勤努力所获得的成果。久而久之,这样的态度可能导致项目走向衰退,甚至在竞争激烈的开源行业中消失无踪。
出于对 Furion 项目未来发展的考虑,我们团队对当前版本存在的问题进行了整理,并制定了未来版本的设计要求。为此,我们于今年5月初开始着手编写全新的 Furion。借鉴了之前的经验教训,我相信这一次我们能够取得更进一步的进展。
http://furion.baiqian.ltd/docs/target/
大器晚成
大器晚成,也好过一生蹉跎。
随着年龄的增长,承担的角色和责任也越来越多。曾经年轻气盛、自以为无所不能的时光已经过去,自己已进入了三十而立的年纪。回顾过去,或许是年少轻狂或者缺乏经验,总是对各种事物兴趣广泛,总想效仿别人取得的成就,却往往只是三分钟热度,没有在任何一个领域取得突出的成绩。从另一个角度来看,这也代表着没有建立起坚定的志向,不知道自己真正想要什么,不知道自己追求什么。可以说,有些浪费了时间。
经历了这十年的各种事情后,进入三十而立的阶段,对自己有了更加清晰的认识,渐渐明白了应该如何走下去。除了对过去的反思和认知增长,进入三十而立的年纪也意味着面临着更多的责任和挑战。年轻时的追求和浮躁逐渐被成熟和稳重取代,开始明确自己的价值观和目标,以更有条理和坚定的方式追求自己的梦想。
开源 Furion 本是 ⌈无心之举⌋,未成想它成为我人生 ⌈志心之源⌋。
回到正题
本次更新包含了近半年的更新,对 Furion 的底层进行了非常多的改进。
项目信息
- Gitee:https://gitee.com/dotnetchina/Furion
- Github:https://github.com/MonkSoul/Furion
- 文档:http://furion.baiqian.ltd/
本期更新
更新日志:http://furion.baiqian.ltd/docs/upgrade/
-
新特性
- [新增] 定时任务看板列表支持作业分组名排序 4.8.8.43 ⏱️2023.09.14 #I7YQ9V
- [新增] 验证特性
[DataValidation]
支持[Display]
和[DisplayName]
特性设置{0}
4.8.8.42 ⏱️2023.09.01 #I7XB3T - [新增] 监听日志
LoggingMonitor
支持配置日志输出级别 4.8.8.41 ⏱️2023.08.25 #I7SRTP - [新增] 多语言支持
L.GetString(name, culture)
获取指定区域翻译 4.8.8.41 ⏱️2023.08.04 044b0ed - [新增] 粘土对象
.ConvertTo
支持自定义值提供器 4.8.8.40 ⏱️2023.08.03 70d5888 - [新增] 规范化文档枚举支持
[EnumToNumber]
特性配置生成前端枚举定义代码是字符串值还是整数值类型,默认为字符串值 4.8.8.35 ⏱️2023.07.06 #I7IZ7S - [新增] 定时任务作业计划
OnChanged
事件处理 4.8.8.29 ⏱️2023.06.25 e4c4cf1 - [新增]
Swagger
分组信息可在任意配置文件中通过[openapi:分组名]
进行配置 4.8.8.26 ⏱️2023.06.20 a70eed3 - [新增]
TP.WrapperRectangle
绘制矩形日志模板 4.8.8.25 ⏱️2023.06.14 60ffd76 - [新增]
IServiceScope.CreateDefaultHttpContext
拓展方法 4.8.8.24 ⏱️2023.06.07 11a55e1 - [新增] 配置模块
IgnoreConfigurationFiles
支持完整的文件通配符 4.8.8.22 ⏱️2023.05.25 #I78ABL - [新增] 定时任务支持二级虚拟目录
VisualPath
配置部署 4.8.8.20 ⏱️2023.05.18 #I740IA - [新增] 监听日志
LoggingMonitor
支持Razor Pages
4.8.8.16 ⏱️2023.05.15 #I7332C - [新增] 定时任务作业处理程序工厂
IJobFactory
支持 4.8.8.13 ⏱️2023.05.08 ad58dd3 - [新增]
AES
支持对文件(含超大文件)进行加解密 4.8.8.11 ⏱️2023.05.05 1d2265b - [新增] 动态
WebAPI
支持text/plain
格式的Body
参数 4.8.8.9 ⏱️2023.05.04 b49fe50 - [新增] 插件化
IDynamicApiRuntimeChangeProvider
接口,可在运行时动态添加WebAPI/Controller
4.8.8.8 ⏱️2023.05.04 322ea59 - [新增] 定时任务
Schedular.CompileCSharpClassCode(code)
支持动态编译作业处理程序代码 4.8.8.7 ⏱️2023.04.30 fe1e8a1 - [新增]
App.CompileCSharpClassCode(code)
动态编译类定义代码 4.8.8.7 ⏱️2023.04.30 fe1e8a1 - [新增] 粘土对象支持结构
struct
对象类型 4.8.8.7 ⏱️2023.04.30 a0fa3aa - [新增] 定时任务支持配置
IJob
执行异常FallbackAsync
回退策略 4.8.8.6 ⏱️2023.04.25 7671489 - [新增] 定时任务支持在非
IOC/DI
项目类型中使用 4.8.8.5 ⏱️2023.04.24 #I6YJNB - [新增]
RSA
支持对超长字符(超245
位)进行分段加解密 4.8.8.2 ⏱️2023.04.19 !788 感谢 @YaChengMu - [新增]
System.Text.Json
和Newtonsoft.Json
对粘土对象Clay
支持 4.8.8.1 ⏱️2023.04.18 #I6WKRZ - [新增] 粘土对象可反射转换成特定
IEnumerable<T>
类型:clay.ConvertTo<T>()
4.8.8 ⏱️2023.04.13 5d54a65 - [新增]
Serve.IdleHost
支持返回http
和https
协议Web
地址(端口) 4.8.8 ⏱️2023.04.13 fdf7885
-
突破性变化
- [移除] 定时任务看板
SyncRate
配置,前后端采用最新的SSE
推送技术替代 4.8.8.29 ⏱️2023.06.25 e4c4cf1 - [调整] 监听日志
WriteFilter
和ConfigureLogger
的ActionExecutingContext
和ActionExecutedContext
类型为FilterContext
4.8.8.16 ⏱️2023.05.15 #I7332C - [调整]
IJsonSerializerProvider
序列化接口,添加Deserialize
反序列化方法 4.8.8.15 ⏱️2023.05.15 !815 感谢 @YaChengMu
- [移除] 定时任务看板
-
问题修复
- [修复] 动态
WebAPI
不能正确移除AppService
命名的Service
问题 4.8.8.47 ⏱️2023.10.10 #I86NL - [修复] 审计日志不支持
dynamic/JsonElement
序列化问题 4.8.8.45 ⏱️2023.09.29 #I84SD5 - [修复]
Scoped.CreateUowAsync
作用域工作单元异常无法回滚问题 4.8.8.44 ⏱️2023.09.23 #I833I9 - [修复] 模板引擎高并发读取缓存模板出现线程占用问题 4.8.8.43 ⏱️2023.09.14 #I80ZKB
- [修复] 使用刷新
Token
也能通过鉴权检查严重安全Bug
4.8.8.42 ⏱️2023.08.28 #I7TII4 - [修复] 粘土对象不支持枚举类型问题 4.8.8.41 ⏱️2023.08.25 #I7VDDL
- [修复] 定时任务因上一版本修改 4e2615b 导致自定义作业触发器异常问题 4.8.8.36 ⏱️2023.07.06 #I7J59D
- [修复] 审计日志解析
DateTime
类型参数不是本地时间问题 4.8.8.33 ⏱️2023.06.29 #I7GW32 - [修复] 定时任务因上一版本修改 4e2615b 导致
Cron
解析异常问题 4.8.8.32 ⏱️2023.06.28 #I7GQ5I - [修复] 定时任务设置额外数据不支持
long/int64
类型参数问题 4.8.8.31 ⏱️2023.06.28 4e2615b - [修复] 定时任务休眠毫秒数大于
int.MaxValue
时出现ArgumentOutOfRangeException
4.8.8.27 ⏱️2023.06.21 #I7F6ZT - [修复]
Cron
表达式步长解析器错误 4.8.8.25 ⏱️2023.06.14 #I7D9XU - [修复] 修复
ExpandoObject.ToDictionary()
转换异常 4.8.8.25 ⏱️2023.06.14 #I7BY0P - [修复] 配置友好异常
FriendlyExceptionSettings:DefaultErrorMessage
无效问题 4.8.8.23 ⏱️2023.05.31 #I79LIG - [修复]
Swagger
进行分组后Tags
不能进行分组过滤问题 4.8.8.22 ⏱️2023.05.25 #I78A55 - [修复] 因 9d8cb82 代码提交导致命名服务解析异常问题 4.8.8.21 ⏱️2023.05.18 #I76JZR
- [修复] 因 9d8cb82 代码提交导致服务
AOP
异常拦截问题 4.8.8.17 ⏱️2023.05.15 #I73A8E - [修复] 动态
WebAPI
自定义路由模板参数和自动拼接参数冲突问题 4.8.8.15 ⏱️2023.05.15 #I72ZZ2 - [修复] 远程请求在被请求端返回非
200
状态码但实际请求已处理也抛异常问题 4.8.8.14 ⏱️2023.05.12 b14a51f - [修复]
App.CompileCSharpClassCode(code)
运行时添加匿名程序集编译异常问题 4.8.8.8 ⏱️2023.05.04 322ea59 - [修复]
LoggingMonitor
打印泛型类型如果存在多个泛型参数问题 4.8.8.8 ⏱️2023.05.04 8d9cb74 - [修复] 脱敏处理如果字典存在重复词导致异常问题 4.8.8.4 ⏱️2023.04.23 #I6Y19K
- [修复] 远程请求
Body
参数为粘土对象Clay
类型序列化有误 4.8.8.1 ⏱️2023.04.18 #I6WKRZ - [修复]
Serve.IdleHost
获取随机端口的本地地址带$
符号问题 4.8.8 ⏱️2023.04.13 ed6f292
- [修复] 动态
-
其他更改
- [调整]
[UnitofWork]
支持在Class
中指定,解决Pages
应用警告问题 4.8.8.42 ⏱️2023.09.01 #I7X51E - [调整] 取消远程请求
GET/HEAD
不能传递Body
的限制 4.8.8.39 ⏱️2023.08.02 8113460 - [调整] 规范化文档枚举生成
json
格式,由int32
改为string
4.8.8.34 ⏱️2023.07.02 #I7HOPR - [调整] 规范化文档默认
Title
解析规则,不再自动添加空格 4.8.8.26 ⏱️2023.06.20 24b7a47 - [调整] 组件
Component
模式支持[DependsOn]
支持继承 4.8.8.16 ⏱️2023.05.15 #I733RF - [调整] 定时任务
GC
回收逻辑,避免高频添加作业导致尾延迟
问题 4.8.8.3 ⏱️2023.04.21 #I6XIV8 - [调整] 定时任务日志设计,减少不必要的日志输出 4.8.8.3 ⏱️2023.04.21 #I6XI2L
- [调整]
-
文档
- [新增]
Jwt
身份验证过程监听文档 - [新增] 事件总线
Redis
集成文档 - [更新] 粘土对象文档、虚拟文件系统文档、序列化文档、事件总线文档、远程请求文档、数据加密文档、安全授权文档、动态
WebAPI
文档、定时任务文档、JSON
序列化文档、App
静态类文档、规范化文档、配置文档
- [新增]
-
贡献者
- 陶泥 (@ncs48620) !848
- handsome_by (@handsomeboyyl) !842
- 拉风的 CC (@LFDCC) !841
- Felix Hoi (@felixhoi) !839
- zetaluoxin (@zetaluoxin) !834
- SongXinXin (@goodsxx) !832 !833
- 阿炬 (@quejuwen) !813
- KaneLeung (@KaneLeung) !808
- 蒋状先生 (@JiangZhuangXianSheng) !806
- NeoLu (@neolu) !804
- 蓝色天空 (@lds2013) !796
- YaChengMu (@YaChengMu) !788 !815