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.
Action recommandée
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");