Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Sugerencia
Este contenido es un extracto del libro electrónico, Arquitecto de aplicaciones web modernas con ASP.NET Core y Azure, disponible en .NET Docs o como un PDF descargable gratuito que se puede leer sin conexión.
"… con un diseño adecuado, las características resultan económicas. Este enfoque es difícil, pero sigue teniendo éxito".
- Dennis Ritchie
Las aplicaciones web modernas tienen mayores expectativas de usuario y mayores demandas que nunca. Se espera que las aplicaciones web de hoy estén disponibles 24/7 desde cualquier lugar del mundo y se puedan usar desde prácticamente cualquier dispositivo o tamaño de pantalla. Las aplicaciones web deben ser seguras, flexibles y escalables para satisfacer los picos de demanda. Cada vez más, los escenarios complejos deben controlarse mediante experiencias de usuario enriquecidas basadas en el cliente mediante JavaScript y la comunicación eficaz a través de las API web.
ASP.NET Core está optimizado para aplicaciones web modernas y escenarios de hospedaje basados en la nube. Su diseño modular permite a las aplicaciones depender solo de las características que realmente usan, lo que mejora la seguridad y el rendimiento de las aplicaciones, al tiempo que reduce los requisitos de recursos de hospedaje.
Aplicación de referencia: eShopOnWeb
Esta guía incluye una aplicación de referencia, eShopOnWeb, que muestra algunos de los principios y recomendaciones. La aplicación es una tienda en línea sencilla, que permite navegar por un catálogo de camisas, tazas de café y otros artículos de marketing. La aplicación de referencia es deliberadamente sencilla para facilitar la comprensión.
Figura 2-1. eShopOnWeb
Aplicación de referencia
- eShopOnWeb
https://github.com/dotnet/eShopOnWeb
Hospedado en la nube y escalable
ASP.NET Core está optimizado para la nube (nube pública, nube privada, cualquier nube) porque es de poca memoria y alto rendimiento. El menor tamaño de las aplicaciones de ASP.NET Core significa que puede hospedar más en el mismo hardware y pagar por menos recursos al usar servicios de hospedaje en la nube bajo el modelo de pago por uso. El mayor rendimiento significa que puede atender a más clientes de una aplicación dada el mismo hardware, lo que reduce aún más la necesidad de invertir en servidores y en la infraestructura de hospedaje.
Multiplataforma
ASP.NET Core es multiplataforma y se puede ejecutar en Linux, macOS y Windows. Esta funcionalidad abre muchas nuevas opciones para el desarrollo y la implementación de aplicaciones creadas con ASP.NET Core. Contenedores de Docker, tanto Linux como Windows, pueden hospedar aplicaciones ASP.NET Core, lo que les permite aprovechar las ventajas de los contenedores y microservicios.
Modular y de acoplamiento flexible
Los paquetes NuGet son ciudadanos de primera clase en .NET Core y las aplicaciones de ASP.NET Core se componen de muchas bibliotecas a través de NuGet. Esta granularidad de la funcionalidad ayuda a garantizar que las aplicaciones solo dependan e implementen únicamente la funcionalidad que realmente requieren, reduciendo así su huella y la superficie de exposición a vulnerabilidades de seguridad.
ASP.NET Core también admite completamente la inserción de dependencias, tanto internamente como en el nivel de aplicación. Las interfaces pueden tener varias implementaciones que se pueden intercambiar según sea necesario. La inserción de dependencias permite a las aplicaciones acoplarse flexiblemente a esas interfaces, en lugar de implementaciones específicas, lo que facilita la extensión, el mantenimiento y las pruebas.
Fácilmente comprobable con pruebas automatizadas
ASP.NET aplicaciones principales admiten pruebas unitarias y su acoplamiento flexible y compatibilidad con la inserción de dependencias facilita el intercambio de problemas de infraestructura con implementaciones falsas con fines de prueba. ASP.NET Core también se incluye con un TestServer que se puede usar para hospedar aplicaciones en memoria. Después, las pruebas funcionales pueden realizar solicitudes a este servidor en memoria, ejercer la pila de aplicaciones completa (incluido middleware, enrutamiento, enlace de modelos, filtros, etc.) y recibir una respuesta, todo en una fracción del tiempo que tardaría en hospedar la aplicación en un servidor real y realizar solicitudes a través de la capa de red. Estas pruebas son especialmente fáciles de escribir y valiosas para las API, que son cada vez más importantes en las aplicaciones web modernas.
Comportamientos tradicionales y de SPA admitidos
Las aplicaciones web tradicionales han implicado poco comportamiento del lado cliente, pero en su lugar se han basado en el servidor para toda la navegación, las consultas y las actualizaciones que la aplicación podría necesitar realizar. Cada nueva operación realizada por el usuario se traduciría en una nueva solicitud web, con el resultado de ser una recarga de página completa en el explorador del usuario final. Los marcos de controlador de vista de modelos (MVC) clásicos normalmente siguen este enfoque, en el que cada solicitud nueva se corresponde a otra acción de controlador, lo que a su vez podría funcionar con un modelo y devolver una vista. Algunas operaciones individuales en una página determinada podrían mejorarse con la funcionalidad AJAX (JavaScript asincrónico y XML), pero la arquitectura general de la aplicación usaba muchas vistas y puntos de conexión URL diferentes de MVC. Además, ASP.NET Core MVC también admite Razor Pages, una manera más sencilla de organizar páginas de estilo MVC.
Las aplicaciones de página única (SPA), por el contrario, implican muy pocas cargas de página del lado servidor generadas dinámicamente (si las hay). Muchas SPA se inicializan dentro de un archivo HTML estático que carga las bibliotecas de JavaScript necesarias para iniciar y ejecutar la aplicación. Estas aplicaciones hacen un uso intensivo de las API web para sus necesidades de datos y pueden proporcionar experiencias de usuario mucho más enriquecidas. Blazor WebAssembly proporciona un medio para compilar SPA mediante código .NET, que luego se ejecuta en el explorador del cliente.
Muchas aplicaciones web implican una combinación de comportamiento tradicional de aplicaciones web (normalmente para contenido) y SPA (para interactividad). ASP.NET Core admite MVC (vistas o basadas en páginas) y API web en la misma aplicación, con el mismo conjunto de herramientas y bibliotecas de marcos subyacentes.
Desarrollo e implementación sencillos
ASP.NET Core aplicaciones se pueden escribir usando editores de texto simples o mediante interfaces de línea de comandos, o entornos de desarrollo completos como Visual Studio. Normalmente, las aplicaciones monolíticas se implementan en un único punto de conexión. Las implementaciones se pueden automatizar fácilmente para que se produzcan como parte de una canalización de integración continua (CI) y entrega continua (CD). Además de las herramientas tradicionales de CI/CD, Microsoft Azure tiene compatibilidad integrada con repositorios de Git y puede implementar automáticamente las actualizaciones a medida que se realizan en una rama o etiqueta de Git especificada. Azure DevOps proporciona una canalización completa de construcción e implementación de CI/CD, y GitHub Actions ofrece otra opción para los proyectos alojados allí.
Formularios web y ASP.NET tradicionales
Además de ASP.NET Core, la ASP.NET 4.x tradicional sigue siendo una plataforma sólida y confiable para compilar aplicaciones web. ASP.NET admite modelos de desarrollo de MVC y API web, así como web Forms, que es muy adecuado para el desarrollo de aplicaciones basado en páginas enriquecidas y cuenta con un ecosistema enriquecido de componentes de terceros. Microsoft Azure tiene una gran compatibilidad con ASP.NET aplicaciones 4.x y muchos desarrolladores están familiarizados con esta plataforma.
Blazor
Blazor se incluye con ASP.NET Core 3.0 y versiones posteriores. Proporciona un nuevo mecanismo para crear aplicaciones cliente web interactivas enriquecidas con Razor, C# y ASP.NET Core. Ofrece otra solución que se debe tener en cuenta al desarrollar aplicaciones web modernas. Hay dos versiones de Blazor que se deben tener en cuenta: el lado servidor y el lado cliente.
El lado servidor Blazor se lanzó en 2019 con ASP.NET Core 3.0. Como su nombre implica, se ejecuta en el servidor y vuelve a representar los cambios en el documento cliente en el explorador a través de la red. El servidor Blazor proporciona una experiencia de cliente enriquecida sin necesidad de JavaScript en el lado del cliente y sin necesidad de cargar páginas por separado con cada interacción del cliente. Los cambios en la página cargada son solicitados y procesados por el servidor y, a continuación, se devuelven al cliente mediante SignalR.
Blazor del lado cliente se ha publicado en 2020 y elimina la necesidad de representar los cambios en el servidor. En su lugar, aprovecha WebAssembly para ejecutar código .NET dentro del cliente. El cliente todavía puede realizar llamadas API al servidor si es necesario para solicitar datos, pero todo el comportamiento del lado del cliente se ejecuta en el cliente a través de WebAssembly, que ya es compatible con todos los navegadores principales y es simplemente una biblioteca de JavaScript.
Referencias: aplicaciones web modernas
- Introducción a ASP.NET Core
https://learn.microsoft.com/aspnet/core/- Pruebas en ASP.NET Core
https://learn.microsoft.com/aspnet/core/testing/- Blazor -Comenzar
https://blazor.net/docs/get-started.html