Blog de Amazon Web Services (AWS)

Acelere la modernización de .NET con el AWS Toolkit for .NET Refactoring

Por Matt Cline, Arquitecto Senior de Soluciones na Amazon Web Services 

 

A finales de oct/2022 anunciamos disponibilidad general de AWS Toolkit for .NET Refactoring, una extensión para Visual Studio 2019 y Visual Studio 2022. Esta extensión ayuda a transformar sus aplicaciones antiguas de .NET Framework en una arquitectura moderna y optimizada para la nube, lo que le permite aprovechar al máximo los beneficios de la reducción de los costos, el aumento del tiempo de actividad y la escalabilidad mejorada.Las empresas buscan modernizar sus aplicaciones antiguas para aprovechar al máximo la nube. Sin embargo, la modernización es un proceso complejo que normalmente implica la refactorización de una arquitectura monolítica, la búsqueda de sustitutos multiplataforma para las dependencias específicas de Windows y la actualización de las configuraciones de las aplicaciones para que se ejecuten en un entorno sin contenedores o servidores. A lo largo de este proceso, los desarrolladores deben probar y validar continuamente sus cambios.

El AWS Toolkit for .NET Refactoring permite un flujo de trabajo de modernización integral directamente en Visual Studio. La extensión evalúa las aplicaciones de .NET Framework para su refactorización en .NET moderno (anteriormente denominado .NET Core), traduce las configuraciones de IIS y Active Directory para que funcionen con Linux y otras tecnologías de código abierto, y ayuda a empaquetar las aplicaciones de .NET Framework en contenedores. Cuando es posible, la extensión reduce el esfuerzo manual necesario para refactorizar las aplicaciones antiguas de .NET Framework al actualizar automáticamente los paquetes de NuGet y actualizar las configuraciones específicas de IIS para que funcionen con Kestrel y nginx. En cada paso del proceso de modernización, puede validar los cambios de forma iterativa probando la aplicación en AWS. La nueva extensión genera automáticamente artefactos para contenedorizar la aplicación y ejecutarla en Amazon Elastic Container Service (Amazon ECS) con AWS Fargate.

La extensión AWS Toolkit for .NET Refactoring admite los tipos de aplicaciones web, MVC, Web Forms, WCF y de ASP.NET para su evaluación y portabilidad. Cualquier aplicación .NET que escuche conexiones TCP puede implementarse en AWS mediante las capacidades de implementación de prueba del kit de herramientas.

Solicitamos comentarios a los evaluadores de acceso anticipado. Derya SEZEN, Partner@kloia, dijo:

  • «La extensión AWS Toolkit for .NET Refactoring hace la vida más fácil a los desarrolladores que buscan actualizar sus aplicaciones .NET antiguas al proporcionar información y orientación útiles para refactorizar y validar los esfuerzos de modernización».

Ananth Deodhar, arquitecto técnico de software sénior de SourceFuse, dijo:

  • «La extensión AWS Toolkit for .NET fija un enorme avance respecto a la forma anterior de tratar los problemas a la hora de migrar o modernizar las bases de código .NET. Los desarrolladores no tienen ninguna curva de aprendizaje ni dependen de herramientas externas, y nuestros desarrolladores ahora pueden centrarse realmente en resolver problemas sin abandonar el IDE».

Uso del AWS Toolkit for .NET Refactoring

Tras instalar AWS Toolkit for .NET Refactoring, abra un proyecto en Visual Studio 2019 o 2022. La extensión admite todo tipo de aplicaciones, incluidas las aplicaciones de consola, las aplicaciones web y las bibliotecas de clases. En este ejemplo, he abierto una aplicación web MVC estándar de ASP.NET (.NET Framework).

Screenshot of the AWS Toolkit for .NET Refactoring start page

En el menú Extensions, seleccione AWS Toolkit for .NET Refactoring Extension y a continuación, seleccione Get Started. En la pantalla de introducción, seleccione sus credenciales de AWS, ya sea mediante un perfil con nombre o con las credenciales CLI/SDK de AWS existentes. A continuación, selecciona Siguiente.

En la pantalla del panel de control, tenga en cuenta que la aplicación web está lista para ser evaluada. Selecciona Start Assessment. AWS Toolkit for .NET Refactoring evalúa la compatibilidad de la aplicación con la versión de .NET de destino (Core 3.1, 5 o 6) y muestra un informe sobre los paquetes y las API de NuGet.

Screenshot of the AWS Toolkit for .NET Refactoring dashboard

Para migrar su aplicación a una versión multiplataforma de .NET, seleccione Port y a continuación, seleccione Port Solution. Cuando se ejecute el proceso de portabilidad, seleccione Reload All para volver a cargar el nuevo proyecto en Visual Studio.

La aplicación web de ejemplo ya se ha migrado a .NET 6. Todos los controladores han sido migrados para usar las API .NET 6. El código de inicio de Global.ascx.cs y la carpeta App_Start se transfirieron a Program.cs y Startup.cs. Los ajustes de configuración de la sección AppSettings de Web.config se han copiado a appsettings.json, el archivo de configuración utilizado por ASP.NET Core.

He creado la aplicación de ejemplo para detectar cualquier error en el tiempo de compilación. Realizando algunos cambios manuales en la aplicación, como cambiar las directivas ASP.NET @Scripts .Render y @Styles.Render para utilizar etiquetas HTML estándar y actualizar appsettings.json para eliminar la configuración del certificado de modo que Kestrel utilice el desarrollo predeterminado de ASP.NET Core certificado.

Mientras realizaba estos cambios, recordé que el sistema de archivos de Linux distingue entre mayúsculas y minúsculas, pero en Windows, el sistema de archivos predeterminado no distingue mayúsculas de minúsculas. Comprobé dos veces que las rutas de los atributos href y src coincidían exactamente con las rutas del disco, incluso utilizando las mayúsculas y minúsculas correctas.

Screenshot of a sample ported application running locally

Pruebe la aplicación portada en AWS

Ahora que la aplicación ha sido transferida, puede probarla en AWS para asegurarse de que todo funciona correctamente.

Antes de comenzar esta parte del tutorial, complete los pasos de configuración únicos de la documentación sobre Configuración para pruebas en AWS.

Una vez completados los pasos de configuración, abra el menú contextual (haga clic con el botón derecho) del proyecto en el explorador de soluciones de Visual Studio y elija «Publish». Cree un perfil de carpeta (o utilice uno existente) y publique el proyecto en ese directorio.

Screenshot of Visual Studio folder publish

Tras publicar correctamente, seleccione el icono situado después de la ruta de ubicación de destino para copiar la ruta completa al portapapeles. Usarás esta ruta en el siguiente paso.

En el menú Extensions, seleccione AWS Toolkit for .NET Refactoring y, a continuación, seleccione Run Test Deployment on AWS. Esta nueva función implementa la aplicación .NET en un contenedor de Linux que se ejecuta en Amazon Elastic Container Service (Amazon ECS) con AWS Fargate, el motor de procesamiento sin servidor para contenedores. AWS Toolkit for .NET Refactoring genera todos los artefactos necesarios para almacenar la aplicación en contenedores y ejecutarla en Amazon ECS. No necesitas crear un Dockerfile, ni siquiera tener Docker instalado (aunque si ya tienes un Dockerfile, puedes usarlo).

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

En la ventana Test on AWS, seleccione un perfil de AWS con acceso de nivel de administrador a su cuenta de AWS. En Published Artifacts, pegue la ruta desde el campo Target location del perfil de publicación o busque la carpeta que contiene los artefactos publicados.

A continuación, seleccione el bucket de S3 que creó como parte de la configuración única y, a continuación, seleccione una Virtual Private Cloud (VPC) existente o seleccione la opción para crear una nueva VPC.

En el campo Port number, introduzca el puerto en el que la aplicación escucha. Para las aplicaciones web de ASP.NET Core, este suele ser el puerto Kestrel.

Por último, seleccione Test on AWS para comenzar la implementación. Puede supervisar el progreso de la implementación desde Visual Studio. Cuando se haya completado la implementación, seleccione View now para abrir un navegador web en su aplicación en AWS.

Screenshot of sample application running on AWS

Para ver la implementación más adelante, en el menú Extensions, seleccione AWS Toolkit for .NET Refactoring y, a continuación, seleccione View Deployments Running on AWS. En la tabla, seleccione la URL en Endpoint URL para cargar la aplicación implementada.

Actualizaciones de Porting Assistant for .NET

En 2020, AWS lanzó Porting Assistant for .NET, una herramienta de código abierto para analizar la compatibilidad de las aplicaciones .NET Framework y estimar el esfuerzo necesario para migrarlas a la versión moderna de .NET (o .NET Core). Si ha utilizado esta herramienta, quizás se pregunte qué relación tiene con el nuevo AWS Toolkit for .NET Refactoring.

A medida que Porting Assistant for .NET ha ganado popularidad, hemos escuchado dos comentarios comunes de la comunidad de desarrolladores. En primer lugar, una evaluación de compatibilidad es solo un punto de partida para la modernización. Los desarrolladores necesitan más capacidades, como la implementación y las pruebas iterativas, para completar el proceso de modernización. En segundo lugar, el requisito de proporcionar credenciales de AWS para usar Porting Assistant for .NET dificultó el inicio del flujo de trabajo de modernización.

Hemos escuchado los comentarios de la comunidad sobre ambos puntos. El AWS Toolkit for .NET Refactoring proporciona a los desarrolladores herramientas unificadas que tienen como objetivo simplificar el flujo de trabajo de modernización de principio a fin. Esta nueva extensión utiliza las credenciales de AWS para automatizar tareas como la implementación en la nube. Al mismo tiempo, hemos actualizado Porting Assistant for .NET para eliminar el requisito de tener una cuenta de AWS. Esto significa que los desarrolladores pueden usar Porting Assistant for .NET para cualquier proyecto de modernización, sin depender de AWS.

Seguiremos expandiéndonos y contribuyendo a Porting Assistant for .NET. Creemos que toda la comunidad se beneficia de las contribuciones colectivas a este amplio espacio de problemas, por lo que todos los miembros y desarrolladores de la comunidad de .NET pueden seguir utilizando y contribuyendo libremente a Porting Assistant for .NET.

Los desarrolladores deberían usar Porting Assistant for .NET cuando quieran utilizar una herramienta de código abierto para evaluar el alcance de un esfuerzo de modernización de .NET, visualizar las dependencias de una solución y realizar una migración asistida de .NET Framework a la versión moderna de .NET (o .NET Core).

Los desarrolladores deberían utilizar el AWS Toolkit for .NET Refactoring si han decidido modernizar y migrar sus aplicaciones .NET Framework a AWS, si están evaluando AWS como objetivo de modernización y migración, o si desean aprender a ejecutar aplicaciones .NET modernizadas en la nube de AWS. La nueva extensión incluye la funcionalidad de Porting Assistant for .NET y añade nuevas funciones, como las pruebas en contenedores de AWS. Nuestra visión es que el AWS Toolkit for .NET Refactoring continúe evolucionando y creciendo y se convierta en el centro de la modernización y migración de .NET en AWS.

Conclusión

La nueva extensión AWS Toolkit for .NET Refactoring, ya disponible actualmente, ayuda a los desarrolladores a transformar sus aplicaciones .NET Framework antiguas para aprovechar al máximo los ahorros de costos, la confiabilidad y la escalabilidad de la nube. La extensión evalúa los cambios necesarios para migrar la aplicación .NET Framework a la versión moderna de .NET (anteriormente denominada .NET Core), actualiza las configuraciones específicas de Windows para que funcionen con tecnologías de código abierto y automatiza la creación e implementación de un entorno de pruebas basado en los servicios de contenedores de AWS.

La extensión AWS Toolkit for .NET Refactoring está disponible para Visual Studio 2019 y 2022. Porting Assistant for .NET sigue siendo una herramienta de código abierto disponible para la comunidad y ahora se puede utilizar sin una cuenta de AWS.

 

Este artículo fue traducido del Blog de AWS en Blog da AWS em Inglés.

 


Acerca de lo autor

Matt Cline es arquitecto senior de soluciones en Amazon Web Services y brinda asistencia a los clientes en su ciudad natal de Pittsburgh, Pensilvania. Con experiencia como desarrollador y arquitecto full-stack, a Matt le apasiona ayudar a los clientes a entregar aplicaciones de alta calidad en AWS. Fuera del trabajo, Matt construye (y ocasionalmente termina) modelos a escala y disfruta jugando juegos de rol de mesa con sus amigos.

 

 

 

Tradutor

Luciano Bernardes actualmente trabaja como senior Solutions Architect en AWS, especializándose en cargas de trabajo de Microsoft. Con 15 años de experiencia en el mercado, se ha desempeñado principalmente en consultoría técnica especializada en Microsoft, con clientes de diversos verticales, con demandas enfocadas en infraestructura on-premise y en la nube. Como SA, trabaja en estrecha colaboración con clientes y socios consultores en LATAM, para apoyarlos en la toma de decisiones y revisar la arquitectura de las cargas de trabajo de Microsoft en la nube de AWS.

 

 

 

 

Revisor

Victor Jiménez es un arquitecto senior de soluciones de socios principales de AWS con sede en México. Cuenta con experiencia de 15 años en cargas de trabajo de Windows Server principalmente en roles de infraestructura, provisionamiento y automatización. Ha adquirido experiencia en los últimos 4 años en tecnologías en la nube. En AWS, lleva a cabo tareas de apoyo con los socios estratégicos para guiar a los clientes en la adopción de su viaje a la nube y modernización aprovechando las herramientas y servicios optimizados para su negocio.