内容简介:让 .NET 开发更简单,更通用,更流行。 发展大事记 自 Furion 诞生一来得到高速发展最大的原因是弥补了 .NET 这么多年没有对标 Java Spring 的框架,所以 Furion 的诞生迅速吸引了非常多的 .NET 开发者,QQ 群成员...

让 .NET 开发更简单,更通用,更流行。
发展大事记
自 Furion 诞生一来得到高速发展最大的原因是弥补了 .NET 这么多年没有对标 Java Spring 的框架,所以 Furion 的诞生迅速吸引了非常多的 .NET 开发者,QQ 群成员达到了 5500 人+。
以下是 Furion 的发展大事记:
- 2020 年
- 2020 年 06 月 29 日,在百小僧公司成立 8 周年之际在 Gitee 平台创建了 Fur 仓库。
- 2020 年 09 月 01 日,正式写下第一行代码。
- 2020 年 10 月 22 日,Fur 在 Gitee 平台获得 1000 stars.
- 2020 年 11 月 11 日,单身节当天发布了 1.0.0 正式版。
- 2020 年 11 月 20 日,Fur 改名为 Furion。
- 2020 年 11 月 23 日,Furion Logo 由之前的 奶牛 更换为 袋鼠。
- 2020 年 12 月 22 日,Furion 在 Gitee 平台获得 2000 stars。
- 2021 年
- 2021 年 02 月 20 日,Furion 捐赠项目到 dotNET China 组织。
- 2021 年 03 月 05 日,Furion 在 Gitee 平台获得 3000 stars。
- 2021 年 04 月 01 日,Furion 所在群 dotNET China 突破 5000 人。
- 2021 年 04 月 06 日,Furion 在 Gitee 平台获得 4000 stars。
- 2021 年 04 月 19 日,Furion 正式发布 2.0.0 版本。
优秀的贡献者们
Furion 提供完善的代码注释和文档说明,以至于吸引了超过 110 个贡献者贡献代码。 感谢每一位为 Furion 贡献代码的朋友。

2.0.0 版本为什么来的那么快
通过上面的大事记可以看出,Furion 从 1.0.0 版本过渡到了 2.0.0 版本只用了 5 个月的时间。相对于大部分的开源软件来说,这是非常短的主版本迭代周期。但是为什么依然需要发布 2.0.0 版本呢?有以下原因:
- 创造 Furion 之初没想到该项目短短几个月发展的如此之快,所以 1.x 版本很多功能代码都为了功能开发而开发,在架构设计、灵活维护性及性能方面处理不妥,导致后续拓展新功能带来了不少麻烦,可以说是在功能中制造更多的漏洞。
- 在这 7 个月开源中,每天面对使用者的庞大需求及用户指数增长的威压下,对 .NET 有了更高层次的理解。
- 开源过程中认识了很多朋友,也收获了 112 个贡献者对代码的改进,在他们贡献的代码中也让自己成长了不少。
- 最后一个是为了迎接 .NET 6 版本的到来。
所以,综上所述,花了近 15 天的时间对 Furion 的底层架构进行了大面积的重构及优化,其中包括删除了近 2700 行代码,31 个文件及底层架构模式的重大调整。
2.0.0 有什么亮点
亮点一:支持控制台应用程序开发
Furion 不再局限于 Web 应用开发还额外支持控制台应用程序开发。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace FurionWorkers
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.Inject();
}
}
亮点二:内置强大的任务调度
// 每隔 1s 执行
SpareTime.Do(1000, (timer, count) => {
Console.WriteLine("现在时间:" + DateTime.Now.ToString("yyyy-MM-dd HH????????ss"));
Console.WriteLine($"一共执行了:{count} 次");
});
SpareTime.Do("* * * * *", (timer, count) => {
Console.WriteLine("现在时间:" + DateTime.Now.ToString("yyyy-MM-dd HH????????ss"));
Console.WriteLine($"一共执行了:{count} 次");
}, "cronName", "每分钟执行一次");

亮点三:支持跨平台的守护进程服务
using Furion.TaskScheduler;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace WorkerService1
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// 执行 Cron 表达式任务
await SpareTime.DoAsync("*/5 * * * * *", () =>
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}, stoppingToken, CronFormat.IncludeSeconds);
}
}
}
}

亮点四:支持 Anno + Furion 微服务开发

亮点五:功能文档已经全部完成

本期更新
新特性
- [新增] 控制台应用程序及 Worker Services 支持 #I3K4DG
- [新增] 完整任务调度功能 #I3IRUX
- [新增]
Cron表达式解析 #I3IQ9Y- [新增] 支持
Swagger自定义配置swagger.json地址模板 #I3IHMX- [新增] 支持配置动态 WebApi 区域 #I3IJAZ
- [新增] 远程请求新增支持传入服务提供器
IServiceProvider#I3IVBL- [新增] 全局配置选型
SupportPackageNamePrefixs配置,支持配置包前缀 #I3K0SN- [新增] 应用启动时支持
referenceassembly类型程序集扫描 #I3K0SN突破性变化
- [重构] 完整任务调度功能 #I3IRUX
- [重构] 日志模块功能 #I3J2K0
- [重构] 模板引擎功能 #I3J46E
- [重构] 底层
EFCoreRepository仓储 #I3J6W5- [重构] sql 字符串拓展底层代码 #I3IVCE
- [重构] 底层
SqlRepository所有逻辑代码 #I3J6V6- [重构] 数据库实体拓展方法 #I3J609
- [调整] 事件事件总线同步执行为异步方式执行 #I3J0WA
- [移除] 框架底层
HttpContext.IsAjaxRequest()拓展 #I3IVAA- [移除]
ValidationTypes.Required验证 #I3KR85问题修复
- [修复] 关闭
InjectMiniProfiler参数后内存缓存无效 #I3IHLR- [修复] 在多租户中调用
Tenant属性出现偶然性数据库上下文被释放的情况 #I3IC70- [修复] Sql 代理中如果返回基元类型抛出不能将 object 转换成对应类型的异常 #I3IC84
- [修复] 存储过程多返回值的时候,outputvalues 的 name 不是定义的 MSG 的 name,是 Msg 类型。 #I3IC7Y
- [修复] PhoneNumber 手机号验证正则表达式错误 #I3ID10
- [修复] 依赖注入 AOP 拦截无法捕获内部异常 #I3IGCC
- [修复] 全局拦截标记异常已被处理后异常过滤器依然执行 #I3J463
- [修复] 自定义全局异常拦截器不起作用 #I3K1SJ
- [修复] 在 WorkerService 模式下,还是使用 WebHostEnvironment 来判断 Host 环境,会导致错误 #I3LCQY
- [修复] 定时任务
DoOnce抛空异常 bug #I3M0ZT其他更改
文档变化
问答答疑
- [答疑] 数据校验,自定义 ErrorMessage 无效问题 #I3ICL3
- [答疑] 最新 issue 中新增的“新增常用的 JSON 序列化方法” 会导致 AOP 拦截异常 #I3I7VE
- [答疑] Furion.DatabaseAccessor.PrivateEntityBase 中的 TenantId 数据类型设置为 object #I3IQV6
- [答疑] 有关异常拦截和处理的疑问 #I3IUFZ
- [答疑]
DataValidation在空值的情况下被忽略掉了#I3IWSM- [答疑] 日志文档没有更新 #I3J1DX
- [答疑] 对于 webapi 简单类型参数,是否可以以 json 方式提交 #I3J18I
- [答疑]
IUnifyResultProvider实现中如果UnifyModel的 type 不是范型会报错 #I3JBXF- [答疑] 如何模块化开发新功能? #I3J7ZZ
- [答疑] 建议增加微服务中间件的集成 #I3JTZQ
不做实现
文档地址
项目地址
- Gitee:https://gitee.com/dotnetchina/Furion
- GitHub:https://github.com/monksoul/Furion
- Docker:https://hub.docker.com/r/monksoul/furion
- Nuget:https://www.nuget.org/packages/Furion
Furion 遵循 Apache-2.0 开源协议,欢迎大家提交 PR 或 Issue。喜欢可以给个 Star。
以上所述就是小编给大家介绍的《Furion 2.0.0:.NET 开发者不可忽视的框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Alone Together
Sherry Turkle / Basic Books / 2011-1-11 / USD 28.95
Consider Facebookit’s human contact, only easier to engage with and easier to avoid. Developing technology promises closeness. Sometimes it delivers, but much of our modern life leaves us less connect......一起来看看 《Alone Together》 这本书的介绍吧!
