Il response streaming è quella pratica che permette di leggere la risposta HTTP man mano che arriva dal server, invece di aspettare che l?intero contenuto venga scaricato in memoria. Nelle versioni precedenti di Blazor lo streaming era opt-in, richiedeva cioè l'abilitazione esplicita. In .NET 10 lo streaming è attivo di default, andando a migliorare le performance, l'utilizzo della memoria e un maggior controllo delle risposte di grandi dimensioni.
Questa nuova visione introduce una modifica importante: la chiamata verso un controller, o servizio API, che forniva questa tipologia di risposta, viene letta e codificata con una classe diversa.
// Action con risposta in stream
[HttpGet("stream-numbers")]
public async IAsyncEnumerable<int> StreamNumbers()
{
for (int i = 1; i <= 10; i++)
{
await Task.Delay(100); // Simulate async work
yield return i;
}
}
var stream = await response.Content.ReadAsStreamAsync();
// oggetto stream:
// fino a .NET 10 MemoryStream
// dopo .NET 10 BrowserHttpReadStreamAnche se le due classi condivido le firme di molti metodi, in BrowserHttpReadStream non troviamo alcuna operazione sincrona: le chiamate come stream.Read(buffer); o stream.Read(Span
// lettura asincrona var bytesRead = await stream.ReadAsync(buffer); // creazione memory stream e lettura sincrona successiva using var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); // disabilitazione var requestMessage = new HttpRequestMessage(HttpMethod.Get, "api/mia-chiamata"); requestMessage.SetBrowserResponseStreamingEnabled(false);
In aggiunta alla disabilitazione, si può optare per un effetto globale, andando ad intervenire sul file di progetto o sulle variabili di ambiente
<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse> DOTNET_WASM_ENABLE_STREAMING_RESPONSE=false
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
GitHub Copilot CLI in ambienti offline
Creare un extension method per applicare condizionalmente una Where in una query LINQ per Entity Framework
Welcome to Future Dev Day 2026
Ottimizzare le API in ASP.NET con Feature Flags
Il nuovo persistent state in Blazor
Stop Building Chatbots. Build a team
Utilizzo delle stepped value functions nel CSS
Interazione con ReconnectModal in Blazor
Gestire pubblicazione Kubernetes tramite .NET Aspire
Creare una cache temporanea in JavaScript
Utilizzare le direttive più importanti in una file based app .NET
I più letti di oggi
- Contare le occorrenze di parole in una frase con LINQ
- Mischiare codice server side e client side in una query LINQ con Entity Framework
- Cambiare il titolo di una pagina ASP.NET con uno user control
- ASP.NET 4.5 e ASP.NET MVC 4 in C# e VB
- Esecuzione a matrici nelle pipeline YAML di Azure DevOps
- Unire liste tramite il Metodo Union di LINQ
- Mappare una relazione molti a molti via codice con Entity Framework Code-First
- Utilizzare i DataTrigger e ControlStoryboardAction per animare una cella di un DataGrid in Silverlight
- Parallelizzare il download di pagine web tramite la Task Parallel Library di .NET Framework 4.0


