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 はを提供Uint8Array。
btoaを使用して Base64 でエンコードされた配列を提供することはできますが、パフォーマンスは低下します。
たとえば、次のコードがある場合は、Base64 でエンコードされていない JavaScript のUint8Arrayを指定する必要があります。
var bytes = await _jsRuntime.InvokeAsync<byte[]>("someJSMethodReturningAByteArray");
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET