Server e APIs no ASP.NET Core .NET 11

O ASP.NET Core 11 começou a tomar forma em discussões públicas do time da Microsoft, e a parte de server e APIs concentra boa parte das prioridades. Ao longo dos anos, o framework deixou de ser apenas uma opção moderna para web e virou peça crítica do ecossistema .NET, sustentando desde APIs minimalistas até plataformas distribuídas e altamente reguladas.

A cada nova versão, o time busca equilíbrio entre inovação, compatibilidade e maturidade operacional. Neste artigo, você vai entender o que foi discutido para o ciclo do .NET 11, por que cada tema importa e o que isso sinaliza para quem mantém APIs em produção.

Como nasce o planejamento do ASP.NET Core 11

No ciclo de planejamento do .NET 11, uma parte importante do alinhamento acontece de forma aberta no ASP.NET Community Standup. Nessas sessões, o time discute roadmap e prioridades diretamente com a comunidade.

O objetivo não é apresentar um plano fechado. Pelo contrário, a ideia é mostrar o direcionamento inicial e coletar sinais reais de clientes e desenvolvedores.

O time deixa claro que o roadmap do ASP.NET Core no .NET 11 começa intencionalmente vazio. Isso acontece porque o planejamento ocorre em etapas, e o que entra no plano depende da priorização feita antes.

Essa postura reduz o risco de promessas públicas sem confirmação. Além disso, reforça que o roadmap é consequência da priorização, e não um ponto de partida.

O papel do GitHub e dos sinais da comunidade

O principal mecanismo de sinalização continua sendo o repositório do ASP.NET Core no GitHub. Por lá, issues e discussões capturam problemas, oportunidades e propostas.

Reações como thumbs up (+1) funcionam como um indicador importante de impacto, mas não o único. O time também avalia gravidade, abrangência e se o tema bloqueia o trabalho ou é apenas desejável.

Além disso, a equipe menciona o uso de IA para analisar tendências em issues e comentários. Ainda assim, os sinais explícitos, especialmente reações e descrições de cenário, seguem como a fonte mais valiosa para decidir.

Na prática, isso muda a forma de participar da evolução do framework. Em vez de pedir funcionalidades de forma genérica, vale mais descrever cenários reais, limitações atuais e objetivos de produtividade.

Temas estratégicos do ciclo .NET 11

O encontro reforçou grupos de investimento que orientam todo o planejamento. Em resumo, o ASP.NET Core deve continuar melhorando o que já funciona bem, reduzir atritos do dia a dia e investir em práticas modernas de desenvolvimento web.

Os principais temas discutidos incluem:

  • Feedback e dores prioritárias enfrentadas por desenvolvedores.
  • Fundamentos do framework: performance, segurança, observabilidade e confiabilidade.
  • Stack moderno: Minimal APIs, Blazor, SignalR, gRPC e cenários contemporâneos.
  • Aplicações distribuídas e integração com Aspire, com desenvolvimento e observabilidade mais consistentes.
  • Padrões e capacidades de IA, incluindo melhores experiências com assistentes como o GitHub Copilot.

A leitura técnica mais importante é que o ASP.NET Core 11 não tenta reinventar o framework. Na verdade, o foco é consolidar as bases para o próximo ciclo, mantendo um runtime rápido e confiável enquanto remove lacunas dos fluxos modernos.

O artigo O que vem por aí no ASP.NET 11 cobre a sessão geral. Aqui, o foco do ASP.NET Core 11 fica na camada de server e APIs.

Prioridades de APIs no ASP.NET Core 11

A sessão de Server e APIs do ASP.NET Core 11 mostra um esforço claro em evoluir as Minimal APIs. O objetivo é fechar as lacunas que ainda existem em relação aos controllers, sem perder o modelo de programação simplificado.

Validação assíncrona no ASP.NET Core 11

No .NET 10, o time adicionou suporte nativo de validação às Minimal APIs. Segundo a documentação de novidades do ASP.NET Core no .NET 10, basta registrar o serviço com AddValidation e usar atributos de DataAnnotations.

using System.ComponentModel.DataAnnotations;

var builder = WebApplication.CreateBuilder(args);

// Registra a validação nativa das Minimal APIs (.NET 10)
builder.Services.AddValidation();

var app = builder.Build();

app.MapPost("/products", (Product product) =>
    TypedResults.Ok(product));

app.Run();

public record Product(
    [Required] string Name,
    [Range(1, 1000)] int Quantity);

Quando a validação falha, o runtime devolve um 400 Bad Request com os detalhes dos erros. O artigo sobre validação em Minimal APIs no .NET 10 mostra esse recurso em detalhes.

Contudo, essa validação funciona essencialmente de forma síncrona. Isso limita cenários reais que dependem de IO, como consultas ao banco, verificação de unicidade ou regras baseadas em dados externos.

A direção para o ASP.NET Core 11 é permitir validação assíncrona. Dessa forma, a validação se alinha a sistemas modernos, em que validar costuma exigir uma integração.

A validação fica na fronteira entre a ergonomia da API e a experiência de quem a consome. Por isso, validar bem reduz inconsistências e código duplicado.

O time também destaca um desafio histórico. O modelo clássico baseado em DataAnnotations domina o ecossistema .NET e não nasceu pensando em async.

Alterar esse comportamento pode afetar outros fluxos, como a validação de formulários no Blazor, que tradicionalmente assume um passo imediato e síncrono. Em outras palavras, a demanda existe, mas o design precisa respeitar as expectativas do stack.

Discriminated unions e o impacto nas APIs

Outro tópico de grande interesse é o suporte a discriminated unions no C#, citado como parte do planejamento do C# 15. A questão central é como esse recurso se integraria ao ASP.NET Core.

Do ponto de vista técnico, as unions resolvem um problema recorrente: endpoints que retornam um entre vários formatos válidos de resposta. Hoje, muitos desenvolvedores criam um tipo agregador com propriedades opcionais para cobrir todos os casos.

Essa solução improvisada gera ambiguidade, piora a documentação e aumenta o risco de erros no consumo. Atualmente, a alternativa nativa mais próxima é o tipo Results<...>, que declara as respostas possíveis de um endpoint.

using Microsoft.AspNetCore.Http.HttpResults;

// Abordagem atual: Results<> declara as respostas possíveis
app.MapGet("/orders/{id:int}", Results<Ok<Order>, NotFound> (int id) =>
    id == 1
        ? TypedResults.Ok(new Order(id, 150.00m))
        : TypedResults.NotFound());

public record Order(int Id, decimal TotalAmount);

Com unions na linguagem, esse tipo de modelagem pode ficar ainda mais expressivo. Na discussão, o time destacou benefícios diretos:

  • Respostas mais explícitas e previsíveis.
  • Documentação OpenAPI mais fiel, com vários formatos de retorno representados corretamente.
  • Clientes mais seguros, porque o consumidor precisa tratar todos os casos.
  • Menos campos nulos que aparecem apenas em determinadas situações.

Essa funcionalidade depende da evolução do C#. Por isso, o ASP.NET Core 11 deve acompanhar o recurso conforme ele amadurecer.

Além disso, o impacto pode chegar ao System.Text.Json, que precisaria serializar esses novos tipos. Como consequência, as camadas do framework que expõem JSON também passariam por revisão.

Para entender a proposta da linguagem, vale ler o artigo sobre union types no .NET 11.

DPoP como camada adicional de segurança

A discussão também menciona interesse no padrão DPoP (Demonstrating Proof of Possession), definido na RFC 9449. Ele adiciona uma camada extra de segurança aos fluxos de autenticação baseados em OAuth 2.0.

Com DPoP, o cliente prova que possui uma chave privada associada ao token. Assim, um token roubado perde boa parte do valor, porque o atacante não consegue gerar essa prova.

A implementação depende do componente Identity Model. Ou seja, algumas entregas do ASP.NET Core 11 dependem do ritmo de outros projetos.

Melhorias desejáveis no ecossistema de APIs

Além das prioridades consideradas obrigatórias, o time citou melhorias importantes para o ciclo:

  • Suporte a atributos de validação em primary constructors.
  • Inferência automática de security schemes do OpenAPI.
  • Mais opções de customização do parameter binding em Minimal APIs.
  • Melhor experiência com AOT e System.Text.Json, com menos falhas pouco óbvias e menos tipos declarados manualmente.

Todas essas iniciativas apontam para o mesmo objetivo. Ou seja, as Minimal APIs devem servir não apenas para começar rápido, mas também para sistemas complexos e com requisitos de governança.

Server e fundamentos no ASP.NET Core 11

A camada de servidor envolve principalmente o Kestrel, os protocolos HTTP e componentes críticos de infraestrutura. Nesse ponto, boa parte do investimento do ASP.NET Core 11 está em endurecer recursos existentes e melhorar a performance em larga escala.

Hardening do HTTP/3 no ASP.NET Core 11

O ASP.NET Core já suporta HTTP/3, mas o protocolo não vem habilitado por padrão. Hoje, você precisa ativá-lo no Kestrel, sempre com HTTPS.

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel((context, options) =>
{
    options.ListenAnyIP(5001, listenOptions =>
    {
        // HTTP/3 junto com HTTP/1.1 e HTTP/2, pois nem toda rede suporta QUIC
        listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
        listenOptions.UseHttps();
    });
});

A meta no ASP.NET Core 11 é um trabalho de hardening. Isso inclui revisar a conformidade com as RFCs, já que parte da implementação seguiu drafts anteriores, além de ampliar a cobertura de testes.

Também entra na lista corrigir lacunas que surgem justamente porque o recurso é menos exercitado no uso padrão. Essa diretriz mostra maturidade, pois o time prefere entregar um recurso robusto antes de torná-lo padrão.

Performance de TLS em conexões curtas

Outro tema que chama atenção é a otimização do TLS, motivada por cargas internas de escala extrema. Times como o de identidade lidam com conexões muito curtas, em que o custo do handshake TLS pesa bastante.

O time citou investigações que encontraram cópias desnecessárias de dados durante o handshake. Segundo a sessão, experimentos iniciais já indicam ganhos significativos.

Esse tipo de melhoria vale muito por dois motivos:

  1. Não exige nenhuma mudança no código da aplicação.
  2. Beneficia de imediato qualquer serviço com alta taxa de conexões, incluindo APIs públicas e gateways.

Renovação de tokens no SignalR

O SignalR é um componente crítico para conexões persistentes. Em aplicações com bearer tokens, existe um problema conhecido: o token expira, mas a conexão pode continuar aberta por muito tempo.

A equipe reconhece que o assunto é complexo e que já houve tentativas de resolvê-lo no .NET 10. Mesmo assim, a expectativa é priorizar o tema no ASP.NET Core 11.

O impacto vai além do SignalR puro. Afinal, o Blazor Server depende do SignalR, então renovar tokens vira requisito de segurança e confiabilidade para interfaces interativas.

Passkeys no ASP.NET Core 11

O .NET 10 adicionou ao ASP.NET Core Identity o suporte a passkeys, baseado nos padrões WebAuthn e FIDO2. De acordo com a documentação de passkeys, apenas o template do Blazor Web App traz esse suporte pronto.

Para o .NET 11, o plano é trabalhar em itens complementares, especialmente em cenários sem senha. Entre os pontos discutidos estão:

  • Criação de conta sem senha desde o início.
  • Migração de senha para passkey depois do login.
  • Integração com APIs que sinalizam quando uma passkey foi revogada.
  • Endpoints que ajudem aplicativos autenticadores a converter credenciais em passkeys de forma mais automática.

Além disso, surgiu uma proposta de design importante. Em vez de ampliar a extensibilidade do MapIdentityApi, o time considera oferecer um scaffolder que gere os endpoints para você copiar e modificar.

Esse caminho é pragmático, porque uma API extensível demais fica difícil de manter. O modelo lembra a interface do Identity, personalizada por geração de código.

Por fim, segue em aberto o suporte adicional a passkeys em interfaces mais antigas, como Razor Pages. Embora o investimento principal de UI esteja no Blazor, muitos projetos continuam usando MVC e Razor Pages.

Runtime async e o impacto no ASP.NET Core 11

Um tópico avançado da sessão é o runtime async, iniciativa do time do runtime para que o próprio .NET entenda o fluxo assíncrono. Hoje, o compilador Roslyn gera máquinas de estado para cada método com async e await.

No .NET 10, esse recurso existia apenas como preview. A expectativa para o .NET 11 é avançar o suporte em várias plataformas, incluindo WebAssembly e ambientes móveis.

A documentação de novidades do runtime do .NET 11 já descreve o recurso como preview opcional, ativado no arquivo de projeto. Ela também informa que as bibliotecas do runtime passaram a ser compiladas com esse modelo.

<PropertyGroup>
  <!-- Ativa o runtime async em um projeto .NET 11 (preview) -->
  <Features>runtime-async=on</Features>
</PropertyGroup>

O papel do ASP.NET Core 11 nesse movimento inclui testar compatibilidade, validar ganhos e evitar regressões de performance. Além da velocidade, a sessão destacou benefícios secundários:

  • Stack traces mais legíveis, porque o IL passa a ter menos máquinas de estado geradas.
  • IL menor e, potencialmente, aplicações menores, já que métodos async aninhados não precisam de grandes transformações do compilador.

Se essa evolução se concretizar, o ASP.NET Core 11 poderá simplificar otimizações internas. Afinal, parte do trabalho manual que o framework faz hoje para ser rápido passaria para o runtime.

YARP como proxy pronto para uso

O encontro também mencionou o YARP (Yet Another Reverse Proxy) como peça importante do ecossistema. Historicamente, ele funciona como biblioteca, e o desenvolvedor configura regras e pipeline dentro de uma aplicação ASP.NET Core.

O ponto relevante é a imagem de container do YARP, disponível em preview no Microsoft Container Registry. Para o .NET 11, a intenção é tirar essa imagem do preview, endurecê-la para produção e ampliar suas capacidades.

Com isso, o YARP pode se tornar um proxy reverso pronto para uso, sem exigir uma aplicação só para hospedá-lo.

O que o ASP.NET Core 11 indica para equipes

Mesmo sem um plano fechado, a sessão permite extrair sinais concretos sobre o ASP.NET Core 11.

Em primeiro lugar, o framework continua priorizando a experiência moderna, com foco explícito em Minimal APIs, SignalR e aplicações distribuídas. Portanto, o direcionamento dos últimos releases segue firme.

Em segundo lugar, existe forte preocupação com segurança prática. Passkeys, DPoP e renovação de tokens em conexões persistentes atacam riscos reais de produção, e não servem apenas como vitrine.

Em terceiro lugar, o investimento em TLS e no hardening do HTTP/3 mostra que muito valor está na camada invisível. Essas melhorias tornam o sistema melhor sem exigir mudanças de código.

Por fim, o runtime async indica mudanças estruturais profundas que vão além do ASP.NET Core. Elas afetam a forma como toda aplicação assíncrona roda e é diagnosticada.

Sessão de Server e APIs em vídeo

A gravação abaixo serviu de base para este artigo sobre o ASP.NET Core 11. Nela, o time detalha cada prioridade.

Para acompanhar o que já chegou de fato nas previews, confira também as novidades do ASP.NET Core no .NET 11 Preview 7.

Conclusão

A discussão de server e APIs do ASP.NET Core 11 reforça um padrão consistente de maturidade. O framework avança em modernidade sem abandonar a previsibilidade e investe em segurança com pragmatismo.

Os temas abordados apontam para um ciclo em que o ASP.NET Core deve:

  • Evoluir as APIs com validação assíncrona e melhor modelagem de retornos.
  • Fortalecer o servidor com hardening do HTTP/3 e melhorias em TLS.
  • Resolver lacunas de conexões persistentes com a renovação de tokens no SignalR.
  • Avançar no mundo sem senha com passkeys e estratégias de scaffolding.
  • Acompanhar mudanças estruturais do runtime, como o runtime async.

Mesmo antes das entregas concretas, essa discussão sobre o ASP.NET Core 11 já tem valor. Ela permite antecipar tendências e participar ativamente do futuro do framework.

FAQ

O roadmap do ASP.NET Core 11 já está fechado?

Não, porque o time começou o planejamento com o roadmap intencionalmente vazio. As prioridades dependem dos sinais da comunidade e de clientes no GitHub.

As Minimal APIs já têm validação nativa?

Sim, desde o .NET 10, com o método AddValidation e atributos de DataAnnotations. A novidade discutida para o .NET 11 é a validação assíncrona.

O que é DPoP?

É o padrão OAuth 2.0 definido na RFC 9449, em que o cliente prova possuir a chave ligada ao token. Assim, um token roubado fica muito mais difícil de reutilizar.

O HTTP/3 vem habilitado por padrão no Kestrel?

Não, você precisa ativá-lo explicitamente e usar HTTPS. O plano do .NET 11 é endurecer a implementação antes de pensar em torná-la padrão.

O que muda com o runtime async?

O runtime passa a controlar a execução assíncrona no lugar das máquinas de estado geradas pelo compilador. Isso promete stack traces mais limpos e menos overhead.