Blazor: バイト配列相互運用

Blazor では、最適化されたバイト配列相互運用がサポートされるようになりました。これにより、バイト配列を Base64 にエンコードしてデコードする必要がなくなり、より効率的な相互運用プロセスが容易になります これは、Blazor サーバーと Blazor WebAssembly の両方に適用されます。

導入されたバージョン

ASP.NET Core 6.0

JavaScript で .NET からバイト配列を受け取る

以前の動作

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).
}

変更理由

この変更は、バイト配列のより効率的な相互運用メカニズムを作成するために行われました。

JavaScript で .NET からバイト配列を受け取る

JavaScript を呼び出してバイト配列を渡す場合に、この .NET 相互運用を検討してください。

var bytes = new byte[] { 1, 5, 7 };
await _jsRuntime.InvokeVoidAsync("receivesByteArray", bytes);

前のコード例では、JavaScript の入力パラメーターを Base64 でエンコードされた文字列ではなくバイト配列として扱っています。

JavaScript から .NET にバイト配列を返す

.NET で byte[] が予期されている場合、JavaScript で Uint8Array を用意することを "お勧めします"。 btoa を使用して Base64 エンコードされた配列を用意することもできますが、パフォーマンスは低くなります。

たとえば、次のようなコードがある場合は、Base64 でエンコードされて "いない" Uint8Array を JavaScript から提供することを "お勧めします"。

var bytes = await _jsRuntime.InvokeAsync<byte[]>("someJSMethodReturningAByteArray");