<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>WebAssembly | The .NET Blog</title><link>https://thedotnetblog.com/pt/tags/webassembly/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>pt</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Sat, 23 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/pt/tags/webassembly/index.xml" rel="self" type="application/rss+xml"/><item><title>Como o Copilot Studio Migrou para .NET 10 WebAssembly e Ficou 20% Mais Rápido</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/copilot-studio-net10-webassembly-migration-performance/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/copilot-studio-net10-webassembly-migration-performance/</guid><description>As melhorias do .NET 10 WASM não são apenas para novos projetos. Aqui está o que o Copilot Studio mediu após a atualização do .NET 8: fingerprinting automático, WasmStripILAfterAOT por padrão e números reais de desempenho de execução.</description><content:encoded>&lt;p&gt;A equipe do Copilot Studio fez algo sobre o qual todos os desenvolvedores Blazor WASM estavam curiosos: eles realmente atualizaram uma aplicação de produção do .NET 8 para o .NET 10 e mediram os resultados. O post compartilha números específicos, o que é raro e genuinamente útil.&lt;/p&gt;
&lt;h2 id="a-migração-foi-chata-isso-é-positivo"&gt;A Migração Foi Chata (Isso é Positivo)&lt;/h2&gt;
&lt;p&gt;Atualizar o framework de destino, atualizar as referências de pacotes, corrigir as alterações breaking. É isso. O build do .NET 10 agora está rodando em produção. A migração em si não foi a parte interessante — as mudanças no .NET 10 são.&lt;/p&gt;
&lt;h2 id="fingerprinting-automático-de-assets"&gt;Fingerprinting Automático de Assets&lt;/h2&gt;
&lt;p&gt;Anteriormente, distribuir um app WASM significava escrever scripts personalizados para renomear os assets publicados com hashes SHA256 para invalidação de cache. O Copilot Studio tinha um script PowerShell fazendo exatamente isso — renomear arquivos, injetar atributos &lt;code&gt;integrity&lt;/code&gt; no loader JavaScript, gerenciar tudo manualmente.&lt;/p&gt;
&lt;p&gt;No .NET 10, tudo isso está integrado. Os assets publicados são automaticamente marcados com fingerprint, importados diretamente de &lt;code&gt;dotnet.js&lt;/code&gt; e validados com integridade sem intervenção manual. A equipe deletou o script de renomeação.&lt;/p&gt;
&lt;p&gt;Pequena mudança em escopo, redução significativa de complexidade.&lt;/p&gt;
&lt;h2 id="wasmstripilafteraot-agora-está-ativado-por-padrão"&gt;WasmStripILAfterAOT Agora Está Ativado por Padrão&lt;/h2&gt;
&lt;p&gt;No .NET 8, remover IL de assemblies compiladas AOT era opt-in. No .NET 10 é o padrão. Após a compilação AOT, o bytecode IL original é removido da saída — não é necessário em tempo de execução, e mantê-lo inflava o tamanho do pacote sem razão.&lt;/p&gt;
&lt;p&gt;O Copilot Studio usa uma otimização específica: ele distribui tanto um motor JIT (inicialização rápida) quanto um motor AOT (desempenho máximo em estado estável), carregando ambos em paralelo e transferindo de JIT para AOT quando estiver pronto. Também deduplica arquivos idênticos entre os dois motores.&lt;/p&gt;
&lt;p&gt;O novo comportamento de stripping do IL significa que os assemblies AOT não correspondem mais bit a bit com seus equivalentes JIT, então menos arquivos são deduplicados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET 8: 59 arquivos compartilhados&lt;/li&gt;
&lt;li&gt;.NET 10: 22 arquivos compartilhados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Resultado líquido: tamanho do pacote aproximadamente 15% maior para o motor AOT. O download AOT é ~6% mais lento em LAN rápida, ~17% mais lento em 4G. Mas tudo acontece em segundo plano depois que o app já está interativo.&lt;/p&gt;
&lt;h2 id="os-números-de-desempenho"&gt;Os Números de Desempenho&lt;/h2&gt;
&lt;p&gt;Esta é a parte que importa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;~20% mais rápido&lt;/strong&gt; na primeira chamada (caminho frio)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;~5% mais rápido&lt;/strong&gt; nas chamadas subsequentes (caminho quente)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As melhorias são mais visíveis em &amp;ldquo;bots grandes&amp;rdquo; — agentes grandes e complexos onde o código compilado AOT domina. Para fluxos de trabalho mais simples o ganho é menor.&lt;/p&gt;
&lt;h2 id="se-você-ainda-está-no-net-8"&gt;Se Você Ainda Está no .NET 8&lt;/h2&gt;
&lt;p&gt;A história de migração é genuinamente simples: atualize &lt;code&gt;&amp;lt;TargetFramework&amp;gt;&lt;/code&gt;, atualize as referências de pacotes, remova quaisquer scripts de fingerprinting personalizados, e você se beneficiará automaticamente do &lt;code&gt;WasmStripILAfterAOT&lt;/code&gt;. Se você estiver compilando AOT, espere ganhos de desempenho similares.&lt;/p&gt;
&lt;p&gt;Uma nota do post: se você carregar o runtime .NET WASM dentro de um &lt;code&gt;WebWorker&lt;/code&gt;, defina &lt;code&gt;dotnetSidecar = true&lt;/code&gt; ao inicializar.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/dotnet/copilot-studio-dotnet-10-migration/"&gt;Copilot Studio gets faster with .NET 10 on WebAssembly&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>