Freigeben über


Blazor: Bytearray-Interop

Blazor unterstützt jetzt optimierte Bytearray-Interop, wodurch das Codieren und Decodieren von Bytearrays in Base64 vermieden und ein effizienterer Interopprozess ermöglicht wird. Dies gilt sowohl für Blazor als auch für Blazor WebAssembly.

Eingeführt in 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 die Änderung

Diese Änderung wurde vorgenommen, um einen effizienteren Interopmechanismus für Bytearrays zu erstellen.

Zurückgeben eines Bytearrays aus JavaScript an .NET

Sehen Sie sich die folgende .NET-Interop an, bei der JavaScript aufgerufen und ein Bytearray übergeben wird:

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

Im obigen Codebeispiel würden Sie den eingehenden Parameter in JavaScript nicht als Base64-codierte Zeichenfolge, sondern als Bytearray behandeln.

Zurückgeben eines Bytearrays aus JavaScript an .NET

Wenn .NET ein byte[] erwartet, muss JavaScript ein Uint8Array bereitstellen. Es ist weiterhin möglich, ein Base64-verschlüsseltes Array mithilfe von btoa zur Verfügung zu stellen, das jedoch weniger leistungsfähig ist.

Wenn Sie beispielsweise über den folgenden Code verfügen, müssen Sie ein Uint8Array aus JavaScript bereitstellen, das nicht Base64-codiert ist:

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