A maior e melhor Black Friday que já fizemos! Descontos a partir de 50% em até 12x sem juros - Garanta seu Desconto

Data de Atualização
Controllers no .NET 11: ShortCircuit, unions e validação
Controllers no .NET 11: ShortCircuit, unions e validação

Os controllers no .NET 11 ganham o atributo ShortCircuit, que tira health checks do pipeline de middlewares, e suporte aos union types do C# 15. A validação assíncrona com AsyncValidationAttribute segue exclusiva das Minimal APIs. A recomendação é manter apps existentes no .NET 10, já que ambos perdem suporte em 2028, e usar Minimal APIs em projetos novos.

C# 15: union types e outras novidades
C# 15: union types e outras novidades

O C# 15 chega com o .NET 11 e traz union types, que fecham a lista de tipos de um valor e tornam o switch exaustivo, closed hierarchies, que limitam a herança ao assembly, extension indexers, argumentos with em collection expressions e labeled break e continue. No .NET 10, migrar raramente compensa, pois o suporte acaba no mesmo mês; projetos novos devem nascer no .NET 11.

Lançamento do .NET 11: o que chegou e como atualizar
Lançamento do .NET 11: o que chegou e como atualizar

A Microsoft concluiu o lançamento do .NET 11, versão STS com dois anos de suporte. Os destaques são union types e hierarquias fechadas no C# 15, CLI com Native AOT e MSBuild aquecido, Runtime Async em preview, Zstandard e FullJoin nas bibliotecas, validação assíncrona e OpenAPI 3.2 no ASP.NET Core e CoreCLR no MAUI. A recomendação é sair do .NET 8 e do 9, que perderam suporte.

Sintaxe do C#: guia rápido com exemplos do C# 14
Sintaxe do C#: guia rápido com exemplos do C# 14

A sintaxe do C# 14 com o .NET 10 elimina boa parte do código cerimonial. O guia mostra, com exemplos, top-level statements, csproj, namespaces, tipos, expressões de coleção, métodos, class, record e struct, a palavra-chave field, pattern matching, operadores de nulo, LINQ, async/await e extension members, e recomenda dominar o básico antes de records, LINQ e async.

Async await no C#: o que acontece com um await eterno
Async await no C#: o que acontece com um await eterno

Um async await sobre uma Task que nunca termina não bloqueia thread: a continuação fica numa ilha de referências que o GC coleta sem executar o finally. Só há vazamento quando uma raiz de vida longa, como um SemaphoreSlim estático, segura a espera. O runtime async do .NET 11 não muda isso. Recomenda-se completar todo TaskCompletionSource e usar timeouts e cancelamento.

Collection expression arguments: como usar no C# 15
Collection expression arguments: como usar no C# 15

Collection expression arguments, novidade do C# 15, permitem passar argumentos ao construtor ou ao método Create de uma coleção com um elemento with(...) no início dos colchetes. O recurso cobre capacidade em List, comparador em HashSet, tipos com CollectionBuilder e interfaces como IList, mas exige o with primeiro e não aceita dynamic, arrays nem spans.

Garbage collector no .NET: meça antes de ajustar
Garbage collector no .NET: meça antes de ajustar

O garbage collector no .NET reaproveita a memória de objetos inalcançáveis, mas uso alto de memória tem causas distintas. A tese é medir antes de ajustar: medir alocações com GetAllocatedBytesForCurrentThread e dotnet-trace, reduzi-las com Span, ArrayPool e StringBuilder, controlar o tempo de vida com Dispose e eventos e só então avaliar server GC, DATAS, LOH e regiões sem GC.

Permissões do Claude Code: como proteger projetos .NET
Permissões do Claude Code: como proteger projetos .NET

No auto mode, um classificador decide o que é seguro, mas deixa passar ações incômodas em projetos .NET, como migrations do EF Core escritas à mão e o app rodando em segundo plano. As permissões do Claude Code resolvem isso com regras ask para dotnet ef migrations add e dotnet run, e deny para editar Migrations e atualizar o banco. Deny vence ask e allow em qualquer arquivo.

Queue-based load leveling: o que é e quando falha
Queue-based load leveling: o que é e quando falha

O queue-based load leveling põe uma fila entre produtores e consumidores e nivela picos, mas não reduz o trabalho. Um pico de dez minutos gera 240 mil mensagens e 23 minutos de latência; com média acima da capacidade, a fila nunca drena. A recomendação é calcular média e headroom, limitar instâncias vezes concorrência, usar TimeToLive e descartar carga no produtor.

Skills em pacotes NuGet: como entregar skills para agentes
Skills em pacotes NuGet: como entregar skills para agentes

Skills em pacotes NuGet são arquivos SKILL.md distribuídos ao lado das DLLs, que o dotnet restore entrega ao agente com instruções da versão exata. A Microsoft mostra a descoberta com dotnet-inspect e dotnet-package-skills, recomenda avaliar as skills com modelos de fronteira para não encarecer o uso e alerta que markdown lido por agentes é um novo vetor de ameaça.

Webhooks no .NET: o que são e como implementar
Webhooks no .NET: o que são e como implementar

Webhooks invertem o polling: o sistema externo faz um POST para a sua URL quando o evento ocorre, sem atraso nem consultas repetidas. No .NET 10, o emissor usa IHttpClientFactory e PostAsJsonAsync; o receptor usa MapPost, um singleton com ConcurrentQueue e um evento que o Blazor trata com InvokeAsync. Em produção, use HTTPS, valide assinaturas e trate reenvios com idempotência.

Message threads no Claude: menos latência em agentes
Message threads no Claude: menos latência em agentes

Message threads da Claude API guardam a conversa no servidor por até 5 minutos, e cada turno envia só as mensagens novas e o id da resposta anterior. No Claude Code, sessões de 500 mil a 1 milhão de tokens tiveram queda de cerca de 35% no tempo até o primeiro token, sem mudar o consumo de tokens. O uso exige guardar a conversa, manter campos fixos e fazer replay após erro 404.

Lazy<T> no C#: modos de thread safety e exceções
Lazy<T> no C#: modos de thread safety e exceções

O Lazy<T> adia a criação de objetos, e o LazyThreadSafetyMode define dois comportamentos juntos: None não protege threads, PublicationOnly deixa threads disputarem a fábrica e ExecutionAndPublication executa uma vez. Só PublicationOnly não guarda exceções. Para falhas transitórias, use retry na fábrica, PublicationOnly ou LazyInitializer.

Cache no .NET: FusionCache, Output Cache e qual escolher
Cache no .NET: FusionCache, Output Cache e qual escolher

O FusionCache usa L1 e L2 como o HybridCache, mas sincroniza instâncias com backplane no Redis e traz fail-safe, timeouts e eager refresh. O Output Cache guarda a resposta HTTP inteira e pula handler e banco. A escolha do cache no .NET depende de instâncias e tolerância a dado antigo: Output Cache na frente, cache híbrido nos handlers e IMemoryCache só para não serializáveis.

Percorrer lista em C#: todas as formas, com benchmark
Percorrer lista em C#: todas as formas, com benchmark

Para percorrer lista em C#, o foreach é o padrão, o for atende quando há índice ou substituição, e Index() une os dois no .NET 9. Remoções pedem RemoveAll ou for reverso, async pede await foreach ou Parallel.ForEachAsync. No benchmark, for e foreach empatam, AsSpan é até 26% mais rápido, List.ForEach 1,5 vez e Index() 5,6 vezes mais lentos.

ID gerado pelo banco: por que gerar o ID antes de salvar
ID gerado pelo banco: por que gerar o ID antes de salvar

O ID gerado pelo banco força APIs assíncronas a criar registros provisórios, IDs de operação e eventos gordos, pois o identificador só existe após o insert. Num caso de logística, a solução é gerar o ID no cliente antes da requisição, correlacionar o fluxo por ele, publicar eventos só com o ID e compor a tela por fronteira, com Guid.CreateVersion7 e ValueGeneratedNever no .NET.

Verificação formal com IA: como o Claude prova código
Verificação formal com IA: como o Claude prova código

A Anthropic e a Theorem usaram o Claude para transformar fuzz tests do OSS-Fuzz em provas Rocq e provaram ausência de crash em 239 pontos de entrada de 123 bibliotecas. A verificação formal achou bugs que o fuzzing não pegava, ficou mais barata com modelos novos e reuso de provas, mas só vale para binários RISC-V e para a base confiável.

ValidateOnStart no .NET: como validar IOptions no startup
ValidateOnStart no .NET: como validar IOptions no startup

O ValidateOnStart faz o .NET validar as options na inicialização do host, e não no primeiro acesso a IOptions.Value. Sem ele, uma chave ausente só gera OptionsValidationException na primeira requisição. O artigo liga o appsettings.json a uma classe com Data Annotations e tipos anuláveis, ativa ValidateDataAnnotations e ValidateOnStart e cobre Validate e IValidateOptions.

Cache no .NET: IMemoryCache, Redis ou HybridCache?
Cache no .NET: IMemoryCache, Redis ou HybridCache?

Cache no .NET tem três opções no handler: IMemoryCache é o mais rápido, mas fica preso a um processo; IDistributedCache com Redis compartilha dados e paga rede e JSON; HybridCache une L1 e L2 com tags e proteção contra stampede, mas não sincroniza o L1. Corrija a consulta antes, limite o tamanho, trate Redis fora do ar e use LocalCacheExpiration curto.

Permissões do Claude Code: como configurar no .NET
Permissões do Claude Code: como configurar no .NET

As permissões do Claude Code em projetos .NET resolvem o que o modo auto não pega: migrations do EF Core escritas à mão e app rodando em segundo plano. Regras ask em settings.json exigem aprovação para dotnet run e migrations add; regras deny bloqueiam a pasta Migrations e o database update. Deny vence em qualquer arquivo, e ask vence allow.

Primary constructor no C#: o que muda na inicialização
Primary constructor no C#: o que muda na inicialização

Trocar um construtor tradicional por primary constructor no C# muda quando o valor do parâmetro chega ao objeto. Se a classe base lê um membro virtual, a versão clássica enxerga null, pois o campo só recebe o valor após a base, enquanto o primary constructor grava um campo oculto antes. O artigo mostra o código gerado, o caso do bUnit e cuidados com readonly e o aviso CS9124.

TypeScript 7.1 Beta: o que muda e como testar
TypeScript 7.1 Beta: o que muda e como testar

O TypeScript 7.1 Beta entrega a API que faltava no compilador nativo em Go, com snapshots, sistemas de arquivos virtuais e content mappers para Vue, Svelte e Astro. Traz import attributes em módulos ambientes, source phase imports, target es2026, até 49,6% menos memória e checagem mais rígida em tipos distributivos. Vale testar a beta em um branch antes da versão final.

BYOK no Copilot SDK: como usar seu próprio modelo em C#
BYOK no Copilot SDK: como usar seu próprio modelo em C#

Com BYOK no Copilot SDK, o runtime de agentes do Copilot CLI continua local, mas o ProviderConfig envia a inferência para um modelo seu, como uma implantação do Microsoft Foundry na Responses API. O console em .NET 10 lê User Secrets, autentica com Entra ID ou API key, cria uma sessão sem ferramentas e alerta que MaxOutputTokens baixo zera respostas de modelos de raciocínio

HybridCache no .NET: o que é e como usar
HybridCache no .NET: o que é e como usar

HybridCache é a API de cache do .NET que une memória local (L1) e Redis (L2) em um GetOrCreateAsync, com proteção contra stampede e invalidação lógica por tags. O artigo mostra como registrar o serviço, separar Expiration de LocalCacheExpiration, montar chaves seguras, usar SetAsync e RemoveAsync, trocar o serializador e reutilizar instâncias imutáveis.