O blog da AWS

Acelere a modernização de.NET com o AWS Toolkit for .NET Refactoring

Por Matt Cline, Arquiteto de Soluções Sênior Amazon Web Services
No final de Outubro de 2022 anunciamos a disponibilidade geral do AWS Toolkit for .NET Refactoring, uma extensão para o Visual Studio 2019 e o Visual Studio 2022. Essa extensão ajuda a transformar suas aplicações .NET Framework legadas em uma arquitetura moderna e otimizada para a nuvem, permitindo que você aproveite totalmente os benefícios de custos reduzidos, maior tempo de atividade e escalabilidade aprimorada.As empresas estão procurando modernizar suas aplicações legadas para aproveitar ao máximo a nuvem. No entanto, a modernização é um processo complexo, geralmente envolvendo refatorar uma arquitetura monolítica, encontrar substitutos multiplataforma para dependências específicas do Windows e atualizar as configurações da aplicação para serem executadas em ambiente de contêiner ou serverless. Durante todo esse processo, desenvolvedores precisam testar e validar continuamente suas alterações.

O AWS Toolkit for .NET Refactoring permite um fluxo de trabalho de modernização de ponta a ponta diretamente no Visual Studio. A extensão avalia aplicações em .NET Framework para refatoração em .NET moderno (anteriormente denominado .NET Core), traduz as configurações de IIS e de Active Directory para funcionar com Linux e outras tecnologias de código aberto e ajuda a empacotar aplicações .NET Framework em contêineres. Quando possível, a extensão reduz o esforço manual necessário para refatorar aplicativos antigos de .NET Framework atualizando automaticamente os pacotes NuGet e atualizando as configurações específicas de IIS para funcionar com Kestrel e nginx. Em cada etapa do processo de modernização, você pode validar iterativamente as alterações testando a aplicação na AWS. A nova extensão gera automaticamente artefatos para inserir em contêineres sua aplicação e executá-la no Amazon Elastic Container Service (Amazon ECS) usando o AWS Fargate.

A extensão AWS Toolkit for .NET Refactoring é compatível com ASP.NET MVC, Web Forms, WCF e tipos de aplicações Web para avaliação e portabilidade. Qualquer aplicação .NET que esteja escutando conexões TCP pode ser implantada na AWS por meio dos recursos de implantação de teste do kit de ferramentas.

Pedimos feedback aos testadores com acesso antecipado. Derya SEZEN, Partner@kloia, disse:

“A extensão AWS Toolkit for .NET Refactoring facilita a vida dos desenvolvedores que buscam atualizar suas aplicações legadas de .NET, fornecendo informações e orientações úteis para refatorar e validar os esforços de modernização.”

Ananth Deodhar, Sr. Software Technical Architect na SourceFuse, disse:

“A extensão AWS Toolkit for .NET é um grande avanço em relação à forma anterior de lidar com problemas ao migrar/modernizar bases de código .NET. Não há curva de aprendizado para desenvolvedores ou dependência de ferramentas externas, e agora nossos desenvolvedores podem realmente se concentrar na solução de problemas sem sair da IDE.”

Usando o AWS Toolkit para refatoração de .NET

Depois de instalar o AWS Toolkit for .NET Refactoring, abra um projeto no Visual Studio 2019 ou 2022. A extensão oferece suporte a todos os tipos de aplicativos, incluindo aplicativos de console, aplicativos da Web e bibliotecas de classes. Neste exemplo, abri um aplicativo Web MVC padrão do ASP.NET (.NET Framework).

Screenshot of the AWS Toolkit for .NET Refactoring start pageNo menu Extensions, selecione AWS Toolkit for .NET Refactoring Extension e, em seguida, selecione Get Started. Na tela Getting Started, selecione suas credenciais da AWS usando um perfil nomeado ou credenciais existentes do AWS CLI/SDK. Em seguida, selecione Next.

Na tela de Dashboard, observe que a aplicação Web está pronta para ser avaliada. Selecione Start assessment. O AWS Toolkit for .NET Refactoring avalia a compatibilidade da aplicação com sua versão .NET de destino (Core 3.1, 5 ou 6) e exibe um relatório sobre pacotes e APIs do NuGet.

Screenshot of the AWS Toolkit for .NET Refactoring dashboard

Para portar sua aplicação para uma versão multiplataforma de .NET, selecione Port e, em seguida, selecione Port Solution. Depois que o processo de portabilidade for executado, selecione Reload All para recarregar o novo projeto no Visual Studio.

A aplicação Web de exemplo agora foi portada para .NET 6. Todos os controladores foram portados para usar APIs .NET 6. O código de inicialização em Global.ascx.cs e a pasta App_Start foram transferidos para Program.cs e Startup.cs. As configurações na seção AppSettings do Web.config foram copiadas para appsettings.json, sendo o arquivo de configuração usado pelo ASP.NET Core.

Criei a aplicação de amostra para detectar qualquer erro de tempo de compilação. Fiz algumas alterações manuais na aplicação, incluindo alterar as diretivas ASP.NET @Scripts .Render e @Styles.Render para usar tags HTML padrão e atualizar appsettings.json para remover as configurações do certificado para que o Kestrel use o certificado padrão de desenvolvimento do ASP.NET Core.

Enquanto fazia essas alterações, lembrei-me de que o sistema de arquivos no Linux diferencia maiúsculas de minúsculas, mas no Windows, o sistema de arquivos padrão não diferencia maiúsculas de minúsculas. Verifiquei duas vezes se os caminhos nos atributos href e src correspondiam exatamente aos caminhos no disco, inclusive usando maiúsculas e minúsculas corretas.

Screenshot of a sample ported application running locally

Teste o aplicativo portado na AWS

Agora que a aplicação foi portada, você pode testá-la na AWS para garantir que tudo esteja funcionando corretamente.

Antes de começar esta parte do tutorial, conclua as etapas de configuração única da documentação sobre Configuração para testes na AWS.

Depois que as etapas de configuração estiverem concluídas, abra o menu de contexto (clique com o botão direito do mouse) no projeto no Visual Studio Solution Explorer e escolha “Publish”. Crie um Folder Profile (ou use um existente) e publique o projeto nesse diretório.

Screenshot of Visual Studio folder publish

Depois de publicar com sucesso, selecione o ícone após o caminho do Target location para copiar o caminho completo para a área de transferência. Você usará esse caminho na próxima etapa.

No menu Extensions, selecione AWS Toolkit for .NET Refactoring e selecione Run Test Deployment on AWS. Esse novo recurso implanta sua aplicação .NET em um contêiner Linux executado no Amazon Elastic Container Service (Amazon ECS) em AWS Fargate, que é uma infraestrutura de computação serverless para contêineres. O AWS Toolkit for .NET Refactoring gera todos os artefatos necessários para colocar sua aplicação em contêiner e executá-la no Amazon ECS. Você não precisa criar um Dockerfile, nem mesmo ter o Docker instalado (embora, se você já tiver um Dockerfile, possa usá-lo).

Screenshot of the AWS Toolkit for .NET Refactoring Run Test Deployment on AWS settings

Na janela Test on AWS, selecione um perfil da AWS com acesso em nível de administrador à sua conta da AWS. Em Published Artifacts, cole o caminho do campo Target location no perfil de publicação ou navegue até a pasta que contém os artefatos publicados.

Em seguida, selecione o bucket de S3 que você criou como parte da configuração única e, em seguida, selecione uma Virtual Private Cloud (VPC) existente ou selecione a opção de criar uma nova VPC.

No campo Port number, insira a porta na qual a aplicação está configurada. Para aplicações Web em ASP.NET Core, normalmente é a porta Kestrel.

Por fim, selecione Test on AWS para começar a implantação. Você pode monitorar o progresso da implantação a partir do Visual Studio. Depois que a implantação for concluída, selecione View now para abrir um navegador da Web para sua aplicação na AWS.

Screenshot of sample application running on AWS

Para ver a implantação posteriormente, no menu Extensions, selecione AWS Toolkit for .NET Refactoring e selecione View Deployments Running on AWS. Na tabela, selecione a URL em Endpoint URL para carregar o aplicativo implantado.

Atualizações do Porting Assistant for .NET

Em 2020, a AWS lançou o Porting Assistant for .NET, uma ferramenta de código aberto para analisar a compatibilidade de aplicativos .NET Framework e estimar o esforço necessário para portá-los para o .NET moderno (ou .NET Core). Se você já usou essa ferramenta, talvez esteja se perguntando como ela está relacionada ao novo AWS Toolkit for .NET Refactoring.

À medida que o Porting Assistant for .NET ganhou popularidade, ouvimos dois comentários comuns da comunidade de desenvolvedores. Primeiro, uma avaliação de compatibilidade é apenas um ponto de partida para a modernização. Os desenvolvedores precisam de mais recursos, como implantação e testes iterativos, para concluir o processo de modernização. Em segundo lugar, a exigência de fornecer credenciais da AWS para usar o Porting Assistant for .NET aumentou o atrito no início do fluxo de trabalho de modernização.

Ouvimos o feedback da comunidade sobre os dois pontos. O AWS Toolkit for .NET Refactoring fornece aos desenvolvedores ferramentas unificadas que visam simplificar o fluxo de trabalho de modernização de ponta a ponta. Essa nova extensão usa as credenciais da AWS para automatizar tarefas como a implantação na nuvem. Ao mesmo tempo, atualizamos o Porting Assistant for .NET para remover a exigência de uma conta da AWS. Isso significa que os desenvolvedores podem usar o Porting Assistant for .NET para qualquer projeto de modernização, sem depender da AWS.

Continuaremos expandindo e contribuindo com o Porting Assistant for .NET. Acreditamos que toda a comunidade se beneficia de contribuições coletivas para esse amplo espaço problemático, para que cada membro e desenvolvedor da comunidade .NET possa continuar usando e contribuindo livremente com o Porting Assistant for .NET.

Desenvolvedores devem usar o Porting Assistant for .NET quando quiserem usar uma ferramenta de código aberto para avaliar o escopo de um esforço de modernização de .NET, visualizar dependências em uma solução e executar uma portabilidade assistida de .NET Framework para .NET moderno (ou .NET Core).

Desenvolvedores devem usar o AWS Toolkit for .NET Refactoring se tiverem optado por modernizar e migrar seus aplicativos .NET Framework para a AWS, se estiverem avaliando a AWS como alvo de modernização e migração ou se quiserem aprender a executar aplicativos .NET modernizados na nuvem da AWS. A nova extensão inclui a funcionalidade do Porting Assistant for .NET e adiciona novos recursos, como testes em contêineres da AWS. Nossa visão é que o AWS Toolkit for .NET Refactoring continue a evoluir e crescer, tornando-se o centro da modernização e migração de .NET na AWS.

Conclusão

A nova extensão AWS Toolkit for .NET Refactoring, disponível atualmente, ajuda os desenvolvedores a transformar suas aplicações .NET Framework legadas para se beneficiar totalmente da redução de custos, confiabilidade e escalabilidade da nuvem. A extensão avalia as mudanças necessárias para portar sua aplicação .NET Framework para .NET moderno (anteriormente chamado de .NET Core), atualiza as configurações específicas de Windows para trabalhar com tecnologias de código aberto e automatiza a criação e a implantação de um ambiente de teste baseado nos serviços de contêiner da AWS.

A extensão AWS Toolkit for .NET Refactoring está disponível para Visual Studio 2019 e 2022. O Porting Assistant for .NET continua sendo uma ferramenta de código aberto disponível para a comunidade e agora pode ser usada sem uma conta da AWS.

A AWS pode ajudar você a avaliar como sua empresa pode tirar o máximo proveito da nuvem. Junte-se aos milhões de clientes da AWS que confiam em nós para migrar e modernizar suas aplicações mais importantes na nuvem. Para saber mais sobre a modernização de Windows Server ou de SQL Server, visite nossa página Windows na AWS. Entre em contato conosco para começar sua jornada de migração hoje mesmo.

 

Este artigo foi traduzido do Blog da AWS em Inglês.

 


Sobre o autor

Matt Cline é arquiteto de soluções sênior da Amazon Web Services, oferecendo suporte a clientes em sua cidade natal, Pittsburgh, PA, EUA. Com experiência como desenvolvedor e arquiteto full-stack, Matt é apaixonado por ajudar os clientes a fornecer aplicativos de alta qualidade na AWS. Fora do trabalho, Matt constrói (e ocasionalmente termina) modelos em escala e gosta de jogar RPG de mesa com seus amigos.

 

 

 

 

 

Tradutor

Luciano Bernardes trabalha atualmente como Sr Solutions Architect na AWS, especializado em workloads Microsoft. Com 15 anos de experiência no mercado, trabalhou a maior parte em consultoria técnica especializada em Microsoft, em clientes de várias verticais, com demandas voltadas para infraestrutura on-premises e em nuvem. Como SA, trabalha próximo a clientes e parceiros de consultoria em LATAM, para apoiá-los em tomadas de decisão e revisão de arquitetura de workoads Microsoft na nuvem AWS.

 

 

 

 

Revisor

Bruno Lopes é Senior Solutions Architect no time da AWS LATAM. Trabalha com soluções de TI há mais de 14 anos, tendo em seu portfólio inúmeras experiências em workloads Microsoft, ambientes híbridos e capacitação técnica de clientes como Technical Trainer e Evangelista. Agora atua como um Arquiteto de Soluções, unindo todas as capacidades para desburocratizar a adoção das melhores tecnologias afim de ajudar os clientes em seus desafios diários.