.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
英文地址,請注明出處:http://en.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;其內部精巧的設計確保了高吞吐量…