Compartir a través de


Blazor: interoperabilidad de matriz de bytes

Blazor ahora admite la interoperabilidad optimizada de matriz de bytes, lo que evita codificar y descodificar matrices de bytes en Base64 y facilita un proceso de interoperabilidad más eficaz. Esto se aplica a Blazor Server y a Blazor WebAssembly.

Versión introducida

ASP.NET Core 6.0

Recepción de una matriz de bytes en JavaScript desde .NET

Comportamiento anterior

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

Comportamiento nuevo

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

Motivo del cambio

Este cambio se realizó para crear un mecanismo de interoperabilidad más eficaz para las matrices de bytes.

Recepción de una matriz de bytes en JavaScript desde .NET

Considere esta interoperabilidad de .NET, donde se llama a JavaScript pasando una matriz de bytes:

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

En el ejemplo de código anterior, trataría el parámetro entrante en JavaScript como una matriz de bytes y no como una cadena con codificación Base64.

Devolución de una matriz de bytes de JavaScript a .NET

Si .NET espera un elemento byte[], JavaScript debe proporcionar un objeto Uint8Array. Todavía es posible proporcionar una matriz codificada en Base64 mediante btoa, pero con un rendimiento menor.

Por ejemplo, si tiene el código siguiente, debe proporcionar un elemento Uint8Array de JavaScript que no esté codificado con Base64:

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