适配 .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),携手共进,重新起航,感恩遇见,感恩信任。


项目信息


准备工作

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

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


文档更新

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

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

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


本期更新

  • 新特性

    • [新增] 新增友好异常可控制是否输出错误日志配置 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()
    {
    }
}
优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/210382/furion-4-4-4-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。