本文會重點說明 ASP.NET Core 3.0 最重要的變更,附有相關文件的連結。
This paper highlights the most important changes in ASP.NET Core 3.0, with links to related documents.
Blazor 是 ASP.NET Core 中用於建置互動式用戶端 Web UI 與 .NET 的新架構:
Blazor is a new structure used by ASP.NET Core to build an interactive client, Web UI and. NET:
- 使用 C# 建立豐富的互動式 UI。
- 共用以 .NET 撰寫的伺服器端與用戶端應用程式邏輯。
- 將 UI 轉譯為 HTML 和 CSS 以支援寬瀏覽器,包括行動裝置瀏覽器。
Blazor 架構支援的案例:
The case of Blazor Support:
- 可重複使用的 UI 元件 (Razor 元件)
- 用戶端路由
- 元件配置
- 對相依性插入的支援
- 表單和驗證
- 在 Razor 類別庫中提供 Razor 元件
- JavaScript Interop
如需詳細資訊,請參閱 ASP.NET Core Blazor。
For more information, please refer to ASP.NET Core Blazor.
Blazor 會將元件轉譯邏輯與套用 UI 更新的方式分隔。 Blazor Server 提供在 ASP.NET Core 應用程式中將 Razor 元件裝載在伺服器上的支援。 UI 更新會透過 SignalR 連線進行處理。 ASP.NET Core 3.0 支援 Blazor Server。
Blazor separates component translation logic from application UI updates. Blazor Server provides support for loading Razor components on servers in ASP.NET Core applications. UI updates are processed via SignalR connections. ASP.NET Core 3.0 supports Blazor Server.
Blazor 應用程式也可以使用 WebAssembly 型 .NET 執行階段直接在瀏覽器中執行。 Blazor WebAssembly 處於預覽階段,ASP.NET Core 3.0 對其不 提供支援。 ASP.NET Core 的未來版本將會支援 Blazor WebAssembly。
Blazor application can also run directly in the browser using the WebAssembly.NET Implementation phase. Blazor WebAssembly is located in the preview session where ASP.NET Core 3.0 provides support to its . A future version of ASP.NET Core will support Blazor WebAssembly.
Blazor 應用程式是由元件建置的。 元件是使用者介面 (UI) 的獨立式區塊,例如頁面、對話方塊或表單。 元件是定義 UI 轉譯邏輯和用戶端事件處理常式的一般 .NET 類別。 無需 JavaScript 即可建立豐富的互動式 Web 應用程式。
The Blazor application is built by widgets. The widgets are stand-alone blocks of the user interface (UI), such as pages, dialogs, or forms. The widgets are defined as the normal.NET type of UI translation logic and client event processing. JavaScript can create a rich interactive Web application without need.
Blazor 中的元件通常會使用 Razor 語法撰寫,該語法是 HTML 和 C# 的自然混合語法。 Razor 元件與 Razor Pages 和 MVC 檢視類似,因為它們都使用 Razor。 不同於以要求-回應模型為基礎的頁面和檢視,元件是專門用來處理 UI 組合。
The parts in Blazor are usually written using the Razor syntax, which is a natural mixture of HTML and C#. Razor widgets are similar to Razor Pages and MVCs, because they all use Razor. Unlike pages and views based on the request-response model, components are specifically used to process UI combinations.
gRPC:
這是熱門的高效能 RPC (遠端程序呼叫) 架構。
This is the popular RPC architecture.
提供固定且合約優先的 API 開發方法。
Provides a fixed and contractual priority API development method.
使用如下新式技術:
Use the following new technologies:
- 用於傳輸的 HTTP/2。
- 作為介面描述語言的通訊協定緩衝區。
- 二進位序列化格式。
提供如下功能:
The following functions are provided:
- 驗證
- 雙向串流和流程控制。
- 取消和逾時。
ASP.NET Core 3.0 中的 gRPC 功能包括:
The gRPC functions in ASP.NET Core 3.0 include:
- Grpc.AspNetCore:用於裝載 gRPC 服務的 ASP.NET Core 架構。 ASP.NET Core 上的 gRPC 與標準 ASP.NET Core 功能 (如記錄、相依性插入 (DI)、驗證和授權) 整合。
- Grpc.Net.Client:.NET Core 的 gRPC 用戶端,其以熟悉的 作為建置基礎。
- Grpc.Net.ClientFactory:gRPC 用戶端與 的整合。
如需詳細資訊,請參閱 .NET 上的 gRPC 概觀。
For more information, please refer to
如需移轉指示,請參閱更新 SignalR 程式碼。 SignalR 現在會使用 來序列化/還原序列化 JSON 訊息。 如需還原 型序列化程式的指示,請參閱切換至 Newtonsoft.Json。 See . SignalR will now use the serialization/restoration JSON message. . 在 SignalR 的 JavaScript 和 .NET 用戶端中,已新增自動重新連線的支援。 根據預設,用戶端會嘗試立即重新連線,並在必要時於 2、10 和 30 秒之後重試。 如果用戶端成功重新連線,就會收到新的連線識別碼。 選擇加入自動重新連線: In the JavaScript and.NET client for SignalR, support for automatic reconnection has been added. By default, the client will try to reconnect immediately and try again after 2, 10 and 30 seconds if necessary. If the client succeeds in reconnecting, a new connection is received. Select to add autoreconnect: 透過傳遞以毫秒為基礎的持續時間陣列,即可指定重新連線間隔: By transmitting a continuous time array based on milliseconds, you can specify a reconnection: 您可以傳入自訂實作,以完全控制重新連線間隔。 You can enter custom implementation to fully control reconnecting. 如果重新連線在上次重新連線間隔之後失敗: If reconnection fails after last reconnection: 在重新連線嘗試期間,更新應用程式 UI 以通知使用者正在嘗試重新連線。 Updates the application UI to inform the user that it is trying to reconnect during the reconnection attempt. 為了在連線中斷時提供 UI 意見反應,SignalR 用戶端 API 已擴展成包含下列事件處理常式: The SignalR client API has been expanded to include the following event handling routines in order to provide UI reactions in case of disconnection: 下列程式碼會使用 在嘗試連線時更新 UI: The following code will be used to update UI while trying to connect: 下列程式碼會使用 在連線時更新 UI: The following code will be used to update UI on connection: 當中樞方法需要授權時,SignalR 3.0 和更新版本可提供自訂資源給授權處理常式。 資源是 的執行個體。 包含: SignalR 3.0 updates provide a custom for the grant of authorization when the middle method requires authorization. The resource is an executable body. Includes: 請考慮下列允許透過 Azure Active Directory 進行多個組織登入的聊天室應用程式範例。 擁有 Microsoft 帳戶的任何人都可以登入聊天,但只有擁有組織的成員才能禁止使用者或檢視使用者的聊天歷程記錄。 應用程式可能會限制特定使用者的某些功能。 Consider the following examples of a chat room application that allows multiple organizations to log in via Azure Active Directory. Anyone with a Microsoft account can log in, but only an organized member can block the user or view the user’s chat history. The application may limit some of the user’s functions. 在上述程式碼中, 會作為自訂 。 由於正在傳入 資源參數,因此內部邏輯可以: In the code above, it will be used as a custom. As the resource parameter is being entered, the internal logic can: 您可以使用程式碼在執行階段檢查的原則名稱來標記個別的中樞方法。 當用戶端嘗試呼叫個別的中樞方法時, 處理常式會執行並控制對方法的存取。 根據 控制存取的方式: You can use the code to mark a different medium method by using the name of the principle that runs the phase check. When the client tries to call a different medium method, the normal process is executed and the access to the method is controlled. According to Control Access: 建立 原則可能涉及: Create Principles that may relate to: SignalR 中樞使用端點路由。 先前已明確完成 SignalR 中樞連線: SignalR uses . 在舊版中,開發人員需要在各種位置連接控制器、Razor 頁面和中樞。 明確連線會產生一系列幾乎完全相同的路由區段: In the old version, developers need to connect controllers, Razor pages, and mediums at various locations. To be sure, the connection creates a series of almost identical route sections: SignalR 3.0 中樞可以透過端點路由進行路由傳送。 使用端點路由時,通常所有路由都可以在 中設定: SignalR 3.0 medium can be transported by route via the peer path. When using the peer path, normally all routers can be set in: ASP.NET Core 3.0 SignalR 已新增: ASP.NET Core 3.0 SignalR has been added: 用戶端對伺服器串流。 使用用戶端對伺服器串流,伺服器端方法可以採用 或 的執行個體。 在下列 C# 範例中,中樞上的 方法會從用戶端收到字串串流: User-to-server streams. Using client-to-server streams, the server-to-user method can take or execute bodies. In the following C# examples, the middle-to-end method receives string streams from the client: .NET 用戶端應用程式可以將 或 執行個體作為上述 中樞方法的 引數傳遞。 The.NET client application can transmit or execute an individual as a argument for the above-mentioned medium method. 在 迴圈完成且本機函式結束之後,就會傳送串流完成: When the loop is completed and this function is completed, the stream is sent to complete: JavaScript 用戶端應用程式會針對上述 中樞方法的 引數使用 SignalR (或 RxJS 主題)。 The JavaScript client application uses SignalR (or RxJS theme) for the argument for the medium method described above. 在擷取字串並準備好將其傳送至伺服器時,JavaScript 程式碼可以使用 方法來處理這些字串。 JavaScript code can be used to process the string when it is extracted and ready to be sent to the server. 使用上述兩個程式碼片段之類的程式碼,便可建立即時串流體驗。 The use of these two code snippets, etc., can create an instant streaming experience. ASP.NET Core 3.0 現在預設會針對 JSON 序列化使用 System.Text.Json: ASP.NET Core 3.0 The default is now used to sequence JSON : 若要將 Json.NET 新增至 ASP.NET Core 3.0,請參閱新增 Newtonsoft.Json 型 JSON 格式支援。 To add Json.NET to ASP.NET Core 3.0, please refer to . 下列清單包含新的 Razor 指示詞: The following list contains a new Razor indicator: ASP.NET Core 3.0 會使用 Web API 授權的支援,在單頁應用程式 (SPA) 中提供驗證。 用於驗證和儲存使用者的 ASP.NET Core Identity 與用於實作 OpenID Connect 的 IdentityServer4 相結合。 ASP.NET Core 3.0 provides authentication in a single page application (SPA) using web API-authorized support. The ASP.NET Community for authentication and storage is combined with the for practical use as OpenID Connect. IdentityServer4 是適用於 ASP.NET Core 3.0 的 OpenID Connect 和 OAuth 2.0 架構。 其可啟用下列安全性功能: IdentityServer4 is an OpenID Connect and OAuth 2.0 architecture suitable for ASP.NET Core 3.0. It is enabled by the following security features: 如需詳細資訊,請參閱 IdentityServer4 文件或 SPA 的驗證和授權。 For more detailed information, please refer to IdentityServer4 or . 憑證驗證需要: Could not close temporary folder: %s 憑證驗證的選項包括能夠: Could not close temporary folder: %s 預設使用者主體是透過憑證屬性建構而成。 使用者主體包含可補充或取代主體的事件。 如需詳細資訊,請參閱在 ASP.NET Core 中設定憑證驗證。 The default user body is constructed through certificate attributes. The user body contains events that can supplement or replace the body. For details, please refer to in ASP.NETCore. Windows 驗證已擴展至 Linux 和 macOS。 在舊版中,Windows 驗證僅限於 IIS 和 HTTP.sys。 在 ASP.NET Core 3.0 中,Kestrel 能夠針對已加入 Windows 網域的主機,在 Linux 和 macOS 上使用 Negotiate、Kerberos 和 Windows 上的 NTLM。 Microsoft.AspNetCore.Authentication.Negotiate NuGet 套件提供這些驗證配置的 Kestrel 支援。 如同其他驗證服務一樣,請設定整個驗證應用程式,然後設定服務: 主機需求: Host requirements: 如需詳細資訊,請參閱在 ASP.NET Core 中設定 Windows 驗證。 For more information, please refer to in ASP.NET Core. Web UI 範本 (Razor 頁面、具有控制器和檢視的 MVC) 已移除下列項目: The Web UI template (Razor page, MVC with controller and view) has removed the following items: Angular 範本已更新為使用 Angular 8。 Angular has been updated to use Angular 8. 根據預設,Razor 類別庫 (RCL) 範本預設為 Razor 元件開發。 Visual Studio 中的新範本選項為頁面和檢視提供範本支援。 在命令殼層從範本建立 RCL 時,請傳遞 選項 ()。 According to default, the Razor library (RCL) template is supposed to be developed as a Razor widget. The new template option in Visual Studio provides template support for pages and views. When commanding the shell to create RCL from the template, send option () ASP.NET Core 3.0 範本會使用 ASP.NET Core 中的 .NET 一般主機。 舊版則使用 WebHostBuilder。 使用 .NET Core 一般主機 (HostBuilder) 可提供 ASP.NET Core 應用程式與非 Web 特定伺服器案例的更好整合。 如需詳細資訊,請參閱 HostBuilder 取代 WebHostBuilder。 在發行 ASP.NET Core 3.0 之前,會載入前置詞為 的環境變數,以供 Web 主機的主機組態使用。 在 3.0 中,可使用 為含有 的主機組態載入字首為 的環境變數。 An environmental variable with pre-words will be loaded before the ASP.NET Core 3.0 is released for use by the host of the Web host. In 3.0, the environmental variable with the first word for the host group containing it can be used. 一般主機只支援下列類型的 建構函式插入: General host only supports construction function insertions of the following types: 所有服務仍然可以直接插入為 方法的引數。 如需詳細資訊,請參閱一般主機限制 Startup 建構函式插入 (aspnet/Announcements #353)。 All services can still be inserted directly into the argument as a method. See General Host Limit Startup Construction Function Insert (aspnet/Announments#353) for details. 如需詳細資訊,請參閱從 ASP.NET Core 2.2 移轉到 3.0。 For more information, please refer to . 預設在 Kestrel 中針對 HTTPS 端點啟用 HTTP/2。 當作業系統支援 HTTP/2 時,就會對 IIS 或 HTTP.sys 啟用 HTTP/2 支援。 Sets to activate HTTP/2 for the HTTPS endpoint in Kestrel. If the operating system supports HTTP/2, IIS or HTTP.sys will enable HTTP/2 support. 裝載的 EventSource 會發出下列與傳入要求相關的新 EventCounter 類型: The loaded EventSource will emit the following new types of : 已增強端點路由,其可讓架構 (例如 MVC) 搭配中介軟體順利運作: The peer path has been enhanced to allow structures (e.g., MVC) to combine intermediary software for smooth operation: 如需詳細資訊,請參閱 ASP.NET Core 中的路線規劃。 For more detailed information, please refer to . 健康情況檢查會搭配一般主機使用端點路由。 在 中,使用端點 URL 或相對路徑在端點建立器上呼叫 : A health check combines a normal host with a peer path. In this, call on the peer builder using a peer URL or relative path: 健康情況檢查端點可以: The health check peer can: 如需詳細資訊,請參閱下列文章: For more information, please refer to the following articles: 現在可以使用 System.IO.Pipelines API 讀取要求本文並寫入回應本文。 屬性提供可用來讀取要求本文的 PipeReader。 屬性提供可用來寫入回應本文的 PipeWriter。 是 串流的類比。 是 串流的類比。
在 IIS 中裝載 ASP.NET Core 應用程式時發生的啟動錯誤,現在會產生更豐富的診斷資料。 在適用情況下,這些錯誤會連同堆疊追蹤報告給 Windows 事件記錄檔。 此外,所有警告、錯誤和未處理的例外狀況都會記錄到 Windows 事件記錄檔。 In addition, all warnings, errors and unresolved exceptions are recorded in the Windows event log file. .NET Core 3.0 引進了新的背景工作服務應用程式範本。 此範本提供在 .NET Core 中撰寫長時間執行服務的起點。 .NET Core 3.0 introduces a new background work service application template, which provides the starting point for writing long-time service in.NET Core. 如需詳細資訊,請參閱 For more information, please see 在舊版的 ASP.NET Core 中,當部署至 Azure Linux 或 IIS 以外的任何反向 Proxy 後方時,呼叫 UseHsts 和 UseHttpsRedirection 會發生問題。 轉送 Linux 和非 IIS 反向 Proxy 的配置中記載了舊版的修正內容。 In the old version of ASP.NET Core, when deployed to any reverse direction beyond Azure Linux or IIS, call
ASP.NET Core 3.0 中已修正此案例。 當 環境變數設定為 時,主機會啟用轉送標頭中介軟體。 會在容器映像中設定為 。 This case has been amended in ASP.NET Core 3.0. When the environmental variable is set, the main opportunity is . ASP.NET Core 3.0 包含多項改善,可降低記憶體使用量並提高輸送量: ASP.NET Core 3.0 contains several improvements that reduce memory usage and increase delivery: 從 ASP.NET Core 3.0 開始,不再支援 .NET Framework 作為目標架構。 以 .NET Framework 為目標的專案可以使用 .NET Core 2.1 LTS 版本,以完全支援的方式繼續執行。 超過 .NET Core 2.1 的三年 LTS 期間之後,將無限期支援大部分的 ASP.NET Core 2.1.x 相關套件。 Starting with ASP.NET Core 3.0, there is no support for.NET Framewerk as a target structure. can be used for data-linktype="external".. NET Core 2.1 LTS version , which continues to run in a fully supported manner. After three years of.NET Core 2.1, most ASP.NET Core 2.1.x related packages will be supported indefinitely. 如需移轉資訊,請參閱將程式碼從 .NET Framework 移植到 .NET Core。 To move information, please refer to . 包含在 Microsoft.AspNetCore.App 中繼套件中的 ASP.NET Core 3.0 共用架構,不再需要專案檔中有一個明確的 元素。 在專案檔中使用 SDK 時,將會自動參考共用架構: 從 ASP.NET Core 3.0 共用架構移除的組件中最值得注意的是: The most notable component removed from the ASP.NET Core 3.0 common architecture is: 如需從共用架構移除之組件的完整清單,請參閱從 Microsoft.AspNetCore.App 3.0 中移除的組件。 如需此變更動機的詳細資訊,請參閱 3.0 中 Microsoft.AspNetCore.App 的中斷性變更和搶先看 ASP.NET Core 3.0 的變更。 For a complete list of components to be removed from the common setup, see from Microsoft.AspNetCore.App 3.0. For details of these changes, see
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论