Compartilhar via


Blazor: interoperabilidade de matriz de bytes

Blazor agora dá suporte à interoperabilidade de matriz de bytes otimizada, que evita codificar e decodificar matrizes de bytes em Base64 e facilita um processo de interoperabilidade mais eficiente. Isso se aplica tanto ao Blazor Servidor quanto 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 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 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, isso é menos performante.

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");