适配 .NET 7 RC1,未来已来,Furion v4.4.4 发布


.NET 未来已来,你来不来?!

重新起航

不忘初心,感恩遇见,感恩信任  

2020 年 09 月 01 日,一个叫 Fur 的开源项目在 Gitee 的襁褓中悄然诞生,她的出生仿佛带着某种使命,没有包袱,无限可能。

她缓缓的张开双眼,干净雪亮的眼睛似乎对这个世界充满了好奇,任何事物在她眼前晃过都像是直击灵魂的思想碰撞,这些在她看来都是非常宝贵的财富。她貌似有用不完的精力,一路汲取知识,升级打怪,不断奔跑,乐此不疲。

记得 2020 年 11 月 11 日的单身节,她迎来了“一岁(v1.0.0)”生日,自那以后,IT 这个大银幕上频繁出现她的身影,越来越多 .NET5 开发者转粉,像是告诉这个世界,她就是 IT 界大明星。

每一个明星都有一个好听的艺名,她当然也不例外,2020 年 11 月 20 日,经纪人百小僧为她起名为 Furion

2021 年 11 月 09 日起,她进入了每个孩子都经历过的叛逆期,年少轻狂喜新厌旧,抛弃了曾经支持她的 .NET5 粉丝们,投入到新的 .NET6 拥趸者怀抱中,自此过上了奢靡富足的生活。

但她过的不开心,时常在夜里想起 .NET5 的粉丝们,内心非常自责,但在双重工作压力下她毅然选择了忽视他们的诉求,仿佛他们就是累赘。

时间真的是好东西,曾经认为是对的,经过岁月的蹉跎历磨,渐渐的明白:不忘初心,方能始终。

这一次,不落下一人(.NET5.NET6,...,.NET N),携手共进,重新起航,感恩遇见,感恩信任。


项目信息

  • Gitee:https://gitee.com/dotnetchina/Furion
  • Github:https://github.com/MonkSoul/Furion
  • 文档:https://dotnetchina.gitee.io/furion

准备工作

早就在 .NET7 发布 Preview 版本的时候,Furion 团队就着实进行适配,前前后后耗时4个多月解决了 .NET5 升级到 .NET6、.NET7 的所有问题,保证一套代码兼容 .NET5+,支持现有的所有 Furion 版本升级,包括 0.x,1.x,2.x,3.x 版本。

在适配 .NET7 过程中主要参考微软提供了两篇文档:

  • ASP.NET Core 7 新增功能:https://docs.microsoft.com/zh-cn/aspnet/core/release-notes/aspnetcore-7.0?view=aspnetcore-7.0
  • EntityFramework 7 新增功能:https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-7.0/whatsnew


文档更新

  • 文档地址: https://dotnetchina.gitee.io/furion/

1. 内置强大实时的本地搜索

2. 添加升级或集成 .NET7 的文档

3. 改进更新日志模板规范


本期更新

  • v4.4.4 版本细节:https://gitee.com/dotnetchina/Furion/issues/I5R5TI
  • v4.4.3 版本细节:https://gitee.com/dotnetchina/Furion/issues/I5QVH3
  • v4.4.2 版本细节:https://gitee.com/dotnetchina/Furion/issues/I5QDHX
  • v4.4.1 版本细节:https://gitee.com/dotnetchina/Furion/issues/I5Q3SX
  • v4.4.0 版本细节:https://gitee.com/dotnetchina/Furion/issues/I5PQHR
  • 新特性

    • [新增] 新增友好异常可控制是否输出错误日志配置 LogError: true #I5PKJH
    • [新增] DateOnlyJsonConverter  DateOnlyOffsetJsonConverter 序列化转换器 !565
    • [新增] 事件总线 LogEnabled 配置,可控制是否输出服务日志 #I5QLY5
    • [新增] 可实现任何多套规范化结果功能,支持特定控制器,特定方法 #I5QZ37
  • 突破性变化

    • [支持] .NET 6.0.9  .NET 7.0 RC1 be5b40 1eee77b
    • [调整] 远程请求 .SetBodyBytes  .SetFiles #I5PMS5 #I5PIYI
    • [移除] 远程请求 [BodyBytes] 设计,采用 HttpFile 方式 #I5PMS5 #I5PIYI
    • [调整] 所有的 AddInject  UseInject 参数设计 #I5QCF0
    • [调整] 远程请求所有 xxxAsStreamAsync 返回值 #I5QVEB
  • 问题修复

    • [修复] 远程请求代理模式非泛型参数导致数组溢出问题 #I5Q3SN
    • [修复] LoggingMonitor 客户端 IP 记录错误 #I5QCU1 !562
    • [修复] 远程请求响应报文中包含 charset=gbk 进行序列化后乱码问题 #I5QVEB
    • [修复] 文件日志断电时丢失日志问题 db7d51b
  • 其他更改

    • [调整] JWTEncryption 静态类,支持无需注册 services.AddJwt() 使用 #I5PPKE #I5POLZ
    • [调整] 事件总线默认日志类名为 System.Logging.EventBusService #I5QLY5
  • 文档

    • [新增] .NET6 升级 .NET7 文档
    • [新增] ASP.NET 7 集成文档
    • [更新] 友好异常文档、远程请求文档、依赖注入文档、即时通讯文档、事件总线文档、Worker Service 文档、单元测试文档、入门指南文档

本期亮点

1. 文档支持全文搜索、模糊搜索、代码搜索、搜索高亮

2. 远程请求第三方 API 上传文件更加易用

代理模式

public interface IHttp : IHttpDispatchProxy
{
[Post("https://www.furion.icu/upload", ContentType = "multipart/form-data")] 
Task<HttpResponseMessage> PostXXXAsync(HttpFile file);

// 支持多个文件
[Post("https://www.furion.icu/upload", ContentType = "multipart/form-data")] 
Task<HttpResponseMessage> PostXXXAsync(HttpFile[] files);

// 支持多个文件
[Post("https://www.furion.icu/upload", ContentType = "multipart/form-data")] 
Task<HttpResponseMessage> PostXXXAsync(IList<HttpFile> files);
}

字符串模式

var bytes = File.ReadAllBytes("image.png");

// 单个文件
var result = await "https://localhost:44316/api/test-module/upload-file"
.SetContentType("multipart/form-data")
.SetFiles(HttpFile.Create("file", bytes, "image.png")).PostAsync();

// 多个文件
var result = await "https://localhost:44316/api/test-module/upload-muliti-file"
.SetContentType("multipart/form-data")
.SetFiles(HttpFile.CreateMultiple("files", (bytes, "image1.png"), (bytes, "image2.png"))).PostAsync();

3. 简化框架初始配置参数签名

public void ConfigureServices(IServiceCollection services)
{
services.AddInject(options =>
{
options.ConfigureSwaggerGen(gen => 
{
// ...
});
});
}
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
app.UseInject(configure: options =>
{
options.ConfigureSwagger(swg => 
{
// ...
});

options.ConfigureSwaggerUI(ui =>
{
 // ...
});
});
}

4. 支持多套接口规范化处理

// 替换默认的
services.AddUnifyProvider<SpeciallyResultProvider>();

// 添加更多规范化配置
services.AddUnifyProvider<SpeciallyResultProvider>("unique_name");
[UnifyProvider]// 默认的(不贴也是默认的)
public class FurionAppService: IDynamicApiController
{
}

[UnifyProvider("specially")]// 自定义的
public class FurionAppService: IDynamicApiController
{
}


[UnifyProvider]// 默认的
public class FurionAppService: IDynamicApiController
{
[UnifyProvider("specially")] // 复写默认的
public string GetName()
{
}
}

相關推薦

2022-09-23

能进行改进。 项目信息 Gitee:https://gitee.com/dotnetchina/Furion Github:https://github.com/MonkSoul/Furion 文档:https://dotnetchina.gitee.io/furion 本期更新 v4.4.8 版本细节:https://gitee.com/dotnetchina/Furion/issues/I5SKUE v4.4.7 版本

2022-11-09

08日,微软发布了 .NET7 正式版 v7.0.0,Furion 第一时间进行适配升级。 支持 Furion 所有版本:v0.x,v1.x,v2.x,v3.x,v4.x 升级到该版本,不管使用的是多老的版本。😊 本期更新 v4.7.5 版本细节:https://gitee.com/dotnetchina/Fu

2023-11-16

适配 .NET8.0 于 2023年11月15日,微软正式对外发布了 .NET8.0 正式版。 Furion 开发团队第一时间进行了升级适配,这一次升级非常顺利,升级过程中只遇到两个破坏性更改(都是运行时错误),所以迅速发布了 v4.9.0,v4.9.0.1,v4.9.1

2023-03-04

nbsp;⏱️2023.02.27 #I6HM7T 突破性变化 [升级] 适配 .NET8 Preview.1 4.8.7 ⏱️2023.02.22 [升级] 脚手架支持创建 .NET8 Preview.1 项目 4.8.7 ⏱️2023.02.22 问题修复 [修复] 审计日志 LoggingMon

2023-11-25

bsp;4.9.1.1 ⏱️2023.11.16 5ab3e43 [升级] 框架底层适配 .NET8.0 正式版 4.9.1 ⏱️2023.11.15 [升级] 框架脚手架适配 .NET8.0 正式版 4.9.1 ⏱️2023.11.15 问题修复 [修复] 定时任务设置触发

2022-11-14

f 指定 .NET 版本 4.7.6 #I603AZ [升级] 适配 .NET 6.0.11 和 .NET 7 4.7.5 7df3195 [升级] 所有脚手架至 .NET 7 4.7.5 7df3195 [调整] LogContext 类型的所有方法至 Furion.Logging 命

2023-12-26

bsp;4.9.1.1 ⏱️2023.11.16 5ab3e43 [升级] 框架底层适配 .NET8.0 正式版 4.9.1 ⏱️2023.11.15 [升级] 框架脚手架适配 .NET8.0 正式版 4.9.1 ⏱️2023.11.15 问题修复 [修复] 动态 WebAPI 

2023-12-01

bsp;4.9.1.1 ⏱️2023.11.16 5ab3e43 [升级] 框架底层适配 .NET8.0 正式版 4.9.1 ⏱️2023.11.15 [升级] 框架脚手架适配 .NET8.0 正式版 4.9.1 ⏱️2023.11.15 问题修复 [修复] Scoped.CreateUowAsync

2023-03-14

nbsp;⏱️2023.02.27 #I6HM7T 突破性变化 [升级] 适配 .NET8 Preview.1 4.8.7 ⏱️2023.02.22 [升级] 脚手架支持创建 .NET8 Preview.1 项目 4.8.7 ⏱️2023.02.22 问题修复 [修复] 定时任务服务在停止

2023-04-20

个版本代表着 Furion 在 .NET 这个平台站住了脚,也给面向未来的 v5 版本腾出了不少开发时间。 Gitee 仓库地址:https://gitee.com/dotnetchina/Furion NuGet 仓库地址:https://www.nuget.org/profiles/monk.soul 选择 Furion 的十大理由​

2023-04-11

法签名 4.8.7.10 ⏱️2023.03.14 6d56b53 [升级] 适配 .NET8 Preview.1 4.8.7 ⏱️2023.02.22 [升级] 脚手架支持创建 .NET8 Preview.1 项目 4.8.7 ⏱️2023.02.22 问题修复 [修复] TP.Wrapper 静态

2022-10-15

读问题 4.6.5 aded58d 突破性变化 [新增] 适配 .NET 6.0.10 和 .NET 7 RC2 4.6.2 6bb2fad [新增] 内置 Microsoft.AspNetCore.Mvc.NewtonsoftJson 拓展,原因是太多人使用了 4.6.5 aded58d [移除] "some log"

2022-10-07

并确认当天修复,当天发布,两年多来皆是如此。 目前 Furion 在 Nuget 平台项目总安装量破 355万次,总下载量已经破 4400万次 https://www.nuget.org/profiles/monk.soul 项目信息 Gitee:https://gitee.com/dotnetchina/Furion Github:https://githu

2022-07-15

先知 / Furion (探索版) 一个应用程序框架,您可以将它集成到任何 .NET/C# 应用程序中。 An application framework that you can integrate into any .NET/C# application. 安装 / Installation Package Manager Install-Package Furion .NET CLI dotnet a