Una aplicación web (o aplicación web ) es un software de aplicación al que se accede mediante un navegador web . Las aplicaciones web se entregan en la World Wide Web a los usuarios con una conexión de red activa. [1] La introducción de aplicaciones web a principios de la década de 2000 permitió una mayor flexibilidad para los desarrolladores y los usuarios con las interfaces de cliente.
Existen varios sistemas de niveles diferentes que las aplicaciones web utilizan para comunicarse entre los navegadores web, la interfaz del cliente y los datos del servidor. Cada sistema tiene sus propios usos, ya que funcionan de diferentes maneras. Sin embargo, existen muchos riesgos de seguridad que los desarrolladores deben tener en cuenta durante el desarrollo; es fundamental tomar las medidas adecuadas para proteger los datos de los usuarios.
La página única y la progresiva son dos enfoques para que un sitio web se parezca más a una aplicación nativa .
El concepto de "aplicación web" se introdujo por primera vez en el lenguaje Java en la versión 2.2 de la especificación de Servlet, publicada en 1999. En ese momento, tanto JavaScript como XML ya se habían desarrollado, pero el objeto XMLHttpRequest se había introducido recientemente en Internet Explorer 5 como un objeto ActiveX . [ cita requerida ] A principios de la década de 2000, aplicaciones como " Myspace (2003), Gmail (2004), Digg (2004) [y] Google Maps (2005)" comenzaron a hacer que sus clientes fueran cada vez más interactivos. Un script de página web puede contactar con el servidor para almacenar/recuperar datos sin descargar una página web completa. La práctica se conoció como Ajax en 2005.
En los modelos informáticos anteriores, como el cliente-servidor, la carga de procesamiento de la aplicación se compartía entre el código del servidor y el código instalado en cada cliente localmente. En otras palabras, una aplicación tenía su propio programa cliente precompilado que servía como interfaz de usuario y tenía que instalarse por separado en la computadora personal de cada usuario . Una actualización del código del lado del servidor de la aplicación normalmente también requeriría una actualización del código del lado del cliente instalado en cada estación de trabajo del usuario, lo que aumentaba el costo de soporte y reducía la productividad . Además, tanto los componentes del cliente como del servidor de la aplicación estaban estrechamente vinculados a una arquitectura de computadora y un sistema operativo particulares , lo que hacía que su portabilidad a otros sistemas fuera prohibitivamente costosa para todas las aplicaciones, excepto las más grandes.
Más tarde, en 1995, Netscape introdujo el lenguaje de programación del lado del cliente llamado JavaScript , que permitía a los programadores añadir elementos dinámicos a la interfaz de usuario que se ejecutaba en el lado del cliente. Básicamente, en lugar de enviar datos al servidor para generar una página web completa, los scripts integrados de la página descargada pueden realizar varias tareas, como la validación de entrada o mostrar u ocultar partes de la página.
(Hoy en día, [¿ cuándo? ] las aplicaciones nativas para dispositivos móviles también se ven obstaculizadas por algunos o todos los problemas mencionados anteriormente). [ dudoso – discutir ]
" Aplicaciones web progresivas ", término acuñado por la diseñadora Frances Berriman y el ingeniero de Google Chrome Alex Russell en 2015, se refiere a aplicaciones que aprovechan las nuevas características compatibles con los navegadores modernos, que inicialmente se ejecutan dentro de una pestaña del navegador web, pero luego pueden ejecutarse completamente sin conexión y pueden iniciarse sin ingresar la URL de la aplicación en el navegador.
Las aplicaciones tradicionales para PC suelen tener un solo nivel y residen únicamente en la máquina cliente. Por el contrario, las aplicaciones web facilitan inherentemente una arquitectura de varios niveles. Aunque son posibles muchas variaciones, la estructura más común es la aplicación de tres niveles . En su forma más común, los tres niveles se denominan presentación , aplicación y almacenamiento . El primer nivel, presentación, se refiere al propio navegador web. El segundo nivel se refiere a cualquier motor que utilice tecnología de contenido web dinámico (como ASP , CGI , ColdFusion , Dart , JSP/Java , Node.js , PHP , Python o Ruby on Rails ). El tercer nivel se refiere a una base de datos que almacena datos y determina la estructura de una interfaz de usuario. Básicamente, cuando se utiliza el sistema de tres niveles, el navegador web envía solicitudes al motor, que luego las atiende realizando consultas y actualizaciones en la base de datos y genera una interfaz de usuario.
La solución de 3 niveles puede resultar insuficiente cuando se trata de aplicaciones más complejas y puede ser necesario reemplazarla por el enfoque de n niveles; el mayor beneficio de esto es cómo la lógica empresarial (que reside en el nivel de aplicación) se descompone en un modelo más detallado. [2] Otro beneficio sería agregar un nivel de integración, que separa el nivel de datos y proporciona una interfaz fácil de usar para acceder a los datos. [2] Por ejemplo, se accedería a los datos del cliente llamando a una función "list_clients()" en lugar de realizar una consulta SQL directamente contra la tabla del cliente en la base de datos. Esto permite reemplazar la base de datos subyacente sin realizar ningún cambio en los otros niveles. [2]
Hay quienes consideran que una aplicación web es una arquitectura de dos niveles. Puede ser un cliente "inteligente" que realiza todo el trabajo y consulta a un servidor "tonto", o un cliente "tonto" que depende de un servidor "inteligente". [2] El cliente se encargaría del nivel de presentación, el servidor tendría la base de datos (nivel de almacenamiento) y la lógica empresarial (nivel de aplicación) estaría en uno de ellos o en ambos. [2] Si bien esto aumenta la escalabilidad de las aplicaciones y separa la pantalla y la base de datos, aún no permite una verdadera especialización de las capas, por lo que la mayoría de las aplicaciones superarán este modelo. [2]
Las brechas de seguridad en este tipo de aplicaciones son una preocupación importante porque pueden afectar tanto a la información de la empresa como a los datos privados de los clientes. La protección de estos activos es una parte importante de cualquier aplicación web y hay algunas áreas operativas clave que deben incluirse en el proceso de desarrollo. [3] Esto incluye procesos de autenticación, autorización, manejo de activos, entrada, registro y auditoría. Incorporar seguridad a las aplicaciones desde el principio a veces es más eficaz y menos disruptivo a largo plazo.
La escritura de aplicaciones web se simplifica con el uso de marcos de aplicaciones web . Estos marcos facilitan el desarrollo rápido de aplicaciones al permitir que un equipo de desarrollo se concentre en las partes de su aplicación que son exclusivas de sus objetivos sin tener que resolver problemas de desarrollo comunes como la administración de usuarios. [4] Muchos de los marcos en uso son software de código abierto .
Además, existe potencial para el desarrollo de aplicaciones en sistemas operativos de Internet , aunque actualmente no hay muchas plataformas viables que se ajusten a este modelo. [ cita requerida ]
Una aplicación web es un programa informático que utiliza navegadores web y tecnología web para realizar tareas a través de Internet.