· · 2 분 소요

Copilot Studio가 .NET 10 WebAssembly로 마이그레이션하여 20% 빨라진 방법

.NET 10 WASM 개선 사항은 새 프로젝트만을 위한 것이 아닙니다. .NET 8에서 업그레이드한 후 Copilot Studio가 측정한 것: 자동 지문 인식, 기본값 WasmStripILAfterAOT, 실제 실행 성능 수치.

.NET .NET 10 WebAssembly Blazor Performance
이 글은 다른 언어로도 제공됩니다:English, Català, Español, Deutsch, Français, Português, Italiano, 日本語, 中文, Русский, हिन्दी, Polski, Türkçe, العربية, Bahasa Indonesia, Nederlands

Copilot Studio 팀은 모든 Blazor WASM 개발자들이 궁금해했던 것을 실행했습니다: 프로덕션 애플리케이션을 .NET 8에서 .NET 10으로 실제로 업그레이드하고 결과를 측정했습니다. 게시물은 구체적인 수치를 공유하는데, 이는 드물고 진정으로 유용합니다.

업그레이드는 지루했습니다 (이것은 좋은 일입니다)

타겟 프레임워크 업데이트, 패키지 참조 새로 고침, 주요 변경 사항 수정. 그게 전부입니다. .NET 10 빌드가 이제 프로덕션에서 실행되고 있습니다. 마이그레이션 자체는 흥미로운 부분이 아니었습니다—.NET 10의 변경 사항이 그렇습니다.

자동 에셋 지문 인식

이전에는 WASM 앱을 배포하려면 캐시 무효화를 위해 SHA256 해시로 게시된 에셋의 이름을 바꾸는 사용자 정의 스크립트를 작성해야 했습니다. Copilot Studio에는 정확히 이를 수행하는 PowerShell 스크립트가 있었습니다—파일 이름 바꾸기, JavaScript 로더에 integrity 속성 주입, 모든 것을 수동으로 관리.

.NET 10에서는 이 모든 것이 내장되어 있습니다. 게시된 에셋은 자동으로 지문 인식되고, dotnet.js에서 직접 가져오며, 수동 개입 없이 무결성 검증됩니다. 팀은 이름 바꾸기 스크립트를 삭제했습니다.

범위의 작은 변경, 복잡성의 상당한 감소.

WasmStripILAfterAOT가 이제 기본적으로 활성화

.NET 8에서는 AOT 컴파일된 어셈블리에서 IL을 제거하는 것이 옵트인이었습니다. .NET 10에서는 기본값입니다. AOT 컴파일 후 원본 IL 바이트코드가 출력에서 제거됩니다—런타임에 필요하지 않으며, 이를 유지하면 이유 없이 패키지 크기가 커졌습니다.

Copilot Studio는 특정 최적화를 사용합니다: JIT 엔진(빠른 시작)과 AOT 엔진(최대 안정 상태 성능) 둘 다 배포하고, 둘 다 병렬로 로드하여 준비되면 JIT에서 AOT로 핸드오프합니다. 두 엔진 간에 동일한 파일도 중복 제거합니다.

새로운 IL 제거 동작은 AOT 어셈블리가 더 이상 JIT 대응물과 비트 단위로 일치하지 않음을 의미하므로 더 적은 파일이 중복 제거됩니다:

  • .NET 8: 59개의 공유 파일
  • .NET 10: 22개의 공유 파일

결과: AOT 엔진의 패키지 크기가 약 15% 더 커집니다. AOT 다운로드는 빠른 LAN에서 ~6% 느리고, 4G에서 ~17% 느립니다. 하지만 이 모든 것은 앱이 이미 인터랙티브해진 후 백그라운드에서 발생합니다.

성능 수치

이것이 중요한 부분입니다:

  • 첫 번째 호출 시 ~20% 더 빠름 (콜드 패스)
  • 후속 호출 시 ~5% 더 빠름 (웜 패스)

개선 사항은 “큰 봇"에서 가장 눈에 띕니다—AOT 컴파일된 코드가 지배하는 크고 복잡한 에이전트. 더 단순한 워크플로우에서는 이득이 더 작습니다.

아직 .NET 8을 사용 중이라면

마이그레이션 이야기는 진정으로 간단합니다: <TargetFramework>를 업데이트하고, 패키지 참조를 업데이트하고, 사용자 정의 지문 인식 스크립트를 제거하면, 자동으로 WasmStripILAfterAOT의 혜택을 받게 됩니다. AOT를 컴파일하는 경우 유사한 성능 향상을 기대하세요.

게시물의 참고 사항: WebWorker 내에서 .NET WASM 런타임을 로드하는 경우 초기화 시 dotnetSidecar = true를 설정하세요.

원본 게시물: Copilot Studio gets faster with .NET 10 on WebAssembly

공유:
이 글의 소스 코드를 GitHub에서 보기 ↗
← Azure SQL이 이제 임베딩을 생성할 수 있습니다 — 순수 T-SQL로, 앱 레이어 없이
Cosmos DB Shell이 공개 미리 보기 중 — 그리고 MCP 서버가 내장되어 있습니다 →