Blazor: interop między tablicami bajtów
Blazor Obsługuje teraz zoptymalizowane międzyoperacyjnie tablicy bajtów, co pozwala uniknąć kodowania i dekodowania tablic bajtowych w bazie Base64 i ułatwia bardziej wydajny proces międzyoperacyjności. Dotyczy to zarówno serwera, jak Blazor i Blazor zestawu WebAssembly.
Wprowadzona wersja
ASP.NET Core 6.0
Odbieranie tablicy bajtów w języku JavaScript z platformy .NET
Stare zachowanie
function receivesByteArray(data) {
// Previously, data was a Base64-encoded string representing the byte array.
}
Nowe zachowanie
function receivesByteArray(data) {
// Data is a Uint8Array (no longer requires processing the Base64 encoding).
}
Przyczyna wprowadzenia zmiany
Ta zmiana została wprowadzona w celu utworzenia bardziej wydajnego mechanizmu międzyoperacyjnego dla tablic bajtów.
Zalecana akcja
Odbieranie tablicy bajtów w języku JavaScript z platformy .NET
Rozważmy tę międzyoperację platformy .NET, w której wywołujesz metodę w języku JavaScript przekazującą tablicę bajtów:
var bytes = new byte[] { 1, 5, 7 };
await _jsRuntime.InvokeVoidAsync("receivesByteArray", bytes);
W poprzednim przykładzie kodu należy traktować parametr przychodzący w języku JavaScript jako tablicę bajtów zamiast ciągu zakodowanego w formacie Base64.
Zwracanie tablicy bajtów z języka JavaScript do platformy .NET
Jeśli platforma .NET oczekuje byte[]
elementu , język JavaScript powinien dostarczyć element Uint8Array
. Nadal można udostępnić tablicę zakodowaną w formacie Base64 przy użyciu btoa
metody , jednak jest to mniej wydajne.
Jeśli na przykład masz następujący kod, należy podać kod Uint8Array
z języka JavaScript, który nie jest zakodowany w formacie Base64:
var bytes = await _jsRuntime.InvokeAsync<byte[]>("someJSMethodReturningAByteArray");