Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 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 frequentemente acumulam dívida técnica 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 legadas e configurações de projetos que não são compatíveis com o .NET moderno.
- Uso obsoleto de API que precisa de ser substituído por alternativas modernas.
- Avisos de compiladores 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:
- Gestão do estado de sessão - O ASP.NET Framework e o 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 frameworks.
- Registo e monitorização - É necessário manter registos consistentes em ambas as aplicações durante a migração.
- Estratégias de armazenamento em cache - O armazenamento em cache em memória, distribuído ou de saída tem de ser mantido de forma consistente.
- Gestão de erros - Estabelecer padrões consistentes de tratamento de erros em ambas as aplicações.
- Gestão de configuração - Gerir definições que precisam de ser partilhadas ou sincronizadas entre aplicações.
- Injeção de dependências - Migração de vários contentores DI para o contentor incorporado 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 bibliotecas
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ências - Deve atualizar as bibliotecas pela ordem 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 API - Garantir que as bibliotecas funcionam com ambas as versões do framework durante o período de migração.
- Complexidade de testes - Cada atualização de biblioteca requer testes rigorosos para garantir a compatibilidade.
Diferenças na arquitetura da aplicação
As diferenças fundamentais entre o ASP.NET Framework e o ASP.NET Core 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
Estes desafios tornam a migração incremental a abordagem preferida para a maioria das aplicações de produção. Esta abordagem permite que as equipas resolvam estas questões gradualmente, mantendo uma aplicação funcional em produção.
Para documentação sobre áreas importantes que mudaram, consulte os tópicos associados disponíveis em Cenários de migração complexa - Áreas de análise profunda.
Comece aqui: Escolha seu caminho de migração
Pode mover com sucesso a sua aplicação do ASP.NET Framework para o ASP.NET Core. A chave é escolher a abordagem certa para a sua situação específica.
Tip
Independentemente do caminho que escolher, o agente de modernização da aplicação GitHub Copilot app pode avaliar a sua solução, gerar um plano de atualização e automatizar muitos dos passos de migração. Para mais informações, consulte Saiba como atualizar do ASP.NET MVC, da Web API e dos Web Forms para o ASP.NET Core.
Guia de decisão rápida
Responda a estas perguntas para escolher a sua abordagem:
Qual é o seu cronograma e tolerância ao risco?
- Necessidade de permanecer em produção durante a migração → Migração incremental
- Pode realizar uma reescrita completa → migração no local
Qual é o tamanho da sua aplicação?
- Aplicações pequenas e médias → Migração no local
- Grandes aplicativos de produção → A migração incremental é mais segura
Tem dependências complexas?
- Dependências desconhecidas ou desatualizadas → Migração incremental
- Uso intenso de System.Web → migração incremental
- Dependências mínimas → Migração no local
Migração incremental
A migração incremental é uma implementação do padrão Strangler Fig. É melhor para projetos maiores ou projetos que precisam de continuar em produção durante a migração. Para começar a migrar uma aplicação de forma incremental, veja Começar com migração incremental de ASP.NET para ASP.NET Core.
Migração in-situ
No local, a migração pode funcionar para aplicações suficientemente pequenas. Se possível, esta abordagem permite uma substituição rápida da aplicação. No entanto, pequenos problemas podem agravar-se se decidir fazer uma migração no local. Para informações sobre opções de ferramentas de migração, consulte Aprender a atualizar do ASP.NET MVC, Web API e Web Forms para ASP.NET Core.