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");
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET