Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 técnico de dívidas
Os aplicativos de produção geralmente acumularam 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 herdadas 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
Preocupações Transversais
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 consistentemente
- 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ência de biblioteca
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ência – as bibliotecas devem ser atualizadas na ordem de pesquisa em profundidade pós-fixada
- 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 um teste completo para garantir a compatibilidade
Diferenças de arquitetura de aplicativo
As diferenças fundamentais entre ASP.NET Framework e ASP.NET Core criam desafios adicionais:
- 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, pois 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
Seu aplicativo ASP.NET Framework pode passar com êxito para ASP.NET Core. A chave é escolher a abordagem certa para sua situação específica.
Guia de decisão rápida
Responda a estas perguntas para escolher sua abordagem:
Qual é a sua linha do tempo e tolerância a riscos?
- Precisa permanecer em produção durante a migração → migração incremental
- Pode ter uma reescrita completa → Migração in-loco
Qual é o tamanho do aplicativo?
- Aplicativos de pequeno e médio porte → Migração no mesmo local
- Aplicativos de produção grandes → a migração incremental é mais segura
Você tem dependências complexas?
- Dependências desconhecidas ou desatualizadas → migração incremental
- Uso intenso do System.Web → Migração incremental
- Dependências mínimas → Migração local
Migração incremental
A migração incremental é uma implementação do padrão Strangler Fig e é melhor para projetos ou projetos maiores que precisam continuar em produção durante uma migração. Veja Introdução à migração incremental de ASP.NET para ASP.NET Core para começar a migrar um aplicativo de forma incremental.
Migração local
A migração no local pode funcionar para aplicativos suficientemente pequenos. Se possível, isso permite uma substituição rápida do aplicativo. No entanto, pequenos problemas poderão ser agravados se você decidir fazer uma migração in loco. Consulte Learn para obter informações sobre como atualizar de ASP.NET MVC, API Web e Web Forms para ASP.NET Core para obter informações sobre ferramentas de migração.