码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • .NET 7 来了!!!


    合集 - .NET(21)
    1..NET Core 环境搭建2022-03-162..Net Core IOC DI(依赖注入)2022-03-163..NET Core 读取配置技巧 - IOptions 接口2022-05-254..Net Core 依赖注入(IOC) 一些简单的使用技巧2022-05-065..Net Core 可为Null的类型2022-04-026..Net Core 配置文件 appsettings.json2022-03-257..NET 反向代理-YARP 部署Https(SSL)2022-09-218..NET 反向代理-YARP 根据域名转发2022-09-21
    9..NET 7 来了!!!2022-09-19
    10..NET 反向代理-YARP2022-09-0711..Net Core 配置文件读取 - IOptions、IOptionsMonitor、IOptionsSnapshot2022-09-0212..NET Core 实现后台任务(定时任务)Longbow.Tasks 组件(三)2022-07-2313..NET Core 实现后台任务(定时任务)BackgroundService(二)2022-07-1314..NET Core 实现后台任务(定时任务)IHostedService(一)2022-07-0815..Net WebApi 中的 FromBody FromForm FromQuery FromHeader FromRoute2022-10-0716..NET 反向代理 YARP 代理 GRPC2022-09-2817..Net 7 C#11 原始字符串2022-09-2618..NET 反向代理 YARP 跨域请求 CORS2022-09-2619..NET 反向代理 YARP 自定义配置提供程序(Configuration Providers)2022-09-2520..NET 反向代理 YARP 通过编码方式配置域名转发2022-09-2421..NET 部署 多域名 Https(SSL)通过代码方式2022-09-23
    收起

    .NET 7 首个RC(发布候选)版本

      最近 .Net 的大事件,就是微软发布了.NET 7的首个RC(发布候选)版本,而据微软发布的消息,这是 .NET 7 的最后一个预览版,下一个版本将是第一个候选版本 (RC),发布时间定于 2022 年 11 月 8 日至 10。

      .Net 7 适用于 Windows、macOS 与 Linux,已经支持在生产环境上使用(在这里还是建议小伙伴们稳重一点,先用小项目试试水)。而微软提供的日志,显示,NET 7 RC 1 首次加入云原生支持,这将使得开发者能够更加便利的实现应用上云,或在云端直接构建并运行应用的操作,理论上大大提升了开发效率、生产效率。

    除此之外,.NET 7 RC 1还带来了大量更新与优化,具体如下:

    -.NET MAUI:.NET多平台应用程序 UI (MAUI) 将 Android、iOS、macOS 和 Windows API 统一到一个API中,开发者可以编写一个在多平台上本机运行的应用。作为.NET 7的一部分,.NET MAUI提供了一个项目来处理跨设备及其平台的多目标。

    -ARM64:.NET可帮助开发者构建在ARM设备上运行的应用,.NET 7将迎来多项改进。

    -现代化:为了使升级体验尽可能无缝,.NET升级助手为开发者提供分步指导体验,通过分析和改进项目文件、代码文件和依赖项来现代化.NET应用。

    -性能:.NET 7是目前最快的.NET。.NET 7对反射、堆栈替换 (OSR)、启动时间、本机 AOT、循环优化和许多其他领域进行了超过一千项影响性能的改进。

    目前,微软已经放出了.NET 7 RC 1的链接,有需求的用户可以前往下载,传送门

    而微软这边也有相关的博客,感兴趣的小伙伴可以去看看,因为是英文的,浏览器翻译出来的懂得都懂,我就不献丑总结了,硬要说,就是一个字:快!传送门

    .NET 7 最新更新

    下面是摘抄的一些资料,希望能让小伙伴们更加容易了解到 .Net 7

    使用 System.LINQ 简化排序

    dotnet/runtime#67194

    System.Linq 现在有方法 Order 和 OrderDescending,它们可以根据 T 对 IEnumerable 进行排序。
    IQueryable 现在也支持这个。
    注意:此更改不会向 System.Linq.Expressions 引入新的语言功能。
    用法
    以前,您必须通过引用自己的值来调用 OrderBy/OrderByDescending。

    var data = new[] { 2, 1, 3 };
    var sorted = data.OrderBy(static e => e);
    var sortedDesc = data.OrderByDescending(static e => e);

    现在,您可以编写为:

    var data = new[] { 2, 1, 3 };
    var sorted = data.Order();
    var sortedDesc = data.OrderByDescending();

    支持 Unix 文件模式

    dotnet/runtime PR#69980

      以前,.NET没有对获取和设置Unix文件权限的内置支持,Unix文件权限控制哪些用户可以读、写和执行文件和目录。P/Invoking 手动调用系统并不总是那么容易,因为有些在不同的发行版上以不同的方式公开。 例如,在Ubuntu上你可能需要调用__xstat,在RedHat上调用stat等。 这使得一流的 .NET API 很重要。
    在预览版7 中,我们引入了一个新的枚举:

    复制代码
    public enum UnixFileMode
    {
      None,
      OtherExecute, OtherWrite, OtherRead,
      GroupExecute, GroupWrite, GroupRead,
      UserExecute, UserWrite, UserRead,
       ...
    }
    复制代码

      以及 API File.GetUnixFileMode 和 File.SetUnixFileMode,它们在路径或句柄(文件描述符)上获取和设置文件模式。 以及 FileInfo 和 DirectoryInfo 上一个名为 UnixFileMode 的新属性。
    还有一个新的 Directory.CreateDirectory 重载和 FileStreamOptions 上的一个新属性,允许您一次性创建具有特定模式的目录或文件。 请注意,当您使用这些时,仍会应用 umask,就像您在 shell 中创建目录或文件一样。
    用法

    复制代码
    // 创建具有特定权限的新目录
    Directory.CreateDirectory("myDirectory", UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute);
    
    // 创建具有特定权限的新文件
    FileStreamOptions options = new()
    {
    
    Access = FileAccess.Write,
    Mode = FileMode.Create,
    UnixCreateMode =  UnixFileMode.UserRead | UnixFileMode.UserWrite,
    };
    using FileStream myFile = new FileStream("myFile", options);
    
    // 获取现有文件的模式
    UnixFileMode mode = File.GetUnixFileMode("myFile");
    
    // 设置现有文件的模式
    File.SetUnixFileMode("myFile", UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute);
    复制代码

    查看所有新的 Unix 文件模式 API。

    非常感谢 tmds,他是 Red Hat 的长期贡献者,他提出、设计和实现了这个功能。

    低级结构改进:ref 字段支持

      .NET 7 运行时现在完全支持 ByRefLike 类型(即 ref struct)中的 ref 字段。 在这个备受期待的功能背后有广泛的语言设计,用户可以阅读:低级结构改进。 借助此功能,以前需要在运行时进行专门处理的类型(例如,Span 和 ReadOnlySpan)现在可以在 C# 中完全实现。

    LibraryImport P/Invoke 源生成器

    dotnet/runtime#60595

      LibraryImport 源生成器现在以受支持的方式提供给所有用户。 超过18个月的努力,这个源生成器被设计成大多数DllImport使用的直接替代品,无论是在运行时产品和用户代码中。 .NET 库都采用了 LibraryImport,并且自 .NET 7 预览版 1 以来一直附带源代码生成的编组代码。
      源代码生成器随 .NET 7 TFM 一起提供,可随时使用。 为了获得源生成编组的好处,请将 DllImport 的用法替换为 LibraryImport。 有分析器和固定器可以帮助完成这个过程。
    用法
    前

    public static class Native
    {
        [DllImport(nameof(Native), CharSet = CharSet.Unicode)]
        public extern static string ToLower(string str);
    }

    后

    复制代码
    public static class Native
    {
        [LibraryImport(nameof(Native), StringMarshalling = StringMarshalling.Utf16)]
        public static partial string ToLower(string str);
    }
    复制代码

      有一个分析器和代码修复程序可以自动将您的 DllImport 属性转换为 LibraryImport。 对于预览版7,它是可选的。 将 dotnet_diagnostic.SYSLIB1054.severity = suggestion添加到您的 编辑器配置 文件以启用转换分析器作为诊断。
      有关编组自定义类型的设计文档和详细信息可以在 docs/design/libraries/LibraryImportGenerator 找到。

    ClientWebSocket 升级响应详细信息

    dotnet/runtime#25918

      ClientWebSocket 以前没有提供有关升级响应的任何详细信息。 但是,有关响应标头和状态代码的信息在失败和成功方案中可能都很重要。
      在失败的情况下,状态码可以帮助区分可重回和不可重回错误(服务器根本不支持 Web 套接字,而只是一个微小的暂时性错误)。 标头还可能包含有关如何处理这种情况的附加信息。
      即使在成功的 Web 套接字连接的情况下,标头也很有帮助,例如,它们可以包含绑定到会话的token、一些与子协议版本相关的信息,或者服务器可能即将关闭等。
    用法

    复制代码
    ClientWebSocket ws = new();
    ws.Options.CollectHttpResponseDetails = true;
    try
    {
        await ws.ConnectAsync(uri, default);
        // 成功场景
    
        ProcessSuccess(ws.HttpResponseHeaders);
        ws.HttpResponseHeaders = null; // 清理(如果需要)
    }
    catch (WebSocketException)
    {
        // 失败场景
        if (ws.HttpStatusCode != null)
        {
            ProcessFailure(ws.HttpStatusCode, ws.HttpResponseHeaders);
        }
    }
    复制代码

    循环优化

    在预览版 7 中,我们对循环优化进行了多项改进。
    • PR #71184 加强了对循环表的检查,以便更好地检查循环完整性,如 #71084 中所述。
    • PR #71868 不要在循环周围压缩块
    • PR #71659 在非轮廓方法中调整具有轮廓内循环的块的权重
    • PR #71504 循环提升的改进
    • PR #70271 优化多维数组访问。 它将延迟提高了 67%(性能链接)。
    此外,在 PR #71236 中为异常处理 函数启用了热/冷拆分。

    原文链接:https://www.cnblogs.com/ysmc/p/16709631.html

  • 相关阅读:
    【微服务】微服务常见概念
    看动画,学Java基础教程13:变量
    JavaSE期末经典项目—>>图书管理系统
    左旋肉碱除铁,左旋肉碱铁离子超标怎么解决?
    MYSQL:索引与锁表范围简述
    什么是邮件签名证书?
    立新能源深交所上市:市值55亿 哈密国投与国有基金是股东
    优化Vue项目架构和模块化:提升应用性能与开发效率
    Linux权限的认识
    一代人有一代人的使命
  • 原文地址:https://www.cnblogs.com/ysmc/p/16709631.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号