Blazor: Bytearray-Interoperabilität

Blazor unterstützt jetzt optimierte Bytearray-Interoperabilität, wodurch Codierung und Decodierung von Bytearrays in Base64 vermieden und ein effizienterer Interoperabilitätsprozess ermöglicht wird. Dies gilt sowohl für Blazor Server als auch für Blazor WebAssembly.

Eingeführt in Version

ASP.NET Core 6.0

Empfangen eines Byte-Arrays in JavaScript aus .NET

Altes Verhalten

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

Neues Verhalten

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

Grund für Änderung

Diese Änderung wurde vorgenommen, um einen effizienteren Interoperabilitätsmechanismus für Bytearrays zu schaffen.

Empfang eines Byte-Arrays in JavaScript aus .NET

Betrachten Sie diese .NET-Interoperabilität, in der Sie JavaScript aufrufen, um ein Bytearray zu übergeben:

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

Im vorherigen Codebeispiel behandeln Sie den eingehenden Parameter in JavaScript als Bytearray anstelle einer base64-codierten Zeichenfolge.

Zurückgeben eines Bytearrays von JavaScript zu .NET

Wenn .NET ein byte[] erwartet, sollte JavaScript ein Uint8Array bereitstellen. Es ist weiterhin möglich, ein Base64-codiertes Array mit btoa bereitzustellen, jedoch ist dies weniger leistungsfähig.

Wenn Sie beispielsweise über den folgenden Code verfügen, sollten Sie ein Uint8Array JavaScript bereitstellen, das nicht base64-codiert ist:

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