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.
Empfohlene Maßnahme
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");