1. 程式人生 > >【譯】ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

【譯】ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

.NET Core 3.1 Preview 1現在可用。此版本主要側重於錯誤修復,但同時也包含一些新功能。
這是此版本的ASP.NET Core的新增功能:

  • 對Razor components的部分類支援
  • 將引數傳遞給頂級元件
  • 在HttpSysServer中支援共享佇列
  • 在SameSite cookies的重大更改

除了.NET Core 3.1 Preview版本釋出之外,我們還發布了Blazor WebAssembly的更新,現在要求.NET Core 3.1. 若要使用Blazor WebAssembly,您需要安裝.NET Core 3.1 Preview 1以及Visual Studio的最新預覽版。

有關其他詳細資訊和已知問題,請參見發行說明

開始吧

要在.NET Core 3.1 Preview 1 中使用ASP.NET Core,需要安裝.NET Core Preview 1 SDK。

如果你是在Windows上使用的Visual Studio,為獲得最佳體驗,建議你安裝Visual Studio 2019 16.4 的最新預覽版。安裝Visual Studio 2019 16.4 還將安裝上.NET Core 3.1 Preview 1,因此你無需單獨安裝它。為在.NET Core 3.1 中使用Blazor 開發,Visual Studio 2019 16.4是必須的。

要安裝最新的Blazor WebAssembly模板,請執行以下命令:

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview1.19508.20

升級現有專案

要將現有的ASP.NET Core 3.0專案升級到3.1 Preview 1:

  • 將所有針對netcoreapp3.0的專案更新為netcoreapp3.1
  • 將所有Microsoft.AspNetCore.*軟體包引用更新為3.1.0-preview1.19506.1

另請參閱ASP.NET Core 3.1中重大更改的完成列表。

現在,您應該都已準備好使用.NET Core 3.1 Preview 1!

對Razor components的部分類支援

Razor components現在作為分佈類生成。你可以使用定義為區域性類的程式碼隱藏檔案編寫Razor components的程式碼,而不用在單個檔案中定義該元件的所有程式碼。

例如,不是用@code塊定義預設的Counter component,而是這樣:
Counter.razor

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
   int currentCount = 0;

   void IncrementCount()
   {
       currentCount++;
   }
}

現在,你可以使用部分類將程式碼分離為程式碼隱藏檔案:
Counter.razor

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

Counter.razor.cs

namespace BlazorApp1.Pages
{
   public partial class Counter
   {
       int currentCount = 0;

       void IncrementCount()
       {
           currentCount++;
       }
   }
}

將引數傳遞給頂級元件

現在,Blazor Server應用程式可以在初始渲染期間將引數傳遞給頂級元件(top-level components)。以前,你只能使用RenderMode.Static將引數傳遞給頂級元件。在此次釋出的版本中,同時支援RenderMode.ServerRenderModel.ServerPrerendered。任何指定的引數值都將序列化為JSON,幷包含在初始響應中。

例如,你可以使用特定的當前計數來渲染Counter元件,如下所示

@(await Html.RenderComponentAsync<Counter>(RenderMode.ServerPrerendered, new { CurrentCount = 123 }))

在HttpSysServer中支援共享佇列

除了HttpSysServer建立匿名請求佇列的現有行為外,我們還添加了建立或附加到現有命名HTTP.sys 請求佇列的功能。
這應該啟用一下方案:擁有佇列的HTTP.Sys控制器程序獨立於偵聽器程序,從而可以在跨多個偵聽器程序重新啟動之間保留現有的連線和排隊的請求。

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // ...
            webBuilder.UseHttpSys(options =>
            {
                options.RequestQueueName = "MyExistingQueue",
                options.RequestQueueMode = RequestQueueMode.CreateOrAttach
            })
        });

在SameSite cookies的重大更改

此版本更新了ASP.NET Core中SameSite cookie的行為,以符合瀏覽器強制執行的最新標準。有關這些更改及其對現有應用程式的影響的詳細資訊,請參見https://github.com/aspnet/Announcements/issues/390。

給予反饋

我們希望您喜歡此ASP.NET Core預覽版中的新功能!通過在GitHub上提交問題,請讓我們知道您的想法。

感謝您試用ASP.NET Core!