Marco web


De Wikipedia, la enciclopedia libre
  (Redirigido desde el marco de recursos web )
Saltar a navegación Saltar a búsqueda

Un marco web ( WF ) o marco de aplicaciones web ( WAF ) es un marco de software diseñado para admitir 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 los gastos generales asociados 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 ygestión de sesiones y, a menudo, promueven la reutilización del código . [1] Aunque a menudo se dirigen 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 intrínsecamente dinámico, el hipertexto inicial consistía en HTML codificado a mano que se publicaba en servidores web . Cualquier modificación a las páginas publicadas debe ser realizada por el autor de las páginas. En 1993, se introdujo el estándar Common Gateway Interface (CGI) para interconectar aplicaciones externas con servidores web, para proporcionar una página web dinámica que reflejara las entradas del usuario. [3]

Sin embargo, las implementaciones originales de la interfaz CGI generalmente tenían efectos adversos en la carga del servidor, porque cada solicitud iniciaba un proceso separado . [4] Las implementaciones más recientes utilizan procesos persistentes entre otras técnicas para reducir la huella en los recursos del servidor y ofrecer un aumento general del rendimiento.

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

Aunque la gran mayoría de los 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, JavaServer Faces ). [ cita requerida ]

A fines de la década de 1990, comenzaron a aparecer marcos maduros de "pila completa", que a menudo reunían varias bibliotecas útiles para el desarrollo web en una única pila de software cohesiva para que los utilizasen los desarrolladores web. Ejemplos de esto incluyen ASP.NET , Java EE , WebObjects , web2py , OpenACS , Catalyst , Mojolicious , Ruby on Rails , Laravel , Grails , Django , Zend Framework , Sails.js , Yii , [5] CakePHP , [6]y Symfony . [ cita requerida ]

Tipos de arquitecturas marco

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 con reglas comerciales de la interfaz de usuario . Esto generalmente se considera una buena práctica, ya que modulariza el código, promueve la reutilización del código y permite la aplicación de múltiples interfaces. En las aplicaciones web, esto permite presentar diferentes vistas, como páginas web para humanos e interfaces de servicios web para aplicaciones remotas. [ cita requerida ]

Basado en empuje versus basado en tirar

La mayoría de los frameworks MVC siguen una arquitectura basada en push, también llamada "basada en acciones". Estos marcos utilizan acciones que realizan el procesamiento requerido y luego "empujan" los datos a la capa de vista para generar los resultados. [7] Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter [8] son buenos ejemplos de esta arquitectura. Una alternativa a esto es la arquitectura basada en extracción, a veces también llamada "basada en componentes". Estos marcos comienzan con la capa de vista, que luego puede "extraer" resultados de varios controladores según sea necesario. En esta arquitectura, se pueden involucrar varios controladores con una sola vista.Elevar, Tapestry , JBoss Seam , JavaServer Faces y Wicket son ejemplos de arquitecturas basadas en extracción. Play , Struts , RIFE y ZK son compatibles con las llamadas de controlador de aplicaciones basadas en push y pull. [ cita requerida ]

Organización de tres niveles

En una organización de tres niveles , las aplicaciones se estructuran en tres niveles físicos: cliente, aplicación y base de datos. [9] [10] [11] [12] La base de datos es normalmente un RDBMS . La aplicación contiene la lógica empresarial, se ejecuta en un servidor y se comunica con el cliente mediante HTTP . [13] El cliente en aplicaciones web es un navegador web que ejecuta HTML generado por la capa de aplicación. [14] [15] 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". [16] [17]

Aplicaciones marco

Los marcos están diseñados para admitir la construcción de aplicaciones de Internet basadas en un solo lenguaje de programación, con un enfoque que 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 construidos alrededor una aplicación de usuario específica, como sistemas de gestión de contenido , algunas herramientas de desarrollo móvil y algunas herramientas de portal. [18]

Marcos de sitios web de propósito general

Los marcos web deben funcionar de acuerdo con las reglas de arquitectura de los navegadores y protocolos como HTTP , que no tiene estado . Las páginas web son servidas por un servidor y luego pueden ser modificadas por el navegador usando JavaScript . Cualquiera de los dos enfoques tiene 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 que se use cualquier idioma y se utilice más potencia de cómputo. Los cambios del lado del cliente permiten que la página se actualice en pequeños fragmentos que se sienten como una aplicación de escritorio, pero están limitados a JavaScript y se ejecutan en el navegador del usuario, que puede tener una potencia informática limitada. Por lo general, se usa alguna combinación de los dos. [19] Las aplicaciones que hacen un uso intensivo de JavaScript se denominan aplicaciones de una sola página y normalmente utilizan un marco web JavaScript del lado del cliente para organizar el código. [ cita requerida ]

Lado del servidor

  • Apache Wicket
  • ASP.NET Core
  • CakePHP
  • Catalizador
  • CodeIgniter
  • CppCMS
  • Django
  • Matraz
  • Jam.py
  • Yii
  • Laravel
  • Mojolicious
  • Ruby on Rails
  • Sails.js
  • Symfony
  • Primavera MVC
  • Wt (kit de herramientas web)
  • Zend Framework [20]

Lado del cliente

Los ejemplos incluyen Backbone.js , AngularJS , angular , EmberJS , ReactJS y Vue.js . [21]

Dash es un marco de trabajo Python , R y Julia de código abierto para crear aplicaciones analíticas basadas en la web . El mismo JavaScript (es decir, React) se usa en el lado del cliente, independientemente del lenguaje de back-end.

Foros de discusión, wikis y weblogs

  • WikiBase / WikiWikiWeb [ cita requerida ]

Características

Los marcos generalmente establecen el flujo de control de un programa y permiten al usuario del marco "engancharse" a ese flujo al exponer varios eventos. [22] Este patrón de diseño de " inversión de control " se considera un principio definitorio de un marco y beneficia al código al imponer un flujo común para un equipo que todos pueden personalizar de manera similar. [22] Por ejemplo, algunos "microframeworks" populares como Sinatra de Ruby (que inspiró Express.js ) permiten enlaces 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. [23]

Sistema de plantillas web

Almacenamiento en caché

El almacenamiento en caché 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 lo atraviesan; las solicitudes posteriores pueden satisfacerse desde la memoria caché si se cumplen determinadas condiciones. Algunos marcos de aplicación 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 la plantilla. [ cita requerida ]

Seguridad

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

Acceso, mapeo y configuración de la base de datos

Muchos marcos web crean una API unificada para el backend de una 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 marcos orientados a objetos contienen herramientas de mapeo para proporcionar mapeo relacional de objetos , que mapea objetos a tuplas . [24]

Algunos marcos minimizan la configuración de la aplicación web mediante el uso de introspección y / o siguiendo convenciones conocidas. Por ejemplo, muchos marcos de Java usan Hibernate como una capa de persistencia, que puede generar un esquema de base de datos en tiempo de ejecución capaz de conservar la información necesaria. Esto permite al diseñador de aplicaciones diseñar objetos comerciales sin necesidad de definir explícitamente un esquema de base de datos. Los marcos como Ruby on Rails también pueden funcionar a la inversa, es decir, definir las propiedades de los objetos del modelo en tiempo de ejecución en función de un esquema de base de datos. [24]

Otras características que pueden proporcionar los frameworks web incluyen soporte transaccional [25] y herramientas de migración de bases de datos . [24]

Mapeo de URL

La función de asignación o enrutamiento de URL de un marco es el mecanismo mediante el cual el marco interpreta las URL. Algunos marcos, como Drupal y Django, hacen coincidir la URL proporcionada con patrones predeterminados utilizando expresiones regulares , mientras que otros utilizan técnicas de reescritura para traducir la URL proporcionada en una que el motor subyacente reconocerá. Otra técnica es la del recorrido de gráficos como la que utiliza Zope , donde una URL se descompone en pasos que atraviesan un gráfico de objeto (de modelos y vistas). [ cita requerida ]

Un sistema de mapeo de URL que usa patrones de coincidencia o reescritura para enrutar y manejar solicitudes permite usar " URLs amigables " más cortas , aumentando la simplicidad del sitio y permitiendo una mejor indexación por parte de los motores de búsqueda. Por ejemplo, una URL que termine con "/page.cgi?cat=science&topic=physics" podría cambiarse a simplemente "/ 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 el diseño estructural del sitio. Un enfoque de recorrido de gráfico también tiende a resultar en la creación de URL amigables. Una URL más corta como "/ página / ciencia" tiende a existir de forma predeterminada, ya que es simplemente una forma más corta del recorrido más largo a "/ página / ciencia / física".[ cita requerida]

AJAX

Ajax , abreviatura de " JavaScript y XML asíncronos ", es una técnica de desarrollo web para crear aplicaciones web. La intención es hacer que las páginas web se sientan más receptivas intercambiando pequeñas cantidades de datos con el servidor detrás de escena, de modo que no sea necesario volver a cargar toda la página web cada vez que el usuario solicite un cambio. Esto tiene como objetivo aumentar la interactividad, la velocidad y la usabilidad de una página web . [26]

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

Con el creciente interés en el desarrollo de aplicaciones web ricas en " Web 2.0 " , la complejidad de la programación directamente en Ajax y JavaScript se ha vuelto tan evidente que la tecnología del compilador ha intervenido para permitir a los desarrolladores codificar en lenguajes de alto nivel como Java, Python y Rubí. El primero de estos compiladores fue Morfik, seguido de Google Web Toolkit , con puertos a Python y Ruby en forma de Pyjs y RubyJS después de algún tiempo. Estos compiladores y sus bibliotecas de conjuntos de widgets asociados 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 marcos proporcionan herramientas para crear y proporcionar servicios web. Estas utilidades pueden ofrecer herramientas similares al resto de la aplicación web. [27]

Recursos web

Una serie de marcos RESTful Web 2.0 más nuevos ahora proporcionan 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 ]

Ver también

  • Comparación de frameworks web
  • Aplicación web enriquecida
  • Lista de marcos de aplicaciones web enriquecidos
  • Lista de marcos de servicios web
  • Servidor de aplicaciones
  • Comparación de servidores de aplicaciones
  • Marco de aplicación
  • Seguridad de la aplicación
  • Convención sobre configuración
  • No te repitas (SECO)
  • Pila de soluciones
  • Marco de aplicaciones basado en web para múltiples teléfonos

Referencias

  1. ^ Múltiple (wiki). "Marco de aplicación web" . Docforge . Archivado desde el original el 23 de julio de 2015.
  2. ^ "Principales 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. ^ "Yii PHP Framework" .
  6. ^ "CakePHP" .
  7. Thomson, Kris (29 de octubre de 2003). "Aclaración sobre MVC = Pull y MVC Push" . Consultado el 29 de julio de 2007 .
  8. ^ "Cuáles son las diferencias fundamentales entre Struts y JSF" . Struts.apache.org. 2011-02-14 . Consultado el 14 de junio de 2013 .
  9. ^ Microsoft. "Distribución de tres niveles" . Consultado el 19 de septiembre de 2011 .
  10. ^ Oracle. "clustering_concepts_10en" (PDF) . Consultado el 19 de septiembre de 2011 .
  11. ^ Robert R. Perkoski. "Introducción al Desarrollo Web" . Archivado desde el original el 7 de noviembre de 2013.
  12. ^ IBM. "Uso de Client Access Express en un entorno de tres niveles" . Consultado el 19 de septiembre de 2011 .
  13. ^ Oracle. "Comprensión de la arquitectura de tres niveles" . Consultado el 19 de septiembre de 2011 .
  14. ^ Microsoft. "Arquitectura pragmática: estratificación" . Consultado el 19 de septiembre de 2011 .
  15. ^ Arokia. "Arquitectura web de 3 niveles" . Consultado el 19 de septiembre de 2011 .
  16. ^ "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 .
  17. ^ Jamis Buck. "Controlador flaco, modelo gordo" . Archivado desde el original el 16 de mayo de 2015.
  18. ^ "Introducción a los marcos web" . Revista cableada . Consultado el 2 de abril de 2018 .
  19. ^ KLIMUSHYN, Mel. "Arquitectura de aplicaciones web: del lado del cliente frente al lado del servidor" . Giro atómico . Consultado el 6 de marzo de 2016 .
  20. ^ "Inicio - Zend Framework" . framework.zend.com . Consultado el 9 de febrero de 2020 .
  21. ^ "AngularJS frente a Backbone.js frente a Ember.js" . www.airpair.com . Consultado el 4 de junio de 2016 .
  22. ^ a b Fowler, Martin. "bliki: InversionOfControl" . martinfowler.com . Consultado el 6 de marzo de 2016 .
  23. ^ Xue, Qiang. "Ingeniería de Capital One - Filosofías que dieron forma a marcos exitosos" . www.capitalone.io . Consultado el 6 de marzo de 2016 .
  24. ^ a b c "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 ricos de una aplicación con tablas en 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 los datos almacenados en sus mesas.
  25. ^ "Transacciones de registro activo" . Ruby on Rails . Consultado el 20 de marzo de 2021 .
  26. ^ "Qué es AJAX" . www.dlsweb.rmit.edu.au . Consultado el 7 de mayo de 2021 .
  27. ^ Maximilien, EM (19 de diciembre de 2006). "Web Services on Rails: uso de Ruby y Rails para desarrollo de servicios web y mashups" . IEEE Xplore . Chicago. doi : 10.1109 / ICWS.2006.139 . ISBN 0-7695-2669-1.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Web_framework&oldid=1045713138#Web_resources "