Un marco de trabajo web ( WF ), marco de trabajo para aplicaciones web ( WAF ) o marco de desarrollo web es un marco de software diseñado para dar soporte al desarrollo de aplicaciones web, incluyendo servicios web, recursos web y API web . Los marcos de trabajo web proporcionan una forma estándar de crear e implementar aplicaciones web en la World Wide Web . Su objetivo es automatizar la sobrecarga asociada a las actividades comunes del desarrollo web . Por ejemplo, muchos marcos de trabajo web proporcionan bibliotecas para el acceso a bases de datos , marcos de trabajo de plantillas y gestión de sesiones , y suelen promover la reutilización de código . [ 1 ] Aunque suelen estar orientados al desarrollo de sitios web dinámicos , también son aplicables a sitios web estáticos . [ 2 ]
Historia
Dado que el diseño de la World Wide Web no era inherentemente dinámico, el hipertexto inicial consistía en archivos de texto HTML codificados manualmente que se publicaban en servidores web . Cualquier modificación a las páginas publicadas debía ser realizada por el autor de las mismas. En 1993, se introdujo el estándar Common Gateway Interface (CGI) para la interfaz de aplicaciones externas con servidores web, con el fin de proporcionar una página web dinámica que reflejara las entradas del usuario. [ 3 ]
Las implementaciones originales de la interfaz CGI solían tener efectos adversos en la carga del servidor, ya que cada solicitud iniciaba un proceso independiente . [ 4 ] Las implementaciones más recientes utilizan procesos persistentes, entre otras técnicas, para reducir el consumo de recursos del servidor y ofrecer una mejora general del rendimiento.
En 1995 surgieron los primeros entornos de desarrollo de servidor/lenguaje totalmente integrados y se introdujeron nuevos lenguajes específicos para la web, como ColdFusion , PHP y Active Server Pages .
Aunque la gran mayoría de los lenguajes para crear páginas web dinámicas cuentan con bibliotecas que ayudan con las tareas comunes, las aplicaciones web a menudo requieren bibliotecas específicas para tareas particulares, como la creación de HTML (por ejemplo, Jakarta Faces ).
A finales de la década de 1990, comenzaron a aparecer marcos de trabajo maduros, de tipo "full stack", que a menudo reunían múltiples bibliotecas útiles para el desarrollo web en una única pila de software coherente para que la utilizaran los desarrolladores web.
Tipos de arquitecturas de marcos de trabajo
La mayoría de los frameworks web se basan en el patrón modelo-vista-controlador (MVC) .
Modelo-vista-controlador (MVC)
Muchos frameworks siguen el patrón arquitectónico MVC para separar el modelo de datos en reglas de negocio (el "controlador") y la interfaz de usuario (la "vista"). Esto se considera una buena práctica, ya que modulariza el código , fomenta su reutilización y permite la aplicación de múltiples interfaces. En las aplicaciones web, esto permite presentar diferentes vistas, por ejemplo, mostrando páginas web distintas para navegadores móviles y de escritorio, o proporcionando interfaces de servicios web legibles por máquina .
Basado en empuje frente a basado en atracción.
La mayoría de los frameworks MVC siguen una arquitectura basada en el método push, también llamada "basada en acciones". Estos frameworks utilizan acciones que realizan el procesamiento necesario y luego "envían" los datos a la capa de vista para renderizar los resultados. [ 5 ] Una alternativa a esto es la arquitectura basada en el método pull, a veces también llamada "basada en componentes". Estos frameworks comienzan con la capa de vista, que luego puede "extraer" resultados de múltiples controladores según sea necesario. En esta arquitectura, múltiples controladores pueden estar involucrados con una sola vista.
Organización de tres niveles
En la organización de tres niveles , las aplicaciones se estructuran en torno a tres niveles físicos: cliente, aplicación y base de datos. [ 6 ] [ 7 ] [ 8 ] [ 9 ] La base de datos suele ser un SGBD relacional . La aplicación contiene la lógica de negocio, se ejecuta en un servidor y se comunica con el cliente mediante HTTP . [ 10 ] El cliente en las aplicaciones web es un navegador web que ejecuta HTML generado por la capa de aplicación. [ 11 ] [ 12 ] El término no debe confundirse con MVC, donde, a diferencia de la arquitectura de tres niveles, se considera una buena práctica mantener la lógica de negocio alejada del controlador, la "capa intermedia". [ 13 ] [ 14 ]
Aplicaciones de marco
Los frameworks se crean para dar soporte a la construcción de aplicaciones de internet basadas en un único lenguaje de programación, abarcando desde herramientas de propósito general como Zend Framework y Ruby on Rails, que amplían las capacidades de un lenguaje específico, hasta paquetes programables en lenguaje nativo construidos en torno a una aplicación de usuario específica, como sistemas de gestión de contenido (CMS), algunas herramientas de desarrollo móvil y algunas herramientas de portal. [ 15 ]
Marcos de trabajo para sitios web de propósito general
Los frameworks web deben funcionar de acuerdo con las reglas arquitectónicas de los navegadores y protocolos como HTTP , que es sin estado . Las páginas web son servidas por un servidor y luego pueden ser modificadas por el navegador mediante JavaScript . Ambos enfoques tienen sus ventajas y desventajas.
Los cambios de página del lado del servidor generalmente requieren que la página se actualice, pero permiten usar cualquier lenguaje y aprovechar una mayor potencia de procesamiento. Los cambios del lado del cliente permiten actualizar la página en pequeños fragmentos, lo que se asemeja a una aplicación de escritorio, pero se limitan a JavaScript y se ejecutan en el navegador del usuario, que puede tener una potencia de procesamiento limitada. Generalmente se utiliza una combinación de ambos. [ 16 ] Las aplicaciones que hacen un uso intensivo de JavaScript y solo actualizan partes de la página se denominan aplicaciones de una sola página y suelen utilizar un marco de trabajo web JavaScript del lado del cliente para organizar el código.
Lado del servidor
Lado del cliente
Algunos ejemplos son Backbone.js , AngularJS , Angular , Ember.js , ReactJS , jQuery UI , Svelte y Vue.js. [ 17 ]
Capacidades y compensaciones en los marcos modernos
Los frameworks de aplicaciones web basados en JavaScript, como React y Vue, ofrecen amplias capacidades, pero también conllevan ciertas desventajas. Estos frameworks suelen extender o mejorar las funcionalidades disponibles a través de tecnologías web nativas, como el enrutamiento, el desarrollo basado en componentes y la gestión del estado. Si bien los estándares web nativos, incluidos los Web Components, las API modernas de JavaScript como Fetch y los módulos ES, y las capacidades del navegador como Shadow DOM, han avanzado significativamente, los frameworks siguen siendo ampliamente utilizados por su capacidad para mejorar la productividad de los desarrolladores, ofrecer patrones estructurados para aplicaciones a gran escala, simplificar el manejo de casos límite y proporcionar herramientas para la optimización del rendimiento. [ 18 ] [ 19 ] [ 20 ]
Los frameworks pueden introducir capas de abstracción que pueden contribuir a una sobrecarga de rendimiento, tamaños de paquete mayores y una mayor complejidad. Los frameworks modernos, como React 18 y Vue 3, abordan estos desafíos con características como la renderización concurrente, la eliminación de código muerto (tree-shaking) y la hidratación selectiva. Si bien estos avances mejoran la eficiencia de la renderización y la gestión de recursos, sus beneficios dependen de la aplicación específica y del contexto de implementación. Los frameworks ligeros, como Svelte y Preact, adoptan diferentes enfoques arquitectónicos: Svelte elimina por completo el DOM virtual a favor de compilar componentes a código JavaScript eficiente, y Preact ofrece una alternativa mínima y compatible a React. La elección del framework depende de los requisitos de la aplicación, incluyendo la experiencia del equipo, los objetivos de rendimiento y las prioridades de desarrollo. [ 18 ] [ 19 ] [ 20 ]
Una nueva categoría de frameworks web, que incluye enhance.dev, Astro y Fresh, aprovecha los estándares web nativos al tiempo que minimiza las abstracciones y las herramientas de desarrollo. [ 21 ] [ 22 ] [ 23 ] Estas soluciones enfatizan la mejora progresiva , la renderización del lado del servidor y la optimización del rendimiento. Astro renderiza HTML estático por defecto, hidratando solo las partes interactivas. Fresh se centra en la renderización del lado del servidor con cero sobrecarga en tiempo de ejecución. Enhance.dev prioriza los patrones de mejora progresiva mediante Web Components. Si bien estas herramientas reducen la dependencia de JavaScript del lado del cliente al trasladar la lógica a la ejecución en tiempo de compilación o del lado del servidor, aún utilizan JavaScript cuando es necesario para la interactividad. Este enfoque las hace particularmente adecuadas para aplicaciones críticas en cuanto al rendimiento y centradas en el contenido. [ 18 ] [ 19 ] [ 20 ]
Características
Los frameworks suelen establecer el flujo de control de un programa y permiten al usuario del framework "engancharse" a ese flujo exponiendo diversos eventos. [ 24 ] Este patrón de diseño de " inversión de control " se considera un principio definitorio de un framework y beneficia al código al imponer un flujo común para un equipo que todos pueden personalizar de forma similar. [ 24 ] Por ejemplo, algunos "microframeworks" populares como Sinatra de Ruby (que inspiró Express.js ) permiten ganchos de "middleware" antes y después de las solicitudes HTTP. Estas funciones de middleware pueden ser de cualquier tipo y permiten al usuario definir el registro, la autenticación, la gestión de sesiones y las redirecciones. [ 25 ]
Sistema de plantillas web
Almacenamiento en caché
El almacenamiento en caché web consiste en guardar documentos web para reducir el consumo de ancho de banda , la carga del servidor y la latencia percibida . Una caché web guarda copias de los documentos que la atraviesan; las solicitudes posteriores pueden ser atendidas desde la caché si se cumplen ciertas condiciones. Algunos marcos de trabajo de aplicaciones proporcionan mecanismos para almacenar documentos en caché y omitir diversas etapas de la preparación de la página, como el acceso a la base de datos o la interpretación de plantillas.
Seguridad
Algunos frameworks web incluyen sistemas de autenticación y autorización que permiten al servidor web identificar a los usuarios de la aplicación y restringir el acceso a las funciones según criterios definidos. Drupal es un ejemplo que ofrece acceso a las páginas basado en roles y proporciona una interfaz web para crear usuarios y asignarles roles.
Acceso, mapeo y configuración de la base de datos
Muchos frameworks web crean una API unificada para un backend de base de datos, lo que permite que las aplicaciones web trabajen con diversas bases de datos sin necesidad de modificar el código y facilita a los programadores el trabajo con conceptos de nivel superior. Además, algunos frameworks orientados a objetos incluyen herramientas de mapeo para proporcionar mapeo objeto-relacional , que asigna objetos a tuplas . [ 26 ]
Algunos frameworks minimizan la configuración de las aplicaciones web mediante el uso de introspección y/o siguiendo convenciones bien conocidas. Por ejemplo, muchos frameworks de Java utilizan Hibernate como capa de persistencia, que puede generar un esquema de base de datos en tiempo de ejecución capaz de persistir la información necesaria. Esto permite al diseñador de la aplicación diseñar objetos de negocio sin necesidad de definir explícitamente un esquema de base de datos. Frameworks como Ruby on Rails también pueden funcionar a la inversa, es decir, definir propiedades de objetos de modelo en tiempo de ejecución basándose en un esquema de base de datos. [ 26 ]
Otras características que pueden proporcionar los marcos web incluyen soporte transaccional [ 27 ] y herramientas de migración de bases de datos . [ 26 ]
Mapeo de URL
El mecanismo de mapeo o enrutamiento de URL de un framework es el que utiliza para interpretar las URL. Algunos frameworks, como Drupal y Django, comparan la URL proporcionada con patrones predeterminados mediante expresiones regulares , mientras que otros emplean técnicas de reescritura para convertirla en una URL que el motor subyacente pueda reconocer. Otra técnica es el recorrido de grafos, como el que utiliza Zope , donde una URL se descompone en pasos que recorren un grafo de objetos (de modelos y vistas).
Un sistema de mapeo de URL que utiliza la coincidencia de patrones o la reescritura para enrutar y gestionar las solicitudes permite usar URL más cortas y amigables , lo que aumenta la simplicidad del sitio y facilita una mejor indexación por parte de los motores de búsqueda. Por ejemplo, una URL que termina en "/page.cgi?cat=science&topic=physics" podría cambiarse simplemente a "/page/science/physics". Esto hace que la URL sea más fácil de recordar, leer y escribir, y proporciona a los motores de búsqueda mejor información sobre la estructura del sitio. Un enfoque de recorrido de grafos también suele dar como resultado la creación de URL amigables. Una URL más corta como "/page/science" suele existir por defecto, ya que es simplemente una forma abreviada del recorrido más largo a "/page/science/physics".
AJAX
Ajax , acrónimo de " Asynchronous JavaScript and XML " (JavaScript y XML asíncronos), es una técnica de desarrollo web para crear aplicaciones web. Su objetivo es lograr que las páginas web respondan mejor mediante el intercambio de pequeñas cantidades de datos con el servidor en segundo plano, de modo que no sea necesario recargar la página completa cada vez que el usuario solicite un cambio. Esto busca aumentar la interactividad, la velocidad, la facilidad de mantenimiento y la usabilidad de una página web . [ 28 ]
Debido a la complejidad de la programación Ajax en JavaScript, existen numerosos frameworks dedicados exclusivamente a su soporte. Algunos incluso están integrados en frameworks más amplios. Por ejemplo, la biblioteca jQuery de JavaScript está incluida en Ruby on Rails.
Con el creciente interés en el desarrollo de aplicaciones web enriquecidas " Web 2.0 " , la complejidad de programar directamente en Ajax y JavaScript se ha vuelto tan evidente que la tecnología de compiladores ha intervenido para permitir a los desarrolladores programar en lenguajes de alto nivel como Java, Python y Ruby. El primero de estos compiladores fue Morfik , seguido de Google Web Toolkit , y tiempo después aparecieron versiones para Python y Ruby, como Pyjs y RubyJS. Estos compiladores y sus bibliotecas de widgets asociadas hacen que el desarrollo de aplicaciones Ajax multimedia enriquecidas sea mucho más similar al desarrollo de aplicaciones de escritorio.
Servicios web
Algunos frameworks proporcionan herramientas para crear y ofrecer servicios web. Estas utilidades pueden ofrecer herramientas similares a las del resto de la aplicación web. [ 29 ]
Recursos web
Varios marcos de trabajo RESTful Web 2.0 más recientes ahora proporcionan una infraestructura de arquitectura orientada a recursos (ROA) para construir colecciones de recursos en una especie de ontología de la Web Semántica , basada en conceptos del Marco de Descripción de Recursos (RDF).
Véase también
- Marco de aplicación – Marco de trabajo en software informático
- Seguridad de la aplicación : medidas adoptadas para mejorar la seguridad de una aplicación.
- Servidor de aplicaciones : servidor que aloja aplicaciones.
- Comparación de frameworks web basados en JavaScript (lado del cliente, para el frontend)
- Comparación de frameworks web del lado del servidor (para el backend)
- Convención sobre configuración : paradigma de diseño de software
- Marco de trabajo CSS (para el frontend)
- No te repitas ( DRY ) – Principio del desarrollo de software
- Lista de frameworks para servicios web
- Aplicación web enriquecida (obsoleta)
- Pila de soluciones : conjunto de subsistemas o componentes de software necesarios para crear una plataforma completa.
Referencias
- ↑ Múltiple (wiki). "Marco de trabajo para aplicaciones web" . Docforge . Archivado del original el 23 de julio de 2015.
- ↑ "Los mejores generadores de sitios estáticos de código abierto" . StaticGen .
- ↑ "CGI: Interfaz de puerta de enlace común" . Archivado del original el 9 de abril de 2009.
- ↑ "CGI" . www.ibm.com . Consultado el 7 de mayo de 2021 .
- ↑ Thomson, Kris (2003-10-29). "Aclaración sobre MVC = Pull y MVC Push" . Recuperado el 29 de julio de 2007 .
- ↑ Microsoft. "Distribución en tres niveles" . Consultado el 19 de septiembre de 2011 .
- ↑ Oracle. "clustering_concepts_10en" (PDF) . Consultado el 19 de septiembre de 2011 .
- ↑ Robert R. Perkoski. "Introducción al desarrollo web" . Archivado del original el 7 de noviembre de 2013.
- ↑ IBM. "Uso de Client Access Express en un entorno de tres niveles" . Consultado el 19 de septiembre de 2011 .
- ↑ Oracle. "Comprendiendo la arquitectura de tres niveles" . Consultado el 19 de septiembre de 2011 .
- ↑ Microsoft. "Arquitectura pragmática: capas" . Consultado el 19 de septiembre de 2011 .
- ↑ Arokia. "Arquitectura web de 3 niveles" . Consultado el 19 de septiembre de 2011 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Mejores prácticas para controladores ASP.NET MVC" . Archivado del original el 11 de octubre de 2011. Consultado el 19 de septiembre de 2011 .
- ↑ Jamis Buck. "Controlador delgado, modelo gorda" . Archivado del original el 16 de mayo de 2015.
- ↑ "Primeros pasos con los frameworks web" . Revista Wired . Consultado el 2 de abril de 2018 .
- ↑ KLIMUSHYN, Mel (6 de abril de 2015). "Arquitectura de aplicaciones web: lado del cliente frente a lado del servidor" . Atomic Spin . Recuperado el 6 de marzo de 2016 .
- ↑ "AngularJS vs. Backbone.js vs. Ember.js" . www.airpair.com . Archivado del original el 26 de marzo de 2023. Consultado el 4 de junio de 2016 .
- 1 2 3 Uzayr, Sufyan bin; Cloud, Nicholas; Ambler, Tim (noviembre de 2019). JavaScript Frameworks for Modern Web Development: The Essential Frameworks, Libraries, and Tools to Learn Right Now . Apress. ISBN 978-1484249949.
- 1 2 3 Rojas, Carlos (13 de noviembre de 2020). Creación de componentes web nativos: Desarrollo front-end con Polymer y Vue.js. Apress. ISBN 978-1484259047.
- 1 2 3 JavaScript práctico de alto rendimiento: Crea aplicaciones web más rápidas con Node.js, Svelte.js y WebAssembly . ISBN 978-1838821098.
- ↑ "Mejorar" . GitHub .
- ↑ "Astro framework" . GitHub .
- ↑ "Fresco" . GitHub .
- 1 2 Fowler, Martin. "bliki: InversionOfControl" . martinfowler.com . Consultado el 6 de marzo de 2016 .
- ↑ Xue, Qiang. "Ingeniería de Capital One: filosofías que dieron forma a marcos de trabajo exitosos" . www.capitalone.io . Archivado del original el 13 de marzo de 2016. Consultado el 6 de marzo de 2016 .
- 1 2 3 " Conceptos básicos de Active Record" . Ruby on Rails . Consultado el 20 de marzo de 2021.
El mapeo objeto-relacional, comúnmente conocido por su abreviatura ORM, es una técnica que conecta los objetos complejos de una aplicación con las tablas de un sistema de gestión de bases de datos relacionales... Active Record crea automáticamente métodos para permitir que una aplicación lea y manipule los datos almacenados en sus tablas.
- ↑ "Transacciones de Active Record" . Ruby on Rails . Consultado el 20 de marzo de 2021 .
- ↑ "crear sitio con ajax webplano" . webplano.com . Consultado el 23/11/2025 .
- ↑ Maximilien, EM (2006). "Tutorial 4: Servicios web en Rails: Uso de Ruby y Rails para el desarrollo de servicios web y mashups". 2006 IEEE International Conference on Web Services (ICWS'06) . pp. xliii. doi : 10.1109/ICWS.2006.139 . ISBN 0-7695-2669-1.
- marcos de trabajo web