次の方法で共有


Blazor: バイト配列相互運用

Blazor では、最適化されたバイト配列相互運用機能がサポートされるようになりました。これにより、バイト配列の Base64 へのエンコードとデコードが回避され、より効率的な相互運用プロセスが容易になります。 これは、 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).
}

変更の理由

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

.NET から JavaScript でバイト配列を受信する

バイト配列を渡す JavaScript を呼び出す次の .NET 相互運用について考えてみましょう。

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

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

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

.NET でbyte[]が必要な場合、JavaScript はを提供Uint8Arraybtoaを使用して Base64 でエンコードされた配列を提供することはできますが、パフォーマンスは低下します。

たとえば、次のコードがある場合は、Base64 でエンコードされていない JavaScript のUint8Arrayを指定する必要があります

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