Blazor: Interoperabilita bajtů pole
Blazor nyní podporuje optimalizovanou interoperabilitu bajtů, která zabraňuje kódování a dekódování bajtů do Base64 a usnadňuje efektivnější proces spolupráce. To platí pro Blazor Server i Blazor WebAssembly.
Zavedená verze
ASP.NET Core 6.0
Příjem bajtového pole v JavaScriptu z .NET
Staré chování
function receivesByteArray(data) {
// Previously, data was a Base64-encoded string representing the byte array.
}
Nové chování
function receivesByteArray(data) {
// Data is a Uint8Array (no longer requires processing the Base64 encoding).
}
Důvod změny
Tato změna byla provedena kvůli vytvoření efektivnějšího mechanismu vzájemné spolupráce pro bajtová pole.
Doporučená akce
Příjem bajtového pole v JavaScriptu z .NET
Vezměte v úvahu tuto interoperabilitu .NET, kde voláte do JavaScriptu předávající pole bajtů:
var bytes = new byte[] { 1, 5, 7 };
await _jsRuntime.InvokeVoidAsync("receivesByteArray", bytes);
V předchozím příkladu kódu byste zacházeli s příchozím parametrem v JavaScriptu jako s polem bajtů místo řetězce s kódováním Base64.
Vrácení pole bajtů z JavaScriptu do .NET
Pokud .NET očekává byte[]
, javascript by měl poskytnout .Uint8Array
Stále je možné poskytnout pole s kódováním Base64 pomocí btoa
, ale to je méně výkonné.
Pokud máte například následující kód, měli byste zadat z JavaScriptuUint8Array
, který není kódovaný jako Base64:
var bytes = await _jsRuntime.InvokeAsync<byte[]>("someJSMethodReturningAByteArray");