O blog da AWS
Portando aplicativos VB.NET legados para o .NET 6.0 com o Porting Assistant for .NET
O Porting Assistant for .NET é uma ferramenta de análise open-source que reduz o esforço manual e as suposições envolvidas na portabilidade de aplicativos .NET Framework para o .NET 6, ajudando os clientes a migrar mais rapidamente para o Linux. Ele identifica incompatibilidades com o .NET 6.0, gera um relatório de avaliação com sugestões de substituição conhecidas e auxilia na portabilidade. Consulte a documentação e blog sobre o lançamento para se familiarizar com o uso do Porting Assistant for .NET.
Desafios na portabilidade de aplicativos legados para a versão mais recente do .NET
Alguns anos atrás, enquanto trabalhava como consultor, ajudei um de meus clientes corporativos a modernizar sua plataforma de tecnologia legada e migrá-la para a AWS. Decidimos migrar toda a plataforma de tecnologia para a versão mais recente do .NET Core. Minha equipe passou mais de algumas semanas identificando pacotes do NuGet compatíveis, pesquisando na Internet para encontrar substitutos para as APIs incompatíveis, etc. Qualquer profissional de software que tenha passado algum tempo portando um aplicativo legado para a versão mais recente do .NET pode se identificar com a minha experiência. Então, em 2020, quando ouvi o anúncio do Porting Assistant for .NET para C#, fiquei muito empolgado. Eu gostaria de ter essa ferramenta quando era consultor ajudando meus clientes a portar seus aplicativos. Poderia ter reduzido os esforços da minha equipe de semanas para dias.
Guia passo a passo para portar aplicativos VB.NET para o .NET 6.0
Neste tutorial, devido à sua popularidade e familiaridade na comunidade de desenvolvedores, estou usando a versão 3.80 do aplicativo nopCommerce convertida em VB.NET.
Pré-requisitos
Para este tutorial, você precisará de:
- Máquina de desenvolvedor com o Visual Studio
- O Porting Assistant for .NET instalado e configurado.
Etapa 1: Baixe a versão 3.80 do aplicativo nopCommerce
Você pode baixar a versão 3.80 do aplicativo nopCommerce usando os seguintes comandos git:
Etapa 2: converter a solução nopCommerce para VB.NET
A versão 3.80 do aplicativo nopCommerce é implementada em C# usando .NET Framework 4.5.1. Então, primeiro, você precisará convertê-lo de C# para VB.NET usando a ferramenta Code Converter.
- Baixe e instale a extensão Code Converter do Visual Studio, conforme mostrado na Figura 1.
Figura 1. Extensão do Code Converter
- Clique com o botão direito na solução nopCommerce e selecione Converter em VB, conforme mostrado na Figura 2.
Figura 2. Opção Converter para VB
- Demorará alguns minutos para converter a solução nopCommerce em NET. Após uma conversão bem-sucedida, o Porting Assistant for .NET recarregará a solução com os arquivos e projetos de origem do VB convertidos.
Etapa 3: Executar uma avaliação de compatibilidade
Em seguida, execute uma avaliação de compatibilidade na solução nopCommerce usando as etapas a seguir.
- Inicie o Porting Assistant for .NET e clique em Get started para executar uma avaliação no projeto, conforme mostrado na Figura 3.
Figura 3. Botão Get started para iniciar a avaliação
- Escolha avaliar uma nova solução e selecione sln no seu drive local, conforme mostrado na Figura 4.
Figura 4. Opção de selecionar uma nova solução para avaliação
- Clique em Avaliar para iniciar a avaliação, conforme mostrado na Figura 5. Devido ao tamanho da solução nopCommerce, levará alguns minutos para ser concluída.
Figura 5. Opção de avaliação para iniciar a avaliação
Etapa 4: Revise os resultados da avaliação usando o painel
O painel do Porting Assistant for .NET oferece um sumário dos resultados da avaliação, incluindo pacotes e APIs incompatíveis, além do número de projetos portados até o momento, caso você tenha começado a portar os projetos.
A Figura 6 mostra que 0 projetos de 35 foram portados até o momento. Um total de 52 pacotes do NuGet são incompatíveis de 56, e 3289 APIs são incompatíveis de 7167.
Figura 6. Painel do Porting Assistant
Etapa 5: Detalhamento das incompatibilidades por projeto
O Porting Assistant for .NET oferece uma interface gráfica detalhada para que você possa clicar na solução para examinar as incompatibilidades por projeto, conforme mostrado na Figura 7.
Figura 7. Visão geral da avaliação
Etapa 6: Visualizações de avaliação
O Porting Assistant for .NET oferece cinco visualizações de avaliação diferentes: projetos, referências de projetos, pacotes do NuGet, APIs e arquivos de origem, conforme mostrado na Figura 8. Essas visões ajudam os desenvolvedores a analisar os resultados da avaliação de diferentes perspectivas. A visualização de pacotes do NuGet fornece detalhes das dependências compatíveis e incompatíveis e das substituições sugeridas, se disponíveis. Da mesma forma, a visualização das APIs lista as APIs incompatíveis, em qual pacote elas estão e quantas vezes são referenciadas. Por fim, você pode se aprofundar na visualização de arquivos de origem e navegar até a linha de origem exata em que a API específica está sendo chamada.
Figura 8. Visões de avaliação
Etapa 7: Usar a visualização de referências do projeto para começar
Minha visualização de avaliação favorita é a referências do projeto, que fornece uma representação visual das dependências do projeto. Ela ajuda os desenvolvedores a decidirem quais projetos iniciar a portar minimizando o esforço geral e ver os resultados rapidamente.
Por exemplo, você pode ver na Figura 9 que a maioria dos projetos depende da biblioteca Nop.Core, então faz sentido portá-la primeiro. Além disso, ajudará você a resolver problemas de máxima compatibilidade em menos tempo.
Figura 9. Visualização gráfica das dependências do projeto
Etapa 8: portar o projeto usando a portabilidade assistida
Embora você possa selecionar todos os projetos na visualização de Projetos usando os checkbox ao lado de cada projeto, para simplificar, escolha apenas o Nop.Core e comece a portá-lo.
- Clique em Port Project depois de selecionar o checkbox ao lado de Core, conforme mostrado na Figura 10.
Figura 10. Visão geral da avaliação
- Em seguida, você será solicitado a escolher o local da portabilidade, conforme mostrado na Figura 11. Você tem a opção de “Modificar origem in place” ou “Copiar para novo local”. Se você tiver clonado o repositório, selecione a opção “Modificar origem in place” para comparar as alterações usando o sistema de controle de versão do Git.
Figura 11. Selecione como você deseja armazenar a solução modificada
- Dependendo do tamanho do projeto e do número de incompatibilidades, a portabilidade pode levar alguns minutos. Quando a portabilidade for concluída, você verá a notificação na parte superior, conforme mostrado na Figura 12.
Figura 12. Painel do Porting Assistant atualizado após a conclusão da avaliação
Etapa 9: criar o projeto e examinar as alterações no código
Depois que a portabilidade estiver concluída, a primeira coisa que você deve fazer é compilar e criar o projeto para garantir que você não receba nenhum erro de compilação.
O mecanismo de sugestões por trás do Porting Assistant for .NET foi projetado para aprender e melhorar os resultados ao longo do tempo, à medida que os clientes optam por compartilhar sua telemetria. Os modelos de dados por trás do mecanismo, que resultam da análise de centenas de milhares de pacotes exclusivos com milhões de versões de pacotes, estão disponíveis no GitHub.
Vamos examinar as alterações de código feitas pelo Porting Assistant for .NET no projeto da biblioteca Nop.Core e nos arquivos de origem relacionados:
- Ele excluiu o arquivo config, conforme mostrado na Figura 13.
Figura 13. Packages.config excluído
- Além disso, ele adicionou os pacotes do NuGet compatíveis ao arquivo core.vbproj, conforme mostrado na Figura 14.
Figura 14. Arquivo de projeto atualizado com os pacotes do NuGet compatíveis
Etapa 10: atualizações manuais para pacotes incompatíveis sem sugestão de substituição
Suponha que não haja nenhuma sugestão de substituição para uma versão de pacote diferente. Nesse caso, você precisa abrir um editor de código-fonte e atualizar o código para usar uma API ou abordagem diferente para corrigi-lo manualmente. Será um processo iterativo.
Etapa 11: repita o processo para o restante dos projetos.
Você precisa repetir o processo para o restante dos projetos para concluir a portabilidade da solução nopCommerce. Você pode usar a visualização gráfica de referências do projeto para priorizar qual projeto deve ser portado com base no número de projetos dependentes.
Conclusão
Este blogpost mostrou como o Porting Assistant for .NET pode ajudar os desenvolvedores a reduzir significativamente o esforço de portar aplicativos legados do .NET Framework escritos em VB.NET para o .NET 6.0. Depois que o aplicativo é portado para o .NET 6.0, os desenvolvedores podem continuar o processo de modernização hospedando em contêineres no Amazon Elastic Container Services ou no Amazon Elastic Kubernetes Service , ou executar contêineres serverless usando o AWS Fargate. Além disso, você pode migrar de contêineres Windows para contêineres Linux e reduzir o custo de hospedagem de aplicativos .NET na AWS, melhorar a escalabilidade e o desempenho das aplicações e reduzir os gastos com licenciamento.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Jignesh Suthar é arquiteto de soluções na AWS com mais de 20 anos de experiência trabalhando com empresas da Fortune 500 e Startups, ajudando-as a migrar e modernizar sua plataforma de tecnlogia usando as tecnologias de nuvem de ponta e hospedá-las em nuvens públicas seguindo as melhores práticas.
Tradutor
Rafael Mantovani é Sr. Partner Solutions Architect na AWS, especializado em workloads Microsoft e trabalhou previamente no time de Enterprise Support da AWS como Technical Account Manager. Trabalha com soluções de TI há mais de 20 anos, como PSA apoia clientes e parceiros a impulsionar a adoção de nuvem AWS usando as melhores práticas.