Ha sido divertido observar la reciente evolución de .NET. Desde que .NET se convirtió en una plataforma de código abierto, finalmente ha cumplido su promesa multiplataforma. Al mismo tiempo, la compatibilidad con Linux le ha dado más tracción en el espacio nativo de la nube, y las últimas versiones admiten tiempos de ejecución de contenedores. Tener capacidades multiplataforma significa que también puede ejecutar .NET en cualquier nube. Todo lo que necesita es un host de máquina virtual Linux compatible o una instancia de Kubernetes que admita contenedores sin distribución. Eso es suficiente para ejecutar código .NET en plataformas de infraestructura como servicio, como AWS, o en Kubernetes administrado como Google Kubernetes Engine (GKE). El código puede migrar de una plataforma a otra, utilizando las API REST para acceder a los servicios de la plataforma. En algunos casos, existen SDK, ya sea del proveedor de la plataforma o desarrollados por la comunidad. Una portabilidad como esta es algo bueno: le permite pasar de una nube a otra, con cambios mínimos en su código (especialmente si no está utilizando cualquier aplicación específica del servicio). Pero existen limitaciones, ya que no se pueden aprovechar las características de la plataforma sin servidor que le permiten aprovechar la escalabilidad de la nube y los beneficios económicos que conllevan las operaciones bajo demanda. Sin ellos, simplemente está levantando y cambiando el código .NET local. Uso de C# en AWS Lambda Si está utilizando AWS Lambda para sus aplicaciones sin servidor, ha tenido la opción de usar .NET con C# desde hace algún tiempo, junto con JavaScript, Go, Python, Java, Ruby, Rust, PowerShell y TypeScript. El soporte de Amazon comenzó con .NET Core y se ha actualizado con sucesivos lanzamientos de la plataforma. Actualmente hay soporte para .NET 6 y .NET 7. Lo más probable es que desee utilizar .NET 6 por ahora, ya que .NET 7 solo está disponible para contenedores alojados. Al igual que Azure Functions, AWS Lambda es una plataforma informática sin servidor creada en torno a operaciones impulsadas por eventos. Las funciones Lambda se activan mediante eventos, a menudo de otros servicios de AWS, y se pueden usar para procesamiento de datos, procesamiento de transmisiones, backends controlados por API para aplicaciones web y móviles y para admitir implementaciones de IoT (Internet de las cosas), entre muchas opciones diferentes. El aspecto más importante de AWS Lambda es que, al igual que Azure Functions, no tiene control sobre los recursos informáticos que utiliza. El servicio se escala según la demanda y usted paga por los recursos que consume. Creación de funciones Lambda en .NETEl uso de .NET con AWS Lambda no requiere cambios en su caja de herramientas de desarrollo. Puede utilizar Visual Studio, Visual Studio Code o cualquier IDE de terceros. Todo lo que necesita hacer es instalar un conjunto de plantillas de AWS desde NuGet a través de la CLI de .NET. En el corazón de las funciones C# de AWS se encuentra un controlador de funciones Lambda. Este método es lo que invoca el servicio subyacente para iniciar su código. Es un componente esencial de una función Lambda, que entrega tanto un evento como un objeto de contexto a su código. El objeto de evento es probablemente el más útil, ya que proporciona información sobre el evento, mientras que el objeto de contexto proporciona información sobre el entorno de ejecución. Los datos deberán serializarse como un objeto JSON listo para usar en su código. Comprender el objeto de contexto es importante para garantizar que su código C# se ejecute bien. La información importante sobre el tiempo de ejecución que proporciona incluye la cantidad de tiempo disponible antes de que una función expire y AWS recupere sus recursos. Puede utilizar esta información para escribir controles de manejo de errores adecuados, cancelar tareas y enviar notificaciones si está a punto de activarse un tiempo de espera. El código C# en AWS Lambda se llama de dos maneras. La primera opción es proporcionar una función como biblioteca de clases, configurando el servicio con sus nombres de clase y ensamblado, y el método que se llamará cuando se active la función. La segunda opción es proporcionar un ensamblado ejecutable que se ejecutará cuando se invoque. Simplificar el desarrollo de funciones de C# con anotaciones LambdaAmazon proporciona características adicionales que pueden simplificar la escritura de una función de C#. El marco de anotaciones de Lambda es una forma de ocultar gran parte del código específico de Lambda de su lógica empresarial, utilizando generadores de código fuente para crearlo a partir de una ruta de API REST y, al mismo tiempo, construyendo los controladores Lambda adecuados. Puede encontrar una plantilla para crear un proyecto de Annotations Framework en AWS Toolkit para Visual Studio, como parte de los planos incluidos. Debido a que Annotations Framework puede establecer propiedades de Lambda mediante programación, puede agregar tiempos de espera y límites de memoria como parte del definición de función inicial. Una vez que su código esté listo, simplemente compílelo e impleméntelo directamente en AWS desde Visual Studio. Una opción con las funciones basadas en .NET 7 es utilizar la compilación AOT (antes de tiempo) para reducir los tiempos de inicio. Como AOT necesita ejecutarse en el entorno de destino, está compilando código en un contenedor de Amazon Linux, utilizando Docker como host. Es un proceso relativamente simple, mediante el cual se utiliza la CLI de .NET y la plantilla Lambda para descargar la imagen de Linux. La compilación se ejecuta automáticamente como parte de la implementación de su código en AWS. No está limitado a aplicaciones C# independientes. Lambda también se puede utilizar para alojar y ejecutar aplicaciones web ASP.NET Core, lo que le brinda un back-end bajo demanda para sitios que tienen un uso relativamente bajo o que necesitan responder a demandas ráfagas. Uso de .NET 8 en AWS LambdaAmazon está trabajando para ofrecer soporte .NET 8 para hosts AWS Lambda, y el lanzamiento final estará disponible pronto. Como señala el número de GitHub, hay muchas partes móviles que deben unirse para ofrecer una versión estable a largo plazo de un tiempo de ejecución administrado. Además de crear un nuevo host basado en las últimas versiones de la distribución interna de Linux de Amazon, el equipo .NET de AWS también está desarrollando y probando un conjunto actualizado de API .NET y herramientas CLI para ayudar a crear nuevos Lambdas y actualizar el código existente. Este punto es importante, ya que AWS planea comenzar a dejar de ser compatible con .NET 6 y .NET 7 en 2024, con un límite estricto para la actualización de las funciones de .NET 6 en febrero de 2025. La migración a la versión de soporte a largo plazo de .NET ayudará asegúrese de que su código siga siendo compatible tanto con Microsoft como con Amazon. Algunas herramientas ya están disponibles, incluida una actualización del kit de herramientas de AWS para Visual Studio, que le permite crear plantillas de tiempo de ejecución personalizadas basadas en .NET 8 y compatibilidad con una imagen base de contenedor .NET 8. Si planea utilizar esta imagen base de Amazon Linux 3, deberá clonar el repositorio AWS .NET GitHub y crear la imagen en sus propios sistemas de desarrollo (consulte esta publicación de blog). Esto le permitirá probar el código antes de empaquetarlo e implementarlo en AWS. Cuando AWS finalice sus herramientas .NET 8, pasarán a formar parte de la plataforma y podrá utilizarlas como parte de su proceso de compilación estándar. Compatibilidad con .NET en AWS AWS Lamba hace que sus habilidades en .NET sean portátiles más allá de las aplicaciones tradicionales desarrollo y plataformas nativas de la nube de Azure. Es importante tener en cuenta que este no es un proyecto único, sino a largo plazo que ha pasado por múltiples actualizaciones del tiempo de ejecución subyacente, en línea con el propio ciclo de vida de soporte de .NET. Con un conjunto eficaz de abstracciones que facilitan la concentración en el código, AWS ofrece un enfoque que debería simplificar la transferencia de código .NET sin servidor desde otras plataformas en la nube, así como desde aplicaciones locales. Copyright © 2024 IDG Communications, Inc.

Source link