Furion 2.0.0:.NET 开发者不可忽视的框架

栏目: 软件资讯 · 发布时间: 5年前

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

Furion 2.0.0:.NET 开发者不可忽视的框架

Furion 2.0.0:.NET 开发者不可忽视的框架 Furion 2.0.0:.NET 开发者不可忽视的框架 Furion 2.0.0:.NET 开发者不可忽视的框架 Furion 2.0.0:.NET 开发者不可忽视的框架 Furion 2.0.0:.NET 开发者不可忽视的框架 Furion 2.0.0:.NET 开发者不可忽视的框架

让 .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 贡献代码的朋友。

Furion 2.0.0:.NET 开发者不可忽视的框架

2.0.0 版本为什么来的那么快

通过上面的大事记可以看出,Furion 从 1.0.0 版本过渡到了 2.0.0 版本只用了 5 个月的时间。相对于大部分的开源软件来说,这是非常短的主版本迭代周期。但是为什么依然需要发布 2.0.0 版本呢?有以下原因:

  1. 创造 Furion 之初没想到该项目短短几个月发展的如此之快,所以 1.x 版本很多功能代码都为了功能开发而开发,在架构设计、灵活维护性及性能方面处理不妥,导致后续拓展新功能带来了不少麻烦,可以说是在功能中制造更多的漏洞。
  2. 在这 7 个月开源中,每天面对使用者的庞大需求及用户指数增长的威压下,对 .NET 有了更高层次的理解。
  3. 开源过程中认识了很多朋友,也收获了 112 个贡献者对代码的改进,在他们贡献的代码中也让自己成长了不少。
  4. 最后一个是为了迎接 .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", "每分钟执行一次");

Furion 2.0.0:.NET 开发者不可忽视的框架

亮点三:支持跨平台的守护进程服务

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);
            }
        }
    }
}

Furion 2.0.0:.NET 开发者不可忽视的框架

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

Furion 2.0.0:.NET 开发者不可忽视的框架

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

Furion 2.0.0:.NET 开发者不可忽视的框架

本期更新

  • 新特性

    • [新增] 控制台应用程序及 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
  • 其他更改

    • [改进] 启动时程序集扫描类型 #I3K0SN
    • [改进] App.GetConfig<>("key") 不支持获取单个值问题 #I3ILF1
    • [改进] UrlEncode 应该用 Uri.EscapeDataString() 而不是 HttpUtility.UrlEncode #I3ICTK
  • 文档变化

    • [新增] 定位任务、后台任务文档 #I3JHHG
    • [新增] 辅组角色服务文档 #I3K5GN
    • [更新] 动态 WebAPI、规范化文档、数据库上下文文档
  • 问答答疑

    • [答疑] 数据校验,自定义 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
  • 不做实现

文档地址

项目地址

Furion 遵循 Apache-2.0 开源协议,欢迎大家提交 PR 或 Issue。喜欢可以给个 Star


以上所述就是小编给大家介绍的《Furion 2.0.0:.NET 开发者不可忽视的框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Alone Together

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》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具