Migrar do ASP.NET Framework para o ASP.NET Core

Atualizar um aplicativo do ASP.NET Framework para o ASP.NET Core não é trivial para a maioria dos aplicativos de produção. Esses aplicativos geralmente incorporam novas tecnologias à medida que ficam disponíveis e geralmente são compostos por muitas decisões herdadas. Este guia fornece abordagens práticas e ferramentas para atualizar aplicativos do ASP.NET Framework para ASP.NET Core com o mínimo de alterações possível.

Por que a migração é desafiadora

A migração do ASP.NET Framework para o ASP.NET Core envolve vários desafios complexos que tornam uma reescrita completa difícil e arriscada para a maioria dos aplicativos de produção:

Acúmulo de dívida técnica

Os aplicativos de produção geralmente acumulam dívidas técnicas ao longo de anos de desenvolvimento:

  • Dependências do System.Web – o uso generalizado de HttpContext e tipos associados em uma base de código.
  • Dependências de pacote desatualizadas que podem não ter equivalentes compatíveis modernos.
  • Ferramentas de compilação legadas e configurações de projeto que não são compatíveis com o .NET moderno.
  • Uso preterido da API que precisa ser substituído por alternativas modernas.
  • Avisos do compilador e problemas de qualidade de código que complicam a migração.

Interesses paralelos

Muitos aplicativos têm preocupações transversais que abrangem várias camadas e precisam de uma coordenação cuidadosa durante a migração:

  • Gerenciamento de estado de sessão – ASP.NET Framework e ASP.NET Core têm apis e comportamentos de sessão fundamentalmente diferentes.
  • Autenticação e autorização – diferentes modelos de autenticação e APIs entre estruturas.
  • Registro em log e monitoramento – é necessário manter o registro em log consistente em ambos os aplicativos durante a migração.
  • Estratégias de cache – o cache na memória, distribuído ou de saída precisa ser mantido de forma consistente.
  • Tratamento de erros – estabelecendo padrões consistentes de tratamento de erros em ambos os aplicativos.
  • Gerenciamento de configuração – Gerenciamento de configurações que precisam ser compartilhadas ou sincronizadas entre aplicativos.
  • Injeção de dependência – Migração de vários contêineres de DI para o contêiner interno do ASP.NET Core.

O padrão de host genérico pode ajudar a resolver várias dessas preocupações trazendo a infraestrutura moderna do .NET para aplicativos do ASP.NET Framework. Para obter detalhes, consulte o Host Genérico do .NET no ASP.NET Framework.

Cadeias de dependências de bibliotecas

As bibliotecas de suporte geralmente têm relações de dependência complexas que exigem uma ordenação de atualização cuidadosa:

  • Complexidade da árvore de dependências — Você deve atualizar as bibliotecas na ordem de pesquisa em profundidade pós-ordem.
  • Requisitos de multidestino – as bibliotecas precisam dar suporte a todas as versões de framework direcionadas por o aplicativo.
  • Compatibilidade da API – garantir que as bibliotecas funcionem com ambas as versões da estrutura durante o período de migração.
  • Testar a complexidade – cada atualização de biblioteca requer testes completos para garantir a compatibilidade.

Diferenças na arquitetura do aplicativo

As diferenças fundamentais entre ASP.NET Framework e ASP.NET Core criar desafios extras:

  • Modelos de hospedagem – abordagens diferentes para hospedagem de aplicativos e gerenciamento de ciclo de vida
  • Pipeline de middleware – migrar de módulos e manipuladores HTTP para o middleware
  • Processamento de solicitações – diferentes modelos e contextos de processamento de solicitação
  • Características de desempenho – diferentes padrões de uso de memória e perfis de desempenho

Esses desafios tornam a migração incremental a abordagem preferencial para a maioria dos aplicativos de produção. Essa abordagem permite que as equipes resolvam esses problemas gradualmente, mantendo um aplicativo de trabalho em produção.

Para obter documentação sobre áreas importantes que foram alteradas, consulte os tópicos associados disponíveis em cenários de migração complexos – áreas de aprofundamento.

Comece aqui: escolha seu caminho de migração

Você pode mover com êxito seu aplicativo ASP.NET Framework para ASP.NET Core. A chave é escolher a abordagem certa para sua situação específica.

Dica

Independentemente do caminho escolhido, o agente de modernização do GitHub aplicativo Copilot pode avaliar sua solução, gerar um plano de atualização e automatizar muitas das etapas de migração. Para obter mais informações, consulte Saiba como atualizar de ASP.NET MVC, API Web e Web Forms para ASP.NET Core.

Guia de decisão rápida

Responda a estas perguntas para escolher sua abordagem:

  1. Qual é a sua linha do tempo e tolerância a riscos?

  2. Qual é o tamanho do aplicativo?

  3. Você tem dependências complexas?

Migração incremental

A migração incremental é uma implementação do padrão do Strangler Fig. É mais indicado para projetos maiores ou para projetos que precisam permanecer em produção ao longo de toda a migração. Para começar a realizar a migração incremental de um aplicativo, consulte Introdução à migração incremental de ASP.NET para ASP.NET Core.

Migração local

A migração no local pode funcionar para aplicativos suficientemente pequenos. Se possível, essa abordagem permite uma substituição rápida do aplicativo. No entanto, pequenos problemas podem se agravar se você decidir fazer uma migração local. Para obter informações sobre as opções de ferramentas de migração, consulte Learn para atualizar de ASP.NET MVC, API Web e Web Forms para ASP.NET Core.