Compartilhar via


Blazor: interoperabilidade de matriz de bytes

Agora, o Blazor dá suporte à interoperabilidade de matriz de bytes otimizada, o que evita codificar e decodificar matrizes de bytes em Base64 e deixa o processo de interoperabilidade mais eficiente. Isso se aplica ao Blazor Server e ao Blazor WebAssembly.

Versão introduzida

ASP.NET Core 6.0

Receber matriz de bytes em JavaScript do .NET

Comportamento antigo

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

Novo comportamento

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

Motivo da alteração

Essa alteração foi feita para criar um mecanismo de interoperabilidade mais eficiente para matrizes de bytes.

Receber matriz de bytes em JavaScript do .NET

Considere essa interoperabilidade do .NET, em que você chama o JavaScript passando uma matriz de bytes:

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

No exemplo de código anterior, você trataria o parâmetro de entrada em JavaScript como uma matriz de bytes em vez de como uma cadeia de caracteres codificada em Base64.

Retornar uma matriz de bytes do JavaScript para o .NET

Se o .NET espera um byte[], o JavaScript deve fornecer um Uint8Array. Ainda é possível fornecer uma matriz codificada em Base64 usando btoa, no entanto, o desempenho é inferior.

Por exemplo, se você tiver o seguinte código, deverá fornecer um Uint8Array do JavaScript que não esteja codificado em Base64:

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