Blazor:位元組陣列 Interop
Blazor 現在支援最佳化的位元組陣列 Interop,這可避免將位元組陣列編碼和解碼為 Base64,並有助於獲取更有效率的 Interop 處理序。 這同時適用於 Blazor Server 和 Blazor WebAssembly。
導入的版本
ASP.NET Core 6.0
從 .NET 在 JavaScript 中接收位元組陣列
舊的行為
function receivesByteArray(data) {
// Previously, data was a Base64-encoded string representing the byte array.
}
新的行為
function receivesByteArray(data) {
// Data is a Uint8Array (no longer requires processing the Base64 encoding).
}
變更原因
進行此變更是為了針對位元組陣列建立更有效率的 Interop 機制。
建議的動作
從 .NET 在 JavaScript 中接收位元組陣列
以這個 .NET Interop 為列,其中您會呼叫傳遞位元組陣列的 JavaScript:
var bytes = new byte[] { 1, 5, 7 };
await _jsRuntime.InvokeVoidAsync("receivesByteArray", bytes);
在上述程式碼範例中,您會將 JavaScript 中的傳入參數視為位元組陣列,而不是 Base64 編碼字串。
將位元組陣列從 JavaScript 傳回至 .NET
如果 .NET 預期 byte[]
,JavaScript 就「應該」提供 Uint8Array
。 您仍然可以使用 btoa
來提供 Base64 編碼陣列,但效能較低。
例如,如果您有下列程式碼,則「應該」從 JavaScript 提供「不是」Base64 編碼的 Uint8Array
:
var bytes = await _jsRuntime.InvokeAsync<byte[]>("someJSMethodReturningAByteArray");