Sdílet prostřednictvím


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.

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