Partilhar via


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 se tornam disponíveis e geralmente são compostos por muitas decisões legadas. Este guia fornece abordagens práticas e ferramentas para atualizar aplicativos do ASP.NET Framework para o ASP.NET Core com o mínimo de alterações possível.

Por que a migração é um desafio

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:

Acumulação de Dívida Técnica

As aplicações de produção muitas vezes acumularam dívidas técnicas ao longo de anos de desenvolvimento:

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

Preocupações transversais

Muitos aplicativos têm preocupações transversais que abrangem várias camadas e precisam de 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 - Necessidade de manter o registro 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 - Estabelecimento de padrões consistentes de tratamento de erros em ambos os aplicativos
  • Gerenciamento de configuração - Gerenciando configurações que precisam ser compartilhadas ou sincronizadas entre aplicativos
  • Injeção de dependência - Migração de vários contêineres 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 .NET moderna para aplicativos do ASP.NET Framework. Para obter detalhes, consulte .NET Generic Host in ASP.NET Framework.

Cadeias de dependência de biblioteca

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

  • Complexidade da árvore de dependência - As bibliotecas devem ser atualizadas segundo a ordem de pós-ordem da pesquisa em profundidade.
  • Requisitos de multisegmentação - As bibliotecas precisam oferecer suporte a todas as versões de estrutura direcionadas pelo aplicativo.
  • Compatibilidade de API - Garantir que as bibliotecas funcionem com ambas as versões da estrutura durante o período de migração
  • Complexidade de teste - Cada atualização de biblioteca requer testes completos para garantir a compatibilidade

Diferenças na arquitetura de aplicativos

As diferenças fundamentais entre ASP.NET Quadro e ASP.NET Núcleo criam desafios adicionais:

  • Modelos de hospedagem - Diferentes abordagens para hospedagem de aplicativos e gerenciamento do ciclo de vida
  • Pipeline de middleware - Movendo-se de módulos e manipuladores do HTTP para middleware
  • Processamento de pedidos - Diferentes modelos e contextos de processamento de pedidos
  • 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 preferida para a maioria dos aplicativos de produção, pois permite que as equipes resolvam esses problemas gradualmente, mantendo um aplicativo funcional na 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 mergulho profundo

Comece aqui: Escolha seu caminho de migração

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

Guia de decisão rápida

Responda a estas perguntas para escolher a sua abordagem:

  1. Qual é o seu cronograma e tolerância ao risco?

  2. Qual é o tamanho da sua aplicação?

  3. Tem dependências complexas?

Migração incremental

A migração incremental é uma implementação do padrão Strangler Fig e é melhor para projetos maiores ou projetos que precisam continuar em produção durante uma migração. Consulte Introdução à migração incremental de ASP.NET para ASP.NET Core para começar a migrar uma aplicação de forma gradual.

Migração in-situ

No local, a migração pode funcionar para aplicações suficientemente pequenas. Se possível, isso permite uma rápida substituição do aplicativo. No entanto, pequenos problemas podem ser agravados se decidir fazer uma migração in situ. Consulte Aprenda para atualizar do ASP.NET MVC, Web API e Web Forms para ASP.NET Core para informações sobre as opções de ferramentas de migração.