Hari ini kami merilis pembaruan pratinjau baru untuk Blazor WebAssembly dengan banyak fitur dan peningkatan baru.Inilah yang baru dalam rilis ini:- Versi diperbarui menjadi 3,2.
- Peluncuran yang disederhanakan
- Unduh Peningkatan Ukuran
- Dukungan Klien .NET SignalR

Mulailah
Untuk memulai dengan Blazor WebAssembly 3.2.0 Preview 1, instal .NET Core 3.1 SDK dan kemudian jalankan perintah berikut:dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1
Itu saja! Anda dapat menemukan dokumen dan contoh tambahan di https://blazor.net .Perbarui proyek yang ada
Untuk memutakhirkan aplikasi Blazor WebAssembly yang ada dari 3.1.0 Pratinjau 4 menjadi 3.2.0 Pratinjau 1:- Perbarui semua tautan ke paket Microsoft.AspNetCore.Blazor * ke 3.2.0-preview1.20073.1.
- Dalam Program.cs di proyek klien Blazor WebAssembly, ganti
BlazorWebAssemblyHost.CreateDefaultBuilder()
dengan WebAssemblyHostBuilder.CreateDefault()
. - Pindahkan pendaftaran komponen root di proyek klien Blazor WebAssembly dari
Startup.Configure
ke Program.cs dengan menelepon builder.RootComponents.Add<TComponent>( )
. - Blazor WebAssembly
Startup.ConfigureServices
Program.cs builder.Services
. - Startup.cs Blazor WebAssembly client project.
- Blazor WebAssembly ASP.NET Core, Server
app.UseClientSideBlazorFiles<Client.Startup>(...)
app.UseClientSideBlazorFiles<Client.Program>(...)
.
3.2
Dalam rilis ini, kami meningkatkan versi paket Blazor WebAssembly ke 3.2 untuk membedakannya dari rilis .NET Core 3.1 Long Term Support (LTS) baru-baru ini. Tidak ada rilis yang sesuai dari .NET Core 3.2 - versi baru 3.2 hanya berlaku untuk Blazor WebAssembly. Blazor WebAssembly saat ini didasarkan pada .NET Core 3.1, tetapi tidak mewarisi status .NET Core 3.1 LTS. Sebagai gantinya, rilis awal Blazor WebAssembly, dijadwalkan untuk bulan Mei tahun ini, akan menjadi Lancar , yang "dipertahankan selama tiga bulan setelah rilis Lancar atau LTS berikutnya," sebagaimana dijelaskan dalam Kebijakan Dukungan Inti .NET . Rilis Blazor WebAssembly berikutnya yang akan datang setelah rilis 3.2 pada bulan Mei adalah dengan .NET 5. Ini berarti bahwa setelah rilis. NET 5, Anda harus memutakhirkan aplikasi Blazor WebAssembly Anda ke .NET 5 untuk mendukungnya.Peluncuran yang disederhanakan
Dalam rilis ini, kami telah menyederhanakan peluncuran dan hosting API untuk Blazor WebAssembly. Awalnya, API peluncuran dan penyebaran untuk Blazor WebAssembly dirancang untuk mencerminkan pola yang digunakan dalam ASP.NET Core, tetapi tidak semua konsep relevan. API yang diperbarui juga memungkinkan beberapa skenario baru untuk digunakan.Seperti apa kode startup baru di Program.cs :public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
await builder.Build().RunAsync();
}
}
Aplikasi Blazor WebAssembly sekarang mendukung Main
metode asinkron untuk titik masuk ke aplikasi.Untuk membuat host default, panggil WebAssemblyHostBuilder.CreateDefault()
. Komponen dan layanan root dikonfigurasikan menggunakan tautan; kelas yang terpisah Startup
tidak lagi dibutuhkan. Contoh berikut ditambahkan WeatherService
, sehingga tersedia melalui injeksi dependensi (DI):public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.Services.AddSingleton<WeatherService>();
builder.RootComponents.Add<App>("app");
await builder.Build().RunAsync();
}
}
Setelah host dibuat, Anda dapat mengakses layanan dari root DI sebelum komponen disajikan. Ini dapat berguna jika Anda perlu menjalankan beberapa logika inisialisasi sebelum sesuatu ditampilkan:public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.Services.AddSingleton<WeatherService>();
builder.RootComponents.Add<App>("app");
var host = builder.Build();
var weatherService = host.Services.GetRequiredService<WeatherService>();
await weatherService.InitializeWeatherAsync();
await host.RunAsync();
}
}
Tuan rumah juga sekarang menyediakan contoh konfigurasi pusat untuk aplikasi. Konfigurasi tidak diisi dengan data default apa pun, tetapi Anda dapat mengisinya seperti yang diperlukan dalam aplikasi Anda.public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.Services.AddSingleton<WeatherService>();
builder.RootComponents.Add<App>("app");
var host = builder.Build();
var weatherService = host.Services.GetRequiredService<WeatherService>();
await weatherService.InitializeWeatherAsync(host.Configuration["WeatherServiceUrl"]);
await host.RunAsync();
}
}
Unduh Peningkatan Ukuran
Aplikasi Blazor WebAssembly menjalankan .NET IL linker di setiap unit untuk menghapus kode yang tidak digunakan dari aplikasi. Dalam rilis sebelumnya, hanya perpustakaan kerangka kerja utama yang terputus. Dimulai dengan rilis ini, majelis Blazor juga dipangkas, menghasilkan sedikit pengurangan ukuran - sekitar 100 KB. Seperti sebelumnya, jika Anda perlu menonaktifkan binding, tambahkan file Anda sendiri <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
ke file proyek Anda.Dukungan Klien .NET SignalR
Sekarang Anda dapat menggunakan SignalR dari aplikasi Blazor WebAssembly Anda menggunakan klien .NET SignalR.Untuk mencoba SignalR di aplikasi Blazor WebAssembly Anda:- Buat aplikasi Blazor WebAssembly yang dihosting di ASP.NET Core.
dotnet new blazorwasm -ho -o BlazorSignalRApp
- Tambahkan paket klien ASP.NET Core SignalR ke proyek Klien .
cd BlazorSignalRApp
dotnet add Client package Microsoft.AspNetCore.SignalR.Client
- Dalam proyek Server , tambahkan kelas Hub / ChatHub.cs berikut .
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorSignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
- Dalam proyek Server , tambahkan layanan SignalR dalam metode
Startup.ConfigureServices
.
services.AddSignalR();
- Tambahkan juga titik akhir untuk
ChatHub
di Startup.Configure
.
.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapHub<ChatHub>("/chatHub");
endpoints.MapFallbackToClientSideBlazor<Client.Program>("index.html");
});
- Perbarui Halaman / Index.razor dalam proyek Klien dengan markup berikut.
@using Microsoft.AspNetCore.SignalR.Client
@page "/"
@inject NavigationManager NavigationManager
<div>
<label for="userInput">User:</label>
<input id="userInput" @bind="userInput" />
</div>
<div class="form-group">
<label for="messageInput">Message:</label>
<input id="messageInput" @bind="messageInput" />
</div>
<button @onclick="Send" disabled="@(!IsConnected)">Send Message</button>
<hr />
<ul id="messagesList">
@foreach (var message in messages)
{
<li>@message</li>
}
</ul>
@code {
HubConnection hubConnection;
List<string> messages = new List<string>();
string userInput;
string messageInput;
protected override async Task OnInitializedAsync()
{
hubConnection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/chatHub"))
.Build();
hubConnection.On<string, string>("ReceiveMessage", (user, message) =>
{
var encodedMsg = user + " says " + message;
messages.Add(encodedMsg);
StateHasChanged();
});
await hubConnection.StartAsync();
}
Task Send() => hubConnection.SendAsync("SendMessage", userInput, messageInput);
public bool IsConnected => hubConnection.State == HubConnectionState.Connected;
}
- Buat dan jalankan proyek Server
cd Server
dotnet run
- Buka aplikasi dalam dua tab browser terpisah untuk berkomunikasi secara real time melalui SignalR.
Masalah Dikenal
Berikut ini adalah daftar masalah yang diketahui dalam rilis ini yang akan diperbaiki pada pembaruan di masa mendatang.Ulasan
Kami harap Anda menikmati fitur-fitur baru dalam versi pratinjau Blazor WebAssembly ini! Beri tahu kami pendapat Anda saat melaporkan masalah pada GitHub .Terima kasih telah menggunakan Blazor.