Freigeben über


Blazor: Bytearray-Interop

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ührte Version

ASP.NET Core 6.0

Zurückgeben eines Bytearrays aus JavaScript an .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.

Zurückgeben eines Bytearrays aus JavaScript an .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, muss JavaScript ein Uint8Array bereitstellen. Es ist weiterhin möglich, ein Base64-codiertes Array mithilfe von btoa bereitzustellen, das jedoch weniger effizient ist.

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