De Wikipedia, la enciclopedia libre
  (Redirigido desde el marco de la aplicación 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 [ editar ]

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 . [ cita requerida ] 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 de rendimiento general.

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 utilicen 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 , [4] CakePHP , [5]y Symfony . [ cita requerida ]

Tipos de arquitecturas marco [ editar ]

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

Modelo – vista – controlador (MVC) [ editar ]

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 push versus basado en pull [ editar ]

Most MVC frameworks follow a push-based architecture also called "action-based". These frameworks use actions that do the required processing, and then "push" the data to the view layer to render the results.[6] Django, Ruby on Rails, Symfony, Spring MVC, Stripes, Sails.js, CodeIgniter[7] are good examples of this architecture. An alternative to this is pull-based architecture, sometimes also called "component-based". These frameworks start with the view layer, which can then "pull" results from multiple controllers as needed. In this architecture, multiple controllers can be involved with a single view. Lift, 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 [ editar ]

In three-tier organization, applications are structured around three physical tiers: client, application, and database.[8][9][10][11] The database is normally an RDBMS. The application contains the business logic, running on a server and communicates with the client using HTTP.[12] The client on web applications is a web browser that runs HTML generated by the application layer.[13][14] The term should not be confused with MVC, where, unlike in three-tier architecture, it is considered a good practice to keep business logic away from the controller, the "middle layer".[15][16]

Aplicaciones marco [ editar ]

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. [17]

Marcos de sitios web de uso general [ editar ]

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 ]

Server-side page changes typically require that the page be refreshed, but allow any language to be used and more computing power to be utilized. Client-side changes allow the page to be updated in small chunks which feels like a desktop application, but are limited to JavaScript and run in the user's browser, which may have limited computing power. Some mix of the two is typically used.[18] Applications which make heavy use of JavaScript are called single-page applications and typically make use of a client-side JavaScript web framework to organize the code.[citation needed]

Server-side[edit]

  • Apache Wicket
  • ASP.NET Core
  • CakePHP
  • Catalyst
  • CodeIgniter
  • CppCMS
  • Django
  • Flask
  • Jam.py
  • Yii
  • Laravel
  • Mojolicious
  • Ruby on Rails
  • Sails.js
  • Symfony
  • Spring MVC
  • Wt (web toolkit)
  • Zend Framework[19]

Client-side[edit]

Examples include Backbone.js, AngularJS, Angular, EmberJS, ReactJS and Vue.js.[20]

Dash is an open-source Python, R, and Julia framework for building web-based analytic applications. The same JavaScript (i.e. React) is used on the client side, independently of back-end-language.

Discussion forums, wikis and weblogs[edit]

  • WikiBase / WikiWikiWeb [ cita requerida ]

Funciones [ editar ]

Frameworks typically set the control flow of a program and allow the user of the framework to "hook into" that flow by exposing various events.[21] This "inversion of control" design pattern is considered to be a defining principle of a framework, and benefits the code by enforcing a common flow for a team which everyone can customize in similar ways.[21] For example, some popular "microframeworks" such as Ruby's Sinatra (which inspired Express.js) allow for "middleware" hooks prior to and after HTTP requests. These middleware functions can be anything, and allow the user to define logging, authentication and session management, and redirecting.[22]

Sistema de plantillas web [ editar ]

Almacenamiento en caché [ editar ]

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 [ editar ]

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 [ editar ]

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 . [23]

Some frameworks minimize web application configuration through the use of introspection and/or following well-known conventions. For example, many Java frameworks use Hibernate as a persistence layer, which can generate a database schema at runtime capable of persisting the necessary information. This allows the application designer to design business objects without needing to explicitly define a database schema. Frameworks such as Ruby on Rails can also work in reverse, that is, define properties of model objects at runtime based on a database schema.[23]

Other features web frameworks may provide include transactional support[24] and database migration tools.[23]

URL mapping[edit]

A framework's URL mapping or routing facility is the mechanism by which the framework interprets URLs. Some frameworks, such as Drupal and Django, match the provided URL against pre-determined patterns using regular expressions, while some others use rewriting techniques to translate the provided URL into one that the underlying engine will recognize. Another technique is that of graph traversal such as used by Zope, where a URL is decomposed in steps that traverse an object graph (of models and views).[citation needed]

A URL mapping system that uses pattern matching or rewriting to route and handle requests allows for shorter more "friendly URLs" to be used, increasing the simplicity of the site and allowing for better indexing by search engines. For example, a URL that ends with "/page.cgi?cat=science&topic=physics" could be changed to simply "/page/science/physics". This makes the URL easier for people to remember, read and write, and provides search engines with better information about the structural layout of the site. A graph traversal approach also tends to result in the creation of friendly URLs. A shorter URL such as "/page/science" tends to exist by default as that is simply a shorter form of the longer traversal to "/page/science/physics".[citation needed]

AJAX[edit]

Ajax, shorthand for "Asynchronous JavaScript and XML", is a web development technique for creating web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change. This is intended to increase a web page's interactivity, speed, and usability.[citation needed]

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 ]

With the increased interest in developing "Web 2.0" rich web applications, the complexity of programming directly in Ajax and JavaScript has become so apparent that compiler technology has stepped in, to allow developers to code in high-level languages such as Java, Python and Ruby. The first of these compilers was Morfik followed by Google Web Toolkit, with ports to Python and Ruby in the form of Pyjs and RubyJS following some time after. These compilers and their associated widget set libraries make the development of rich media Ajax applications much more akin to that of developing desktop applications.[citation needed]

Web services[edit]

Algunos marcos proporcionan herramientas para crear y proporcionar servicios web. Estas utilidades pueden ofrecer herramientas similares al resto de la aplicación web. [25]

Recursos web [ editar ]

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 de Resource Description Framework (RDF). [ cita requerida ]

Ver también [ editar ]

  • 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 [ editar ]

  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. ^ "Yii PHP Framework" .
  5. ^ "CakePHP" .
  6. Thomson, Kris (29 de octubre de 2003). "Aclaración sobre MVC = Pull y MVC Push" . Consultado el 29 de julio de 2007 .
  7. ^ "Cuáles son las diferencias fundamentales entre Struts y JSF" . Struts.apache.org. 2011-02-14 . Consultado el 14 de junio de 2013 .
  8. ^ Microsoft. "Distribución de tres niveles" . Consultado el 19 de septiembre de 2011 .
  9. ^ Oracle. "clustering_concepts_10en" (PDF) . Consultado el 19 de septiembre de 2011 .
  10. ^ Robert R. Perkoski. "Introducción al Desarrollo Web" . Archivado desde el original el 7 de noviembre de 2013.
  11. ^ IBM. "Uso de Client Access Express en un entorno de tres niveles" . Consultado el 19 de septiembre de 2011 .
  12. ^ Oracle. "Comprensión de la arquitectura de tres niveles" . Consultado el 19 de septiembre de 2011 .
  13. ^ Microsoft. "Arquitectura pragmática: estratificación" . Consultado el 19 de septiembre de 2011 .
  14. ^ Arokia. "Arquitectura web de 3 niveles" . Consultado el 19 de septiembre de 2011 .
  15. ^ "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 .
  16. ^ Jamis Buck. "Controlador flaco, modelo gordo" . Archivado desde el original el 16 de mayo de 2015.
  17. ^ "Introducción a los marcos web" . Revista cableada . Consultado el 2 de abril de 2018 .
  18. ^ 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 .
  19. ^ "Inicio - Zend Framework" . framework.zend.com . Consultado el 9 de febrero de 2020 .
  20. ^ "AngularJS frente a Backbone.js frente a Ember.js" . www.airpair.com . Consultado el 4 de junio de 2016 .
  21. ^ a b Fowler, Martin. "bliki: InversionOfControl" . martinfowler.com . Consultado el 6 de marzo de 2016 .
  22. ^ 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 .
  23. ^ a b c "Active Record Basics". Ruby on Rails. Retrieved March 20, 2021. Object Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within its tables.
  24. ^ "Active Record Transactions". Ruby on Rails. Retrieved March 20, 2021.
  25. ^ 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.