O blog da AWS

Portando aplicativos VB.NET legados para o .NET 6.0 com o Porting Assistant for .NET

Por Jignesh Suthar, Arquiteto de Soluções, Microsoft Platform 

Desde seu lançamento em 2002, o Visual Basic .NET (VB.NET) tem sido uma escolha popular para desenvolvedores de software que criam aplicativos baseados em Windows. Com o lançamento do .NET 6.0, algumas mudanças interessantes estão disponíveis para os desenvolvedores. Essa versão do .NET apresenta alguns recursos incríveis que certamente tornarão seus aplicativos mais rápidos, confiáveis e fáceis de manter. Mas e se você possuir aplicativos legados do VB.NET Framework que precisem migrar para o .NET 6.0 para aproveitar esses benefícios? Não se preocupe, o Porting Assistant for .NET pode ajudar!Recentemente, a AWS anunciou o suporte à portabilidade de aplicativos .NET Framework escritos em VB.NET para .NET 6.0 com o Porting Assistant for .NET. Com esta versão, o Porting Assistant for .NET traduz bibliotecas de classe VB.NET, APIs da Web e aplicativos de console para .NET Core 3.1, .NET 5 ou .NET 6 para simplificar a modernização de aplicativos preexistentes do .NET Framework escritos em VB.NET. Este blogpost fornecerá orientações passo a passo sobre como portar seus aplicativos VB.Net legados para a versão mais recente do .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:

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:

1.	git clone https://github.com/nopSolutions/nopCommerce.git
2.	git checkout release-3.80  
Bash

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.

  1. Baixe e instale a extensão Code Converter do Visual Studio, conforme mostrado na Figura 1.

Code Converter ExtensionFigura 1. Extensão do Code Converter

  1. Clique com o botão direito na solução nopCommerce e selecione Converter em VB, conforme mostrado na Figura 2.

Convert to VB menu option

Figura 2. Opção Converter para VB

  1. 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.

  1. Inicie o Porting Assistant for .NET e clique em Get started para executar uma avaliação no projeto, conforme mostrado na Figura 3.

Get Started button to initiate assessment

Figura 3. Botão Get started para iniciar a avaliação

  1. Escolha avaliar uma nova solução e selecione sln no seu drive local, conforme mostrado na Figura 4.

Option to select new solution for assessment

Figura 4. Opção de selecionar uma nova solução para avaliação

  1. 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.

Assess option to begin the assessment

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.

Porting Assistant Dashboard

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.

Assessment overview

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.

Various assessment views

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.

Graphical view of projects dependencies

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.

  1. Clique em Port Project depois de selecionar o checkbox ao lado de Core, conforme mostrado na Figura 10.

Assessment overview

Figura 10. Visão geral da avaliação

  1. 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.

Select how you want to store the modified solution

Figura 11. Selecione como você deseja armazenar a solução modificada

  1. 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.

Updated Porting Assistant Dashboard after assessment is done

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:

  1. Ele excluiu o arquivo config, conforme mostrado na Figura 13.

Deleted packages.config

Figura 13. Packages.config excluído

  1. Além disso, ele adicionou os pacotes do NuGet compatíveis ao arquivo core.vbproj, conforme mostrado na Figura 14.

Updated project file with the compatible NuGet packages

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.