다음을 통해 공유


Blazor: 바이트 배열 interop

Blazor는 이제 바이트 배열을 Base64로 인코딩 및 디코딩하는 것을 방지하고 보다 효율적인 interop 프로세스를 용이하게 하는 최적화된 바이트 배열 interop을 지원합니다. 이는 Blazor 서버와 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의 바이트 배열 수신

바이트 배열을 전달하는 JavaScript를 호출하는 다음 .NET interop을 고려하세요.

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");