聚合全网技术文章,根据你的阅读喜好进行个性推荐
Furion 在 2022年07月25日发布 v4.0.0 版本,支持所有历史版本升级到该版本,在此之前已花费了 22 天的时间去测试,去改进。
万万没想到的是,大量的旧项目在这期间都选择了升级,短短一周时间 Nuget 安装量暴增了 30万,但问题也随之而来,由于使用者项目用法千奇百怪,导致一些项目升级之后无法正常运行或出现了比较严重的 Bug。
所以,自那天开始,终日疲于处理各种升级兼容问题,修复了近 20 个 Bug,做了诸多改进,总算实现了真正的无缝升级。
自 2012年注册了 Github 之后,每一年都推出一款开源项目,持续了 10 年,在此期间见证了中国开源乃至国际开源的发展历程,感触良多。
1. 开源是一把双刃刀,处理得当名利双收,处理不妥道德谴责,佛系开源不痛不痒。
2. 做开源最难的不是零到一的过程,而是持续维护的勇气。
3. 开源如同人的脸,好坏一面便知,缺点可能会受到嘲讽批评,优点也会收获赞扬尊重。别担心,他们正在塑造更好的你。
4. 在国内做开源是一件很考验人的耐力活,你会在短时间内因为使用者的各种问题导致情绪复杂多变,仿佛在甲亢甲减这种现代病的边缘徘徊。
5. 当你停止提交代码的次数越多,那么离放弃这个项目不远了。
还有很多很多感想,今天就略写几条~
新特性
Furion.Xunit
Xunit
Furion
services.AddMonitorLogging()
Serve.Run(silence: true)
SpecificationDocumentBuilder.GetOpenApiGroups()
logger.ScopeContext()
CorsAccessorSettings.SignalRSupport
SignalR
UseUtcTimestamp
DateTime.UtcNow
DateTime.Now
[OperationId]
Swagger UI
IHttpDispatchProxy
突破性变化
Furion.Extras.DatabaseAccessor.SqlSugar
[SqlSugarUnitOfWork]
Inject.Create()
Serve.Run()
Serve.Run
ConfigureConfiguration
configuration => {}
(environment, configuration) => {}
问题修复
[LoggingMonitor]
Information
EFCore
byte[]
ErrorCode
IRepository
Mvc
SuperSocket
Oops.Oh
Oops.Bah
UI
operationId
guid
NotFoundResult
NotFoundObjectResult
IQueryable
评论删除后,数据将无法恢复
十年开源感想,Furion v4.1.11 发布
坑坑坑坑
Furion 在 2022年07月25日发布 v4.0.0 版本,支持所有历史版本升级到该版本,在此之前已花费了 22 天的时间去测试,去改进。
万万没想到的是,大量的旧项目在这期间都选择了升级,短短一周时间 Nuget 安装量暴增了 30万,但问题也随之而来,由于使用者项目用法千奇百怪,导致一些项目升级之后无法正常运行或出现了比较严重的 Bug。
所以,自那天开始,终日疲于处理各种升级兼容问题,修复了近 20 个 Bug,做了诸多改进,总算实现了真正的无缝升级。
开源感想
自 2012年注册了 Github 之后,每一年都推出一款开源项目,持续了 10 年,在此期间见证了中国开源乃至国际开源的发展历程,感触良多。
1. 开源是一把双刃刀,处理得当名利双收,处理不妥道德谴责,佛系开源不痛不痒。
2. 做开源最难的不是零到一的过程,而是持续维护的勇气。
3. 开源如同人的脸,好坏一面便知,缺点可能会受到嘲讽批评,优点也会收获赞扬尊重。别担心,他们正在塑造更好的你。
4. 在国内做开源是一件很考验人的耐力活,你会在短时间内因为使用者的各种问题导致情绪复杂多变,仿佛在甲亢甲减这种现代病的边缘徘徊。
5. 当你停止提交代码的次数越多,那么离放弃这个项目不远了。
还有很多很多感想,今天就略写几条~
本期更新
新特性
Furion.Xunit
拓展包,正式实现Xunit
单元测试完整支持Furion
063a034eservices.AddMonitorLogging()
日志监视器服务,支持非常灵活的日志操作 81df742Serve.Run(silence: true)
等一系列强大的静默启动功能 #I5JBSQ #I5J98T 7cced4SpecificationDocumentBuilder.GetOpenApiGroups()
方法获取底层的规范化接口分组信息 4ff03c5logger.ScopeContext()
配置日志上下文功能 #I5JC0DCorsAccessorSettings.SignalRSupport
配置选项,支持配置SignalR
跨域 #I5JREMUseUtcTimestamp
选项配置,可选择使用DateTime.UtcNow
还是DateTime.Now
,默认是DateTime.Now
#I5JSEU[OperationId]
配置,解决自定义Swagger UI
不能正确显示路由问题 #I5K1IBIHttpDispatchProxy
方式全局拦截支持多态(继承) #I5K8FS突破性变化
Furion.Xunit
拓展包,正式实现Xunit
单元测试完整支持Furion
063a034eFurion.Extras.DatabaseAccessor.SqlSugar
拓展插件中的[SqlSugarUnitOfWork]
工作单元特性,将使用通用工作单元替换,查看最新实现文档Inject.Create()
方法,再也不需要了,框架提供了无敌强大的Serve.Run()
静默启动方式 200848eServe.Run
的ConfigureConfiguration
方法参数,由configuration => {}
改为(environment, configuration) => {}
83c97bb问题修复
[LoggingMonitor]
异常消息日志级别为Information
错误问题 ab46cdfEFCore
时控制台出现无限打印问题 #I5J474[LoggingMonitor]
针对byte[]
类型参数输出过大问题 5380f35ErrorCode
问题 #I5IX2RIRepository
仓储导致死循环问题 #I5IX2RMvc
默认手动验证和Furion
全局验证冲突问题 2a06c39Serve.Run()
模式不支持SuperSocket
第三方包问题,原生是支持的。186ca0aSignalR
跨域错误问题 #I5JREM[LoggingMonitor]
将Oops.Oh
和Oops.Bah
记录到了错误日志中,默认应该是Information
且提供可配置 #I5JZ1HSwagger UI
之后个别UI
要求必须配置operationId
,否则出现guid
序号 #I5K1IBNotFoundResult
和NotFoundObjectResult
无效问题 #I5KALZ[LoggingMonitor]
解析方法参数但前端未传入时出现错误问题 #I5KC5P[LoggingMonitor]
无法序列化IQueryable
返回值问题 #I5KJD1[LoggingMonitor]
不能记录全局验证错误问题 b44087d[LoggingMonitor]
存在注册顺序差异问题 b44087d