适配 .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-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

2022-09-15

NET 7 RC 1 发布了, .NET 7 将有两个支持生产的候选版本 (RC), 这是第一个。 下载 .NET 7 Release Candidate 1 .NET 7 RC 1 中的新增功能: 支持在 Windows Server 2019 上默认使用 ICU 库 Windows Server 2019 缺乏 ICU 支持。在 Windows Server 2019 上运

2022-09-04

项目信息 开源地址:https://gitee.com/dotnetchina/Furion 文档地址:https://dotnetchina.gitee.io/furion/ 开源协议:MIT MIT 许可证 版权 (c) 2020-2022 百小僧, Baiqian Co.,Ltd 和所有贡献者 特此免费授予任何获得本软件副本和相关文档文件(

2022-07-14

LibreOffice 7.4 RC1 现已发布。自上次 LibreOffice 7.4 Beta1 发布以来,已向代码库提交了 280 个 commit,121 个 bug 得到了修复。LibreOffice 7.4 的开发工作于 2021 年 11 月启动,计划于 2022 年 8 月中旬正式发布,并且这个系列将被支持到 202

2022-04-21

Spring Security 的三个分支发布了更新:5.6.3、5.5.6 和 5.7.0-RC1。 5.7.0-RC1 主要变化 引入 SecurityContextHolderFilter - 用于显式保存 SecurityContext 为 Cross Origin Policies headers 添加 DSL 支持 支持为加密客户端配置 PKCE

2022-09-07

l 选项 新的 ZipArchive 方法 以及其他性能改进... 预计未来至少还将会有五个候选版本,下一个版本即第二个候选版本 (RC 2),计划于 2022 年 9 月 15 日发布;而 PHP 8.2.0 GA 版本预计在 11 月 24 日左右。 可参阅 NEWS 文件或

2022-08-12

序言 在重构 Furion 的定时任务模块时发现 Hangfire 开源的 Cron 解析工具类不够强大:不支持星期,不支持完整的 Cron 表达式解析。翻遍了 Github 和 Nuget 没找到一个完完整整支持 Cron 的 .NET 库。 所以,机会来了。😊 TimeCrontab &n

2022-02-24

袖气质,但是他话语中透出的意思却非常地明确:Windows 未来将不再具备从前的重要地位,云和移动才是微软未来的核心。 从这时起,微软打出了“拥抱开源”的旗号。而他们做的第一件事,就是官方支持 .NET 的跨平台工

2022-07-14

NET 7 发布了第 6 个预览版。 主要变化包括: 改进 Generic Math,方便 API 作者的使用 为 ML.NET 引入新的 Text Classification API,增加了最先进的深度学习技术对于自然语言处理 对源代码生成器的多项改进 用于 Re

2022-06-16

NET 7 发布了第 5 个预览版。 主要变化包括: 改进 Generic Math,方便 API 作者的使用 为 ML.NET 引入新的 Text Classification API,增加了最先进的深度学习技术对于自然语言处理 对源代码生成器的多项改进 用于 Reg

2022-07-10

Karafka v2.0.0.rc1 现已发布。Krafka 是一个用于简化基于 Apache Kafka 的 Ruby 应用开发的框架,它允许开发者在使用异步 Kafka 消息时使用类似于标准 HTTP 约定(params 和 params_batch)的方法。Karafka 不仅可以处理传入的消息,而且还提供了

2022-08-29

Eclipse 和 Equinox 4.25 (2022-09) 发布了第一个 RC 版本。 Eclipse 下载地址 https://download.eclipse.org/eclipse/downloads/drops4/S-4.25RC1-202208241800/ 更新内容 https://www.eclipse.org/eclipse/news/4.25/ 升级已有安装版本(不要在生产环境进行) https://down

2022-06-07

Linux 5.19 第一个候选版本已经发布了,这个版本的体积有点大,很大程度是因为合并了近 50 万行新的图形驱动程序代码。 候选版本大约 60% 的内容是各种驱动程序,新的 AMD 图形驱动代码顺利推动了 Arm 多平台通用工作的完善。