Partager via


Blazor : interopérabilité du tableau d’octets

Blazor prend désormais en charge l’interopérabilité optimisée des tableaux d’octets, ce qui évite l’encodage et le décodage des tableaux d’octets en Base64 et facilite un processus d’interopérabilité plus efficace. Cela s’applique au Serveur Blazor et WebAssembly Blazor.

Version introduite

ASP.NET Core 6.0

Recevoir un tableau d’octets en JavaScript à partir de .NET

Ancien comportement

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

Nouveau comportement

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

Raison du changement

Ce changement a été apporté pour créer un mécanisme d’interopérabilité plus efficace pour les tableaux d’octets.

Recevoir un tableau d’octets en JavaScript à partir de .NET

Considérez cette interopérabilité .NET, où vous appelez JavaScript en passant un tableau d’octets :

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

Dans l’exemple de code précédent, vous traitez le paramètre entrant en JavaScript comme un tableau d’octets au lieu d’une chaîne encodée en Base64.

Retourner un tableau d’octets de JavaScript vers .NET

Si .NET attend un byte[], JavaScript doit fournir un Uint8Array. Il est toujours possible de fournir un tableau encodé en Base64 à l’aide de btoa, mais qui est moins performant.

Par exemple, si vous avez le code suivant, vous devez fournir un Uint8Array à partir de JavaScript un qui n’est pas encodé en Base64 :

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