Condividi tramite


Blazor: interoperabilità matrice-byte

Blazor ora supporta l'interoperabilità matrice-byte ottimizzata, che evita la codifica e la decodifica matrice-byte in Base64 e facilita un processo di interoperabilità più efficiente. Questo vale sia per Server Blazor che WebAssembly Blazor.

Versione introdotta

ASP.NET Core 6.0

Ricevere una matrice di byte in JavaScript da .NET

Comportamento precedente

function receivesByteArray(data) {
    // Previously, data was a Base64-encoded string representing the byte array.
}

Nuovo comportamento

function receivesByteArray(data) {
    // Data is a Uint8Array (no longer requires processing the Base64 encoding).
}

Motivo della modifica

Questa modifica è stata apportata per creare un meccanismo di interoperabilità più efficiente per le matrici di byte.

Ricevere una matrice di byte in JavaScript da .NET

Si consideri questa interoperabilità .NET, in cui si effettua una chiamata in JavaScript passando una matrice di byte:

var bytes = new byte[] { 1, 5, 7 };
await _jsRuntime.InvokeVoidAsync("receivesByteArray", bytes);

Nell'esempio di codice precedente si considererà il parametro in ingresso in JavaScript come matrice di byte anziché una stringa con codifica Base64.

Restituire una matrice di byte da JavaScript a .NET

Se .NET prevede byte[], JavaScript deve fornire un oggetto Uint8Array. È comunque possibile fornire una matrice con codifica Base64 usando btoa, ma meno efficiente.

Ad esempio, se si dispone del codice seguente, è necessario fornire un oggetto Uint8Array da JavaScript non codificato in Base64:

var bytes = await _jsRuntime.InvokeAsync<byte[]>("someJSMethodReturningAByteArray");