Hoy lanzamos una nueva actualizaci贸n de vista previa para Blazor WebAssembly con muchas nuevas funciones y mejoras.Estas son las novedades de esta versi贸n:- Versi贸n actualizada a 3.2.
- Lanzamiento simplificado
- Descargar mejoras de tama帽o
- .NET SignalR Client Support

comienzo
Para comenzar con Blazor WebAssembly 3.2.0 Preview 1, instale .NET Core 3.1 SDK y luego ejecute el siguiente comando:dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1
隆Eso es todo! Puede encontrar documentos y ejemplos adicionales en https://blazor.net .Actualizar proyecto existente
Para actualizar una aplicaci贸n Blazor WebAssembly existente de 3.1.0 Vista previa 4 a 3.2.0 Vista previa 1:- Actualice todos los enlaces a los paquetes Microsoft.AspNetCore.Blazor * a 3.2.0-preview1.20073.1.
- En Program.cs en el proyecto del cliente Blazor WebAssembly, reemplace
BlazorWebAssemblyHost.CreateDefaultBuilder()
con WebAssemblyHostBuilder.CreateDefault()
. - Mover los registros de componentes de la ra铆z en el proyecto de cliente Blazor WebAssembly a partir
Startup.Configure
de Program.cs por llamar 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
En esta versi贸n, actualizamos las versiones del paquete Blazor WebAssembly a 3.2 para distinguirlas de la versi贸n reciente de .NET Core 3.1 Long Term Support (LTS). No hay una versi贸n correspondiente de .NET Core 3.2: la nueva versi贸n 3.2 se aplica solo a Blazor WebAssembly. Blazor WebAssembly se basa actualmente en .NET Core 3.1, pero no hereda el estado de .NET Core 3.1 LTS. En cambio, la versi贸n inicial de Blazor WebAssembly, programada para mayo de este a帽o, ser谩 Actual , que se "mantiene durante tres meses despu茅s de la pr贸xima versi贸n de Actual o LTS", como se describe en la Pol铆tica de soporte de .NET Core . La pr贸xima versi贸n pr贸xima de Blazor WebAssembly despu茅s de la versi贸n 3.2 en mayo ser谩 con .NET 5. Esto significa que despu茅s del lanzamiento de .NET 5, deber谩 actualizar sus aplicaciones Blazor WebAssembly a .NET 5 para admitirlo.Lanzamiento simplificado
En esta versi贸n, hemos simplificado el lanzamiento y el alojamiento de las API para Blazor WebAssembly. Inicialmente, las API de lanzamiento e implementaci贸n de Blazor WebAssembly se dise帽aron para reflejar los patrones utilizados en ASP.NET Core, pero no todos los conceptos eran relevantes. Las API actualizadas tambi茅n permiten utilizar algunos escenarios nuevos.As铆 es como se ve el nuevo c贸digo de inicio en 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();
}
}
Las aplicaciones Blazor WebAssembly ahora admiten Main
m茅todos asincr贸nicos para el punto de entrada a la aplicaci贸n.Para crear un host predeterminado, llame WebAssemblyHostBuilder.CreateDefault()
. Los componentes y servicios ra铆z se configuran utilizando el enlazador; Startup
ya no se necesita una clase separada . Se agrega el siguiente ejemplo WeatherService
, por lo que est谩 disponible a trav茅s de la inyecci贸n de dependencia (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();
}
}
Despu茅s de crear el host, puede acceder a los servicios desde el DI ra铆z antes de presentar cualquier componente. Esto puede ser 煤til si necesita ejecutar alguna l贸gica de inicializaci贸n antes de que se muestre algo: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();
}
}
El host ahora tambi茅n proporciona una instancia de la configuraci贸n central de la aplicaci贸n. La configuraci贸n no se rellena con ning煤n dato predeterminado, pero puede rellenarla seg煤n sea necesario en su aplicaci贸n.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();
}
}
Descargar mejoras de tama帽o
Las aplicaciones Blazor WebAssembly ejecutan el enlazador .NET IL en cada ensamblaje para eliminar el c贸digo no utilizado de la aplicaci贸n. En versiones anteriores, solo se cortaban las bibliotecas principales de framework. A partir de esta versi贸n, los ensamblajes Blazor tambi茅n se recortan, lo que resulta en una ligera reducci贸n de tama帽o, alrededor de 100 KB. Como antes, si alguna vez necesita deshabilitar el enlace, agregue el suyo propio <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
a su archivo de proyecto..NET SignalR Client Support
Ahora puede usar SignalR desde sus aplicaciones Blazor WebAssembly usando el cliente .NET SignalR.Para probar SignalR en su aplicaci贸n Blazor WebAssembly:- Cree una aplicaci贸n Blazor WebAssembly alojada en ASP.NET Core.
dotnet new blazorwasm -ho -o BlazorSignalRApp
- Agregue el paquete del cliente ASP.NET Core SignalR al proyecto del Cliente .
cd BlazorSignalRApp
dotnet add Client package Microsoft.AspNetCore.SignalR.Client
- En el proyecto Servidor , agregue la siguiente clase Hub / ChatHub.cs .
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);
}
}
}
- En el proyecto Servidor , agregue los servicios SignalR en el m茅todo
Startup.ConfigureServices
.
services.AddSignalR();
- Agregue tambi茅n el punto final para
ChatHub
at Startup.Configure
.
.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapHub<ChatHub>("/chatHub");
endpoints.MapFallbackToClientSideBlazor<Client.Program>("index.html");
});
- Actualice Pages / Index.razor en el proyecto del Cliente con el siguiente marcado.
@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;
}
- Crear y ejecutar un proyecto de servidor
cd Server
dotnet run
- Abra la aplicaci贸n en dos pesta帽as separadas del navegador para comunicarse en tiempo real a trav茅s de SignalR.
Problemas conocidos
La siguiente es una lista de problemas conocidos en esta versi贸n que se solucionar谩n en una actualizaci贸n futura.Comentarios
隆Esperamos que disfrute de las nuevas funciones en esta versi贸n preliminar de Blazor WebAssembly! Por favor, h谩ganos saber lo que piensa al informar problemas en GitHub .Gracias por usar Blazor.