stringtranslate.com

Marco web

Un marco web ( WF ) o marco de aplicación web ( WAF ) es un marco de software diseñado para respaldar el desarrollo de aplicaciones web , incluidos servicios web, recursos web y API web . Los marcos web proporcionan una forma estándar de crear e implementar aplicaciones web en la World Wide Web . Los marcos web tienen como objetivo automatizar la sobrecarga asociada con las actividades comunes realizadas en el desarrollo web . Por ejemplo, muchos marcos web proporcionan bibliotecas para el acceso a bases de datos , marcos de plantillas y administración de sesiones , y a menudo promueven la reutilización de código . [1] Aunque a menudo apuntan al desarrollo de sitios web dinámicos , también son aplicables a sitios web estáticos . [2]

Historia

Como el diseño de la World Wide Web no era inherentemente dinámico, los primeros hipertextos consistían en archivos de texto HTML codificados a mano 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 interconectar 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 generalmente tenían efectos adversos en la carga del servidor, ya que cada solicitud iniciaba un proceso separado . [4] Las implementaciones más recientes utilizan procesos persistentes, entre otras técnicas, para reducir la huella de recursos del servidor y ofrecer un aumento general del rendimiento. [ cita requerida ]

En 1995 surgieron los primeros entornos de desarrollo de lenguaje/servidor totalmente integrados y se introdujeron nuevos lenguajes específicos para la web, como ColdFusion , PHP y Active Server Pages . [ cita requerida ]

Aunque la gran mayoría de lenguajes para crear páginas web dinámicas tienen bibliotecas para ayudar con tareas comunes, las aplicaciones web a menudo requieren bibliotecas específicas para tareas particulares, como la creación de HTML (por ejemplo, Jakarta Faces ). [ cita requerida ]

A fines de la década de 1990, comenzaron a aparecer marcos maduros de "pila completa", que a menudo reunían múltiples bibliotecas útiles para el desarrollo web en una única pila de software cohesiva para que los desarrolladores web la usaran. [ cita requerida ]

Tipos de arquitecturas de framework

La mayoría de los marcos web se basan en el patrón modelo-vista-controlador (MVC) . [ cita requerida ]

Modelo-vista-controlador (MVC)

Muchos marcos 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 generalmente se considera una buena práctica ya que modulariza el código , promueve la reutilización del código y permite aplicar múltiples interfaces. En las aplicaciones web, esto permite presentar diferentes vistas, por ejemplo, ofrecer diferentes páginas web para navegadores móviles y de escritorio, o proporcionar interfaces de servicios web legibles por máquina .

Basado en push vs. basado en pull

La mayoría de los marcos MVC siguen una arquitectura basada en push, también llamada "basada en acciones". Estos marcos utilizan acciones que realizan el procesamiento requerido y luego "envían" los datos a la capa de vista para representar los resultados. [5] Una alternativa a esto es la arquitectura basada en pull, a veces también llamada "basada en componentes". Estos marcos comienzan con la capa de vista, que luego puede "extraer" resultados de múltiples controladores según sea necesario. En esta arquitectura, se pueden involucrar múltiples controladores con una sola vista.

Organización de tres niveles

En una 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 normalmente es un RDBMS . La aplicación contiene la lógica empresarial, se ejecuta en un servidor y se comunica con el cliente mediante HTTP . [10] El cliente en 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 empresarial alejada del controlador, la "capa intermedia". [13] [14]

Aplicaciones del marco

Los marcos se construyen para respaldar la construcción de aplicaciones de Internet basadas en un solo lenguaje de programación, y su enfoque va desde herramientas de propósito general como Zend Framework y Ruby on Rails, que aumentan las capacidades de un lenguaje específico, hasta paquetes programables en lenguaje nativo creados 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 sitios web de propósito general

Los marcos web deben funcionar de acuerdo con las reglas arquitectónicas de los navegadores y protocolos como HTTP , que no tiene estado . Las páginas web son presentadas por un servidor y luego pueden ser modificadas por el navegador mediante JavaScript . Ambos enfoques tienen sus ventajas y desventajas. [ cita requerida ]

Los cambios de página del lado del servidor generalmente requieren que la página se actualice, pero permiten usar cualquier lenguaje y utilizar más potencia de procesamiento. Los cambios del lado del cliente permiten que la página se actualice en pequeños fragmentos, lo que parece 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. Por lo general, se utiliza una combinación de los dos. [16] Las aplicaciones que hacen un uso intensivo de JavaScript y solo actualizan partes de la página se denominan aplicaciones de página única y, por lo general, utilizan un marco web de JavaScript del lado del cliente para organizar el código. [ cita requerida ]

Del lado del servidor

Del lado del cliente

Los ejemplos incluyen Backbone.js , AngularJS , Angular , Ember.js , ReactJS , jQuery UI , Svelte y Vue.js. [17 ]

Foros de discusión, wikis y blogs

Características

Los frameworks suelen establecer el flujo de control de un programa y permiten al usuario del framework "engancharse" a ese flujo exponiendo varios eventos. [18] 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 manera similar. [18] 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 cualquier cosa y permiten al usuario definir el registro, la autenticación y la gestión de sesiones, y la redirección. [19]

Sistema de plantillas web

Almacenamiento en caché

El almacenamiento en caché de documentos web es el almacenamiento en caché de documentos web para reducir el uso de ancho de banda , la carga del servidor y el " retraso " percibido. Un caché web almacena copias de los documentos que pasan por él; las solicitudes posteriores pueden ser satisfechas desde el caché si se cumplen ciertas condiciones. Algunos marcos de aplicaciones proporcionan mecanismos para almacenar documentos en caché y omitir varias etapas de la preparación de la página, como el acceso a la base de datos o la interpretación de plantillas. [ cita requerida ]

Seguridad

Algunos frameworks web incluyen marcos 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 en función de algunos criterios definidos. Drupal es un ejemplo que proporciona acceso basado en roles a las páginas y ofrece una interfaz basada en web para crear usuarios y asignarles roles. [ cita requerida ]

Acceso, mapeo y configuración de bases de datos

Muchos frameworks web crean una API unificada para un backend de base de datos, lo que permite que las aplicaciones web funcionen con una variedad de bases de datos sin cambios de código y permite a los programadores trabajar con conceptos de nivel superior. Además, algunos frameworks orientados a objetos contienen herramientas de mapeo para proporcionar mapeo relacional de objetos , que mapea objetos a tuplas . [20]

Algunos frameworks minimizan la configuración de aplicaciones web mediante el uso de introspección y/o siguiendo convenciones bien conocidas. Por ejemplo, muchos frameworks 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. Los 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. [20]

Otras características que pueden proporcionar los marcos web incluyen soporte transaccional [21] y herramientas de migración de bases de datos . [20]

Asignación de URL

La función de mapeo o enrutamiento de URL de un framework es el mecanismo por el cual el framework interpreta las URL. Algunos frameworks, como Drupal y Django, comparan la URL proporcionada con patrones predeterminados mediante expresiones regulares , mientras que otros utilizan técnicas de reescritura para traducir la URL proporcionada a una que el motor subyacente reconocerá. Otra técnica es la de recorrido de grafos , como la que utiliza Zope , donde una URL se descompone en pasos que recorren un grafo de objetos (de modelos y vistas). [ cita requerida ]

Un sistema de mapeo de URL que utiliza la coincidencia de patrones o la reescritura para enrutar y manejar las solicitudes permite el uso de URL más cortas y " amigas", lo que aumenta la simplicidad del sitio y permite una mejor indexación por parte de los motores de búsqueda. Por ejemplo, una URL que termina con "/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 para las personas, y proporciona a los motores de búsqueda mejor información sobre el diseño estructural del sitio. Un enfoque de recorrido de gráficos también tiende a generar URL amigables. Una URL más corta como "/page/science" tiende a existir de forma predeterminada, ya que es simplemente una forma más corta del recorrido más largo a "/page/science/physics". [ cita requerida ]

Ajax

Ajax , abreviatura de " Asynchronous JavaScript and XML ", es una técnica de desarrollo web para crear aplicaciones web. El objetivo es hacer que las páginas web se sientan más responsivas mediante el intercambio de pequeñas cantidades de datos con el servidor en segundo plano, de modo que no sea necesario volver a cargar la página web completa cada vez que el usuario solicita un cambio. Esto tiene como objetivo aumentar la interactividad, la velocidad, la facilidad de mantenimiento y la facilidad de uso de una página web . [22]

Debido a la complejidad de la programación Ajax en JavaScript, existen numerosos frameworks Ajax que se ocupan exclusivamente de la compatibilidad con Ajax. Algunos frameworks Ajax incluso están integrados como parte de frameworks más grandes. Por ejemplo, la biblioteca jQuery de JavaScript está incluida en Ruby on Rails. [ cita requerida ]

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 dado un paso adelante, para permitir a los desarrolladores codificar en lenguajes de alto nivel como Java, Python y Ruby. El primero de estos compiladores fue Morfik , seguido por Google Web Toolkit , con puertos para Python y Ruby en forma de Pyjs y RubyJS que le siguieron algún tiempo después. Estos compiladores y sus bibliotecas de conjuntos de widgets asociadas hacen que el desarrollo de aplicaciones Ajax de medios enriquecidos sea mucho más parecido al desarrollo de aplicaciones de escritorio. [ cita requerida ]

Servicios web

Algunos frameworks proporcionan herramientas para crear y proporcionar servicios web. Estas utilidades pueden ofrecer herramientas similares a las del resto de la aplicación web. [23]

Recursos web

Una serie de nuevos marcos RESTful Web 2.0 ahora brindan una infraestructura de arquitectura orientada a recursos (ROA) para construir colecciones de recursos en una especie de ontología de Web semántica , basada en conceptos del Marco de descripción de recursos (RDF). [ cita requerida ]

Véase también

Referencias

  1. ^ Multiple (wiki). «Web application framework». Docforge . Archivado desde el original el 23 de julio de 2015.
  2. ^ "Los mejores generadores de sitios estáticos de código abierto". StaticGen .
  3. ^ "CGI: Interfaz de puerta de enlace común". Archivado desde el original el 9 de abril de 2009.
  4. ^ "CGI". www.ibm.com . Consultado el 7 de mayo de 2021 .
  5. ^ Thomson, Kris (2003-10-29). "Aclaración sobre MVC= Pull y MVC Push" . Consultado el 29 de julio de 2007 .
  6. ^ Microsoft. «Distribución en tres niveles» . Consultado el 19 de septiembre de 2011 .
  7. ^ Oracle. "clustering_concepts_10en" (PDF) . Consultado el 19 de septiembre de 2011 .
  8. ^ Robert R. Perkoski. "Introducción al desarrollo web". Archivado desde el original el 7 de noviembre de 2013.
  9. ^ IBM. "Uso de Client Access Express en un entorno de tres niveles" . Consultado el 19 de septiembre de 2011 .
  10. ^ Oracle. "Comprensión de la arquitectura de tres niveles" . Consultado el 19 de septiembre de 2011 .
  11. ^ Microsoft. «Arquitectura pragmática: capas» . Consultado el 19 de septiembre de 2011 .
  12. ^ Arokia. "Arquitectura web de 3 niveles" . Consultado el 19 de septiembre de 2011 .
  13. ^ "Mejores prácticas del controlador ASP.NET MVC". Archivado desde el original el 11 de octubre de 2011. Consultado el 19 de septiembre de 2011 .
  14. ^ Jamis Buck. "Controlador flaco, modelo gordo". Archivado desde el original el 16 de mayo de 2015.
  15. ^ "Introducción a los frameworks web". Revista Wired . Consultado el 2 de abril de 2018 .
  16. ^ KLIMUSHYN, Mel (6 de abril de 2015). "Arquitectura de aplicaciones web: lado del cliente frente al lado del servidor". Atomic Spin . Consultado el 6 de marzo de 2016 .
  17. ^ "AngularJS vs. Backbone.js vs. Ember.js". www.airpair.com . Consultado el 4 de junio de 2016 .
  18. ^ ab Fowler, Martin. "bliki: InversionOfControl". martinfowler.com . Consultado el 6 de marzo de 2016 .
  19. ^ Xue, Qiang. "Capital One Engineering: filosofías que dieron forma a marcos de trabajo exitosos". www.capitalone.io . Consultado el 6 de marzo de 2016 .
  20. ^ abc "Conceptos básicos de Active Record". Ruby on Rails . Consultado el 20 de marzo de 2021 . El mapeo relacional de objetos, comúnmente conocido como su abreviatura ORM, es una técnica que conecta los objetos enriquecidos de una aplicación a las tablas de un sistema de administración de bases de datos relacionales... Active Record crea automáticamente métodos para permitir que una aplicación lea y manipule datos almacenados dentro de sus tablas.
  21. ^ "Transacciones de registros activos". Ruby on Rails . Consultado el 20 de marzo de 2021 .
  22. ^ "¿Qué es AJAX?". www.dlsweb.rmit.edu.au . Consultado el 7 de mayo de 2021 .
  23. ^ Maximilien, EM (2006). "Tutorial 4: Servicios web en Rails: uso de Ruby y Rails para el desarrollo de servicios web y mashups". Conferencia internacional IEEE sobre servicios web de 2006 (ICWS'06) . pp. xliii. doi :10.1109/ICWS.2006.139. ISBN 0-7695-2669-1.