.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!

.NET 8 Release Candidate 1 (RC1)发布:ASP.NET Core重大改进来袭!

近日,.NET 8 Release Candidate 1 (RC1)正式发布,这是在今年晚些时候计划发布的最终 .NET 8 版本之前的两个候选版本中的第一个。此版本包含了大部分计划中的功能和变更,可供开发者提前尝鲜。不过,部分领域(尤其是 Blazor)仍有重大变更待完成,预计将在下一个 .NET 8 候选版本中落地。

新功能概览

服务器和中间件

默认情况下,HTTP/3 被禁用。此前启用 HTTP/3 时,某些防病毒软件会在启动带有调试的应用程序时提示是否允许网络访问,影响开发体验。因此,此次恢复到 .NET 7 的行为。若要重新启用 HTTP/3,可通过以下两种方式:

为每个端点设置
var builder = WebApplication.CreateBuilder(args);builder.WebHost.ConfigureKestrel((context, options) =>
{options.ListenAnyIP(5001, listenOptions =>{listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;listenOptions.UseHttps();});
});
配置默认协议
var builder = WebApplication.CreateBuilder(args);builder.WebHost.ConfigureKestrel((context, options) =>
{options.ConfigureEndpointDefaults(listenOptions =>{listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;listenOptions.UseHttps();});
});

API 编写

在最小 API、MVC 和 SignalR 中支持键入服务。从 .NET 8 RC1 起,开发者可使用 [FromKeyedServices("keyName")] 属性注释目标参数来利用此特性。示例代码如下:

using Microsoft.AspNetCore.Mvc;var builder = WebApplication.CreateBuilder(args);builder.Services.AddKeyedSingleton<ICache, BigCache>("big");
builder.Services.AddKeyedSingleton<ICache, SmallCache>("small");
builder.Services.AddControllers();var app = builder.Build();app.MapGet("/big", ([FromKeyedServices("big")] ICache bigCache) => bigCache.Get("date"));app.MapGet("/small", ([FromKeyedServices("small")] ICache smallCache) => smallCache.Get("date"));app.MapControllers();app.Run();public interface ICache
{object Get(string key);
}
public class BigCache : ICache
{public object Get(string key) => $"Resolving {key} from big cache.";
}public class SmallCache : ICache
{public object Get(string key) => $"Resolving {key} from small cache.";
}[ApiController]
[Route("/cache")]
public class CustomServicesApiController : Controller
{[HttpGet("big-cache")]public ActionResult<object> GetOk([FromKeyedServices("big")] ICache cache){return cache.Get("data-mvc");}
}public class MyHub : Hub
{public void Method([FromKeyedServices("small")] ICache cache){Console.WriteLine(cache.Get("signalr"));}
}

Blazor

Blazor Web App 模板更新

在 .NET 8 中,Blazor 功能不断增强,可满足各类 Web UI 需求。现在,可根据请求静态地从服务器呈现 Blazor 组件,还能实现体验增强、导航和表单处理增强等功能。为优化加载时间,Blazor 能在运行时自动选择使用 Blazor Server 或 Blazor WebAssembly。

此版本中,Blazor Web App 模板得到清理和改进,新增多个配置选项:

  • 使用交互式 WebAssembly 组件:支持基于 Blazor WebAssembly 的交互式 WebAssembly 渲染模式。
  • 使用交互式 Server 组件:支持基于 Blazor Server 的交互式 Server 渲染模式。
  • 包括示例页面:选择后,项目将包含基于 Bootstrap 样式的示例页面和布局;若只需空项目,可禁用该选项。

若同时选择 WebAssembly 和 Server 渲染模式,模板将使用自动渲染模式,先使用 Server 模式,待运行时下载完成后切换到 WebAssembly 渲染模式。

此外,模板的文件结构和组件也有诸多改进,如组件名称和内容清理、移除不必要的属性等,简化了应用程序交互性的实现过程。

从额外的程序集中发现用于静态服务器呈现的组件

可使用 AddAdditionalAssemblies() 方法配置额外程序集,用于发现静态服务器呈现的 Blazor 组件:

app.MapRazorComponents<App>().AddAdditionalAssemblies(typeof(Counter).Assembly);
路由改进

Blazor 路由实现与 ASP.NET Core 路由统一,为 Blazor 路由器添加了复杂段、默认值和所有内置路由约束的支持。

触发页面刷新

调用 NavigationManager.Refresh() 可触发页面刷新,若可能使用增强的页面导航刷新,否则触发完整页面刷新;使用 NavigationManager.Refresh(forceReload: true) 可强制执行完整页面刷新。

将任意属性传递给 QuickGrid

QuickGrid 组件现在可将额外属性传递给呈现的元素:

<QuickGrid Items="@FilteredPeople" custom-attribute="somevalue" class="custom-class-attribute">
确定表单字段是否具有相关的验证消息

新 API EditContext.IsValid(FieldIdentifier) 可用于确定字段是否有效,无需获取验证消息。

配置.NET WebAssembly 运行时

可在运行时使用 configureRuntime 函数配置 WebAssembly 上的各种 .NET 运行时选项:

<script>Blazor.start({configureRuntime: dotnet => {dotnet.withEnvironmentVariable("CONFIGURE_RUNTIME", "true");}});
</script>
在预先编译(AOT)编译后修剪.NET IL

新的 MSBuild 选项可在执行预先编译(AOT)到 WebAssembly 后删除编译方法的 .NET IL,测试显示可将 _framework 文件夹大小减小 1.7% 到 4.2%:

<PropertyGroup><RunAOTCompilation>true</RunAOTCompilation><WasmStripILAfterAOT>true</WasmStripILAfterAOT>
</PropertyGroup>

Identity

移除 username 属性,简化映射的身份 API,使用户名和电子邮件相同。

单页应用程序(SPA)

Visual Studio 模板用于使用 ASP.NET Core 与流行前端 JavaScript 框架(如 Angular、React 和 Vue)时,支持标准的 .NET 模板选项,如指定目标 .NET 框架版本、启用 OpenAPI 支持等。

度量

在 .NET 8 RC1 中,新的度量重命名以遵循 OpenTelemetry Semantic Conventions。此更改基于用户和库作者的反馈,有助于 .NET 的内置度量和更广泛的 .NET 生态系统遵循现有标准。例如,ASP.NET Core 的主要 HTTP 度量与 OpenTelemetry 的计数器完全匹配,其他计数器也使用语义约定的命名标准。

已知问题

ASP.NET Redis 基于输出缓存

在 ASP.NET 中,基于 Redis 的输出缓存存在回归问题,此功能在 RC1 中无法工作,不过已找到原因并将在 RC2 中解决。

Blazor Web App 模板创建多个计数器组件

启用交互式 WebAssembly 组件时,模板生成了不必要的组件。可将服务器项目中的组件指令复制到客户端项目后删除该组件,然后在 Program.cs 中调用 Counter 以发现该组件。

开始使用

若要使用 .NET 8 RC1 中的 ASP.NET Core,需安装 .NET 8 SDK。使用 Windows 并使用 Visual Studio 的开发者,建议安装最新的 Visual Studio 2022 预览版;使用 Visual Studio Code 的开发者,可尝试新的 C# Dev Kit。

若要将现有的 ASP.NET Core 应用程序从 .NET 8 预览 7 升级到 .NET 8 RC1,需将应用程序的目标框架更新为 .net8.0,并将所有 Microsoft.AspNetCore.* 和 Microsoft.Extensions.* 包引用更新为 .8.0.0-rc.1.*。同时,建议查看 ASP.NET Core .NET 8 中的破坏性变更的完整列表。

总体而言,.NET 8 Release Candidate 1 (RC1) 为 ASP.NET Core 带来了众多实用的新功能和改进,尽管存在一些已知问题,但仍值得开发者提前尝试,为后续项目开发做好准备。开发者可通过在 GitHub 上提交问题,反馈对这些新改进的看法。 ======================================================================
前些天发现了一个比较好玩的人工智能学习网站,通俗易懂,风趣幽默,可以了解了解AI基础知识,人工智能教程,不是一堆数学公式和算法的那种,用各种举例子来学习,读起来比较轻松,有兴趣可以看一下。
人工智能教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/915138.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/915138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins pipeline 部署docker通用模板

Jenkinsfile: Docker的NETWORK_NAME不要使用bridge默认网络&#xff0c;要使用自定义的网络如test默认 bridge 网络&#xff1a;容器间不能用名字互相访问&#xff0c;只能用 IP。自定义网络&#xff1a;容器间可以用名字互相访问&#xff0c;Docker 自动做了 DNS 解析。pipeli…

【每日算法】专题十五_BFS 解决 FloodFill 算法

1. 算法思想 Flood Fill 问题的核心需求 给定一个二维网格&#xff08;如像素矩阵&#xff09;、一个起始坐标 (x, y) 和目标颜色 newColor&#xff0c;要求&#xff1a; 将起始点 (x, y) 的颜色替换为 newColor。递归地将所有与起始点相邻&#xff08;上下左右&#xff09; …

ESLint 完整功能介绍和完整使用示例演示

以下是ESLint的完整功能介绍和完整使用示例演示&#xff1a; ESLint 完整功能介绍 一、核心功能静态代码分析&#xff1a; 通过解析JavaScript/TypeScript代码为抽象语法树&#xff08;AST&#xff09;&#xff0c;识别语法错误、潜在问题&#xff08;如未定义变量、未使用变量…

解决问题七大步骤

发现问题后寻找解决方案的流程可以细化为 7个核心步骤&#xff0c;每个步骤包含具体措施、信息源和关键技巧&#xff0c;形成“从自查到验证、从独立解决到寻求帮助”的完整闭环。以下是完善后的流程&#xff1a; 一、明确问题与初步自查&#xff08;前提&#xff1a;减少无效搜…

思维链(CoT)技术全景:原理、实现与前沿应用深度解析

一、核心概念与原理 定义与起源 CoT 是一种引导大语言模型&#xff08;LLM&#xff09;显式生成中间推理步骤的技术&#xff0c;通过模拟人类逐步解决问题的过程&#xff0c;提升复杂任务&#xff08;如数学证明、多步逻辑推理&#xff09;的准确性。该概念由 Google Brain 团…

实验-华为综合

华为综合实验 一 实验拓扑二 实验配置交换机2 vlan batch 10 20 int e0/0/2 port link-type access port default vlan 10 int e0/0/1 port link-type access port default vlan 20 int e0/0/3 port link-type trunk port trunk allow-pass vlan alltelnet交换机3 链路类型配置…

Matlab打开慢、加载慢的解决办法

安装完毕后直接打开会非常慢&#xff0c;而且打开了之后还得加载很久才能运行 解决办法如下&#xff1a; 1.找到路径“D:\Program Files\Polyspace\R2020a\licenses”&#xff08;我是把matlab安装在D盘了&#xff0c;如果是其他盘修改路径即可&#xff09;&#xff0c;该路径记…

混沌趋势指标原理及交易展示

1. 引言在金融市场交易中&#xff0c;尤其是加密货币合约交易&#xff0c;趋势跟踪是最主流的策略之一。然而&#xff0c;传统趋势指标如均线、MACD等存在明显的滞后性&#xff0c;往往在趋势确立后才发出信号&#xff0c;导致交易者错失最佳入场时机。更糟糕的是&#xff0c;市…

Java面试宝典:Maven

一、Maven的本质与核心价值 项目管理革命 POM驱动:通过pom.xml文件定义项目结构、依赖、构建规则,实现标准化管理()。示例配置: <dependencies> <dependency> <groupId>org.springframework

可靠消息最终一致性分布式事务解决方案

之前文章写过主流的一些 分布式事务的解决方案&#xff0c;但其实工作中很少有一些高并发的业务中去使用这些方案&#xff0c;因为对于高并发的场景来说&#xff0c;引入这些方案的性能损耗太大&#xff0c;且对系统事务侵入性太强影响系统稳定性。 所以在高并发的业务中&…

ISIS基础

拓扑计算方式 模型 支持的网络 支持的地址OSPF SPF TCP/IP IP网络 IPv4地址ISIS SPF OSI CLNP网络 NSAP地址集成ISIS SPF TCP/IP IP网络 NSAP地址&#xff0c;但可以支持IPv4地址12. …

基于ASP.NET+SQL Server实现(Web)排球赛事网站

排球赛事网的设计与实现摘要随着近几年来计算机技术、网络技术及相应软件技术的迅猛发展&#xff0c;人们的生活已越来越离不开计算机了&#xff0c;而且总是要花费很多时间在它上面。一直以来&#xff0c;排球作为一项大众喜爱的运动&#xff0c;得到广泛传播。随着各项排球赛…

【PTA数据结构 | C语言版】根据后序和中序遍历输出前序遍历

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果&#xff0c;输出该树的前序遍历结果。 输入格式: 第一行给出正整数 n (≤30)&#xff0c;是树中结点的个数。随后两行&#xff0c;每行给出…

Java HashMap高频面试题深度解析

在 Java 面试中&#xff0c;HashMap 是必问的核心知识点&#xff0c;以下是高频问题和深度解析框架&#xff0c;助你系统性掌握&#xff1a;一、基础概念HashMap 的本质是什么&#xff1f; 基于哈希表的 Map 接口实现&#xff0c;存储键值对&#xff08;Key-Value&#xff09;非…

GitHub Pages无法访问以点号.开头的目录

目录 前言 Jekyll 是什么 启用访问 总结 前言 一些前端项目经常会使用GitHub Pages进行部署展示&#xff0c;但是GitHub Pages 使用的是 Jekyll 引擎&#xff0c;对 Jekyll 引擎不熟悉的小伙伴就会出现如文章标题所言的情况。 Jekyll 是什么 Jekyll 是 GitHub Pages 默认…

JS JSON.stringify介绍(JS序列化、JSON字符串 )(遍历输入值的所有可枚举属性,将其转换为文本表示)缓存序列化、状态管理与时间旅行、replacer

文章目录JSON.stringify 全解析1. 基本概念2. 序列化原理1. 对于原始类型&#xff0c;直接转换为对应的字符串表示2. 对于对象和数组&#xff0c;递归处理其每个属性或元素3. 应用特殊规则处理日期、函数、Symbol 等特殊类型4. 检测并防止循环引用5. 应用 replacer 函数或数组进…

SQLite / LiteDB 单文件数据库为何“清空表后仍占几 GB”?——原理解析与空间回收实战

关键词&#xff1a; SQLite、LiteDB、VACUUM、WAL、auto_vacuum、文件瘦身、数据库维护在嵌入式或桌面、IoT 网关等场景&#xff0c;很多同学都会选择单文件数据库&#xff08;SQLite、LiteDB、SQL CE…&#xff09;。 最近群里一位朋友反馈&#xff1a;“我的 test.db 已经把业…

如何加固Web服务器的安全?

Web服务器是用户和公司联系的桥梁&#xff0c;Web服务器为用户交付网页内容和提供Web应用。正因为Web服务器是面向互联网的&#xff0c;所以成为了网络的攻击经常利用的一个入口。Web 服务器是企业数字化转型的 “前沿阵地”&#xff0c;其安全性不仅关乎技术层面的稳定运行&am…

MyBatis:配置文件完成增删改查_添加

1 实现添加操作 编写接口方法:Mapper接口编写sql语句&#xff1a;sql映射文件<insert id"add">insert into tb_brand(brand_name,company_name,ordered,description,status)values(#{brandName},#{companyName},#{ordered},#{description},#{status});</ins…

SGLang 推理框架核心组件解析:请求、内存与缓存的协同工作

SGLang 推理框架核心组件解析&#xff1a;请求、内存与缓存的协同工作 在当今大语言模型&#xff08;LLM&#xff09;服务的浪潮中&#xff0c;高效的推理框架是决定服务质量与成本的关键。SGLang 作为一个高性能的 LLM 推理和部署库&#xff0c;其内部精巧的设计确保了高吞吐量…