UNIDAD 3
Plataformas Web
Cliente/Servidor
Curso: Programación Web Full Stack (Nivel 1)
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Unidad 3: Plataformas Web Cliente/Servidor
• Introducción
• El cliente Web por excelencia: el Navegador
• Sevidores Web
• ¿Qué es un Framework?
• Frameworks del lado del Servidor
• Frameworks del lado del Cliente
• Conclusión
Resumen ejecutivo
En esta parte del curso nos vamos a concentrar en el estudio de las plataformas de desarrollo web basadas
en la arquitectura Cliente/Servidor, que es la arquitectura dominante para la Web en Internet. Primero
revisaremos conceptos fundamentales de la arquitectura Cliente/Servidor para luego pasar a los entornos
web. Analizaremos con cierto nivel de detalle al navegador web y al servidor web. También averiguaremos
qué son los Frameworks de desarrollo, enumerando los más actuales del mercado.
Introducción
La arquitectura Cliente/Servidor es ampliamente utilizada en el diseño de sistemas distribuidos.
Conceptualmente hablando, consta de dos componentes: el Cliente que es la entidad activa y el Servidor que
es una entidad pasiva. Entre el Cliente y el Servidor se establece una comunicación mediante el envío de
mensajes por medio de una red, conformando así un sistema distribuido.
Existen muchas implementaciones de este modelo, muchas de ellas previas y otras contemporáneas al
desarrollo de la Web. Como venimos diciendo, esta arquitectura requiere de dos programas fundamentales
(el Cliente y el Servidor). Estos programas estarán ubicados en distintas computadoras, dentro de una red.
Para sistemas Cliente/Servidor no basados en Internet, generalmente es necesario instalar el programa
cliente en cada computadora para cada usuaria o usuario. Esto demanda una complejidad en el
mantenimiento del sistema porque hay que instalar individualmente cada programa cliente y por cada
actualización del software se requiere
una reinstalación manual o semiautomática. También la instalación del cliente para utilizar un sistema
Cliente/Servidor significa un techo para la escalabilidad de este. Nos referimos a escalabilidad cuando
hablamos de la escala o tamaño de un sistema, en función de la cantidad de usuarias y usuarios. Si un sistema
funciona correctamente tanto para diez clientes como para cien, se lo considera escalable.
UNIDAD 3 2
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
El cliente Web por excelencia: el Navegador
Un navegador web es un programa informático que permite el acceso a la Web, interpretando distintos tipos
de archivos y datos provenientes de sitios web para que estos puedan ser visualizados por las y los usuarios.
Si bien, las actividades más comúnmente conocidas de los navegadores web es la interpretación de páginas
HTML, CSS y código Javascript, estos programas tienen una gran cantidad de capacidades como la
visualización de documentos en distintos formatos, impresión, comunicación, extensibilidad a través de
plugins, etc.
Siguiendo un poco con el tema de los sistemas Cliente/Servidor, cuando hablamos de aplicaciones web, el
programa cliente base es el navegador web. Esto significa una gran ventaja respecto a los anteriores sistemas,
pues por el simple hecho de tener instalado un navegador web en la computadora cliente, se tiene acceso
automáticamente a una cantidad ilimitada de sistemas web.
Historia de los navegadores web
1990 El primer navegador: WorldWideWeb
El primer navegador web fue creado en el CERN, en 1990 por el mismísimo Tim Berners-Lee;; el creador del
protocolo HTTP y la Web, al cual bautizó con el nombre de WorldWideWeb. Este primer navegador era
bastante sofisticado gráficamente pero sólo funcionaba en computadoras NexT y obviamente para la primera
y rudimentaria versión del protocolo HTTP.
1993 Mosaic
El primer navegador en estar disponible para la mayoría de los sistemas operativos de su época fue Mosaic,
creado por la NCSA (National Center for Supercomputing Applications;; Centro Nacional de Aplicaciones de
Supercomputación).
1994 Netscape Navigator
El gran salto a la popularidad lo dió el navegador Netscape Navigator, creado por Marc Andreesen, uno de
los autores de Mosaic. Este navegador fue el mejor en su época, en eficiencia y prestaciones, fue el primero
en incorporar la ejecución de scripts Javascript, de hecho este lenguaje fue inventado para correr en este
navegador. Netscape Navigator fue el primer navegador comercial.
UNIDAD 3 3
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
1995 Microsoft Internet Explorer
Por su parte, Microsoft llega de forma tardía al negocio de Internet. Lo hace de la mano de su controversial
Internet Explorer.
Este navegador, que fue conocido por estar plagado de fallas, por su lentitud y por no respetar los estándares
de internet, en su momento dominó el 95% del mercado gracias a la estrategia de Microsoft de incorporarlo
como parte de sus sistemas operativos Windows 95 y Windows NT. Esto derivó en la llamada “guerra de los
navegadores” teniendo como principal contendiente a Netscape Navigator. Netscape llevó a Microsoft a juicio
por prácticas monopólicas, y si bien la justicia le dió la razón a Netscape, fue demasiado tarde para la empresa
y predominó Microsoft en el mercado por unos cuantos años.
Hay que señalar que nunca es bueno apartarse de los estándares. Esta mala praxis de los fabricantes;; agregar
de funcionalidades especiales a sus productos, deriva en un infierno para los desarrolladores porque estos
deberán programar varias versiones de sus aplicaciones para que funcionen correctamente en todos los
navegadores.
2003 Apple Safari
En este año, Apple lanza su propio navegador caracterizado por ser más seguro y rápido en el ecosistema
Apple, además de ser el más adoptado por sus usuarias y usuarios.
2004 Mozilla Firefox
Este es el navegador que conocemos en la actualidad. Ampliamente adoptado por la comunidad de
desarrolladoras y desarrolladores, como también por la comunidad Linux, ya que en la actualidad este es el
navegador que viene por defecto en las distribuciones basadas en Ubuntu.
2008 Google Chrome
Fue en este año que Google desató una verdadera revolución en internet. Desde la creación de su motor V8,
la ejecución de programas Javascript tuvo un verdadero rendimiento y fue a partir de este evento que dicho
lenguaje fue tomado realmente en serio. El lenguaje siguió evolucionando a la par que el navegador y gracias
a ello surgieron entornos como [Link]: programación de sistemas backend basados en V8 y Javascript.
Google Chrome ocupa la mayor parte del mercado gracias a la incorporación su incorporación en dispositivos
móviles basados en Android, que es un sistema operativo desarrollado por Google.
2015 Microsoft Edge
Para quitarse el mal gusto que le dejara el viejo Internet Explorer, Microsoft desarrolla su nuevo navegador
desde cero: Microsoft Edge. Edge es un sistema mucho más eficiente que su antecesor Internet Explorer,
aporta novedades como la lectura de e-books y varias integraciones con el sistema operativo Windows.
UNIDAD 3 4
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Lamentablemente fue demasiado tarde para alcanzar a Chrome, quién seguía arrasando con todo.
Finalmente, Microsoft decidió dejar de mantener su propio motor del navegador y pasó a utilizar el motor
desarrollado por Google y liberado a la comunidad: Chromium. Podemos decir, entonces que hoy en día
Microsoft Edge es Chrome con una interfaz de usuario diferente.
Código móvil
En una aplicación web, el navegador se encarga de solicitar todo el código móvil al servidor y lo ejecuta en
su propio espacio de procesamiento y memoria. Se denomina código móvil a todo aquel programa o script
que un navegador puede solicitar a un servidor web, descargar, interpretar y ejecutar de forma automática.
Como ejemplos de código móvil podemos mencionar a las viejas applets de java y los objetos flash, a los
vigentes scripts o programas escritos en Javascript. Si queremos ir un poco más lejos, podemos nombrar al
código compilado que es ejecutado directamente por el del navegador.
El Navegador como plataforma para aplicaciones web
Para nuestra fortuna, hoy en día existen muchos navegadores pero pocas variantes de núcleos, en la
actualidad hay tres: el motor de Mozilla Firefox, el de Google Chrome y el de Apple Safari.
La vieja guerra de los navegadores, esa carrera que sacaba lo peor de cada fabricante tratando todo el tiempo
de captar la atención de las y los usuarios con nuevas funcionalidades que no respetaban los estándares de
internet, quedó en el pasado.
Si bien, hoy los fabricantes siguen pujando por obtener mayores cuotas del mercado, lo hacen de una manera
más profesional y todos los navegadores están certificados bajo los estándares de internet y la W3C (World
Wide Web Consortium).
Esta es una buena noticia para desarrolladoras y desarrolladores web, porque se garantiza el hecho de
desarrollar un código limpio y único con la certeza de que este va a funcionar correctamente en cualquier
navegador.
Por último, vale mencionar que los navegadores modernos son cada vez más seguros, estables y eficientes,
que brindan una excelente plataforma para la ejecución de aplicaciones web cada vez más sofisticadas.
Servidores Web
El servidor web es un proceso que corre de manera autónoma (no necesita la intervención de una persona
para funcionar) en un equipo conectado a la red. Su función es escuchar permanentemente en puerto lógico
de red las conexiones y solicitudes de los clientes.
UNIDAD 3 5
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Los servidores web deben implementar y entender el protocolo HTTP (entre otros) para poder responder
correctamente las peticiones de sus clientes. También tienen funciones para acceder a recursos almacenados
en su sistema de archivos. De esta manera, un servidor web puede “servir” archivos y recursos solicitados
por los clientes.
Como era de suponer (?), el primer servidor web fue inventado y desarrollado por el creador de la Web: el
buen Tim Berners-Lee, el mismo científico del CERN que también creó el protocolo HTTP y el navegador web.
A este primer servidor web su creador lo bautizó httpd: HTTP Daemon;; Demonio HTTP. Aclaremos que el
término demonio es muy utilizado en la jerga Unix para definir a los procesos que funcionan solos de manera
autónoma.
Contenido dinámico
En un primer momento, los servidores web se dedicaban a servir archivos estáticos por HTTP. Conforme fue
evolucionando la Web, se le incorporaron capacidades para generar contenido dinámico. Este contenido
dinámico varía según la solicitud del cliente y sus parámetros. Para generar este contenido, a menudo un
servidor web debía estar conectado y acceder a un servidor de bases de datos.
De esta forma nacen las páginas web dinámicas y con ellas las aplicaciones web.
Para realizar esta tarea de generar contenido dinámico, el servidor web requiere alguna forma de
procesamiento. Este procesamiento se lo brindan los lenguajes de programación del lado del servidor que
vimos en la clase anterior.
Estos lenguajes de programación, necesitan de un procesador o intérprete. Algunos servidores web
incorporan estos intérpretes como extensiones o plugins, para otros la interpretación y ejecución de scripts
forman parte de su estructura y funcionamiento principal.
Por ejemplo, el Apache web server incorpora como extensión al procesador del lenguaje PHP. Como
contrapartida, el servidor Apache Tomcat está especialmente diseñado para ejecutar programas escritos en
Java, denominados Java Servlets.
¿Dónde se encuentran los servidores web?
Un servidor web puede funcionar en el mismo equipo donde reside el cliente, este es el caso de las estaciones
de trabajo para la programación. Las y los desarrolladores solemos tener corriendo en nuestra PC un servidor
web para ir probando la aplicación que se está desarrollando.
También pueden residir en un equipo de la red local. Esta configuración es propia de algunas empresas
chicas, oficinas y comercios, que alojan localmente su sistema web y lo operan de forma privada, sin salida a
internet.
UNIDAD 3 6
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Pero en el ambiente donde realmente se lucen los servidores web es en internet, ellos nacieron para funcionar
en internet. Existen varios tipos de configuraciones para internet: puede ser que un servidor web esté instalado
en un servidor físico, puede estar virtualizado compartiendo el servidor físico con otros sistemas al mismo
tiempo, o bien puede ser alojado en un sistema cloud, más comúnmente conocido como “la nube”. Este último
tipo de configuración es un tema muy extenso, brindando infinidad de posibilidades, tales como la replicación,
virtualización, balanceo de carga, incremento de instancias del mismo servidor dependiendo de la demanda,
entre otras tantas alternativas.
Servidores web actuales
Hoy existe una diversidad de servidores web, dependiendo del ámbito de uso. Siguen vigentes servidores
clásicos como Apache o IIS (Internet Information Services), pero hace unos años surgió una nueva generación
de servidores altamente performantes, es el caso de Nginx. Veamos brevemente sus características.
Concurrencia
Antes de revisar en detalle las características de los principales servidores, debemos definir el concepto de
concurrencia. Este se refiere a la situación cuando varios procesos quieren acceder al mismo elemento, en el
mismo instante. Esta situación se da continuamente en los servidores: cada solicitud de un cliente es un
proceso que quiere acceder a un recurso del servidor y debe ser atendido con urgencia. Todos los servidores
están preparados para resolver el problema de la concurrencia.
Apache, un clásico
Durante décadas, Apache web server fue el servidor dominante en internet. Su funcionamiento interno está
basado en una arquitectura clásica de servidor, la cual está basada en procesos. Apache crea un nuevo
proceso para cada cliente que se conecta y lo atiende en paralelo, en un proceso aparte, al igual que al resto
de los clientes. La creación de un proceso consume muchos recursos del servidor.
También existe una alternativa a los procesos: la creación de múltiples hilos de ejecución dentro del mismo
proceso. Con este modelo se siguen atendiendo varios clientes en paralelo, pero la diferencia radica en que
los hilos de ejecución comparten el mismo espacio de procesamiento y memoria. Esto es una ventaja, frente
al enfoque de procesos, pero también acarrea la desventaja del cambio de contexto: un asunto propio de la
programación avanzada que requiere tiempo extra de computación para ser llevado a cabo.
De esta manera se resuelven los problemas de concurrencia en los servidores web clásicos, tales como
Apache, IIS, Tomcat, etc.
Otra desventaja del enfoque basado en procesos/hilos de ejecución es el bloqueo. El bloqueo de la ejecución
se da cuando un proceso o hilo de ejecución debe acceder a dispositivos de entrada y/o salida, durante ese
tiempo el proceso queda bloqueado. El bloqueo genera pérdidas de tiempo y problemas de escalabilidad,
imposibilitando la atención de una mayor cantidad de clientes concurrentes.
UNIDAD 3 7
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Nginx, la nueva generación
A causa de los problemas de concurrencia mencionados anteriormente, nace una nueva generación de
servidores basados en la gestión de eventos y resolución asincrónica de solicitudes de clientes.
El primer ejemplo de este modelo de servidor es Nginx, creado por Igor Sysoev en 2004. Si bien, tiene ya
muchos años de existencia, recién tomó notoriedad en la última década.
Este tipo de servidor elimina el modelo de procesos o el hecho de crear un hilo paralelo de ejecución por cada
cliente. En su lugar utiliza un pool de eventos que son despachados de manera asincrónica (a destiempo). Es
un modelo sencillo que logró demostrar una gran performance, alcanzando resolver miles de peticiones
concurrentes con éxito.
En la actualidad Nginx es el servidor web más utilizado en toda internet. Lo utilizan empresas como Facebook,
GitHub, Netflix o Wordpress, entre tantas otras.
Es interesante notar la arquitectura interna de pool de eventos y la eliminación de la programación multi hilo
(multi threading) también la adoptan [Link] y el motor V8 de Google Chrome.
¿Qué es un Framework?
Un Framework o Marco de trabajo es un conjunto de librerías y objetos organizados que simplifican las tareas
repetitivas en la programación. A menudo están programados en el mismo lenguaje que estamos utilizando y
funcionan sin necesidad de cambiar su código fuente. Por ejemplo, el acceso a una base de datos requiere
de operaciones básicas tales como lectura, edición, borrado y alta de registros. Estas operaciones son
repetitivas, es decir son siempre las mismas para distintos tipos de tablas de base de datos. En programas
muy grandes se puede llegar a generar una gran repetición de código;; muchas partes de código similar
multiplicadas por toda la aplicación. La repetición del código fuente es un asunto que siempre trataremos de
evitar en nuestros desarrollos.
Los frameworks de desarrollo aportan una forma organizada de programación, a veces requieren que
adaptemos nuestra forma de programar a sus estructuras. Pero aportan múltiples ventajas, como el ahorro
de trabajo al brindar múltiples operaciones listas para utilizar, también aportan cuestiones de seguridad. En
el ejemplo de los frameworks de acceso a bases de datos (en programación orientada a objetos se los
denomina ORM), estos aseguran los accesos a la base de datos filtrando inyecciones SQL entre otras
cuestiones de seguridad.
Inversión de control
Los Frameworks van más allá de lo que hacen las librerías, que son colecciones de funciones disponibles
para que las y los programadores utilicen dentro de su código, sin más.
UNIDAD 3 8
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Los Frameworks requieren un cambio de paradigma: la inversión de control. Nos referimos a control como la
secuencia en que se ejecutan las instrucciones de un programa. En un programa simple, imperativo, el órden
de ejecución es explícito, tal y como lo definió la o el programador. En la programación orientada a eventos,
nuestro código fuente va a reaccionar a ciertos eventos y estos serán quienes finalmente decidirán el órden
del control.
Cuando se programa bajo un Framework, existen eventos o anotaciones a las que adherimos y escribimos
nuestro código para que reaccione a esos eventos que disparará el framework. Se puede decir que el
Framework termina siendo usuario de nuestro código y no al revés.
Frameworks del lado del Servidor
Los frameworks del lado del servidor fueron los primeros en surgir. Gracias a la naturaleza flexible de los
lenguajes interpretados o de scripting, se pueden realizar muchas tareas de metaprogramación, es decir
programación sobre la programación.
Del lado servidor hay muchas tareas repetitivas que se pueden simplificar y evitar, como por ejemplo la lectura
e interpretación de los mensajes HTTP de entrada, sobre todo los mensajes POST que contienen
generalmente parámetros provenientes de formularios de datos. La escritura y envío de las respuestas es
otra tarea que los frameworks alivian a las y los desarrolladores.
Recordemos que internet es como una jungla o una ciudad muy peligrosa: habitada por una gran diversidad
de individuos, muchos de ellos “gente de mala fé”. Por eso nunca hay que confiar plenamente en un mensaje
que llega desde internet, antes de leerlo y procesarlo hay que sanearlo apropiadamente para quitarle códigos
maliciosos e inyecciones de scripts. Esta es otra de las grandes tareas repetitivas de las que se ocupan los
frameworks del lado servidor.
Modelo Vista Controlador
Los Frameworks web siguen ciertas estructuras o modelos arquitectónicos. El más conocido de ellos es el
modelo MVC: Model-View-Controller, Modelo-Vista-Controlador.
Este modelo MVC separa en capas de objetos las responsabilidades habituales de una aplicación de servidor.
Modelo
El Modelo representa a los objetos de negocio. En esta capa vamos a representar el modelo de entidades de
datos de nuestra aplicación web. Estos objetos se encargarán de acceder a la base de datos y garantizar su
propia persistencia, además de representar al modelo de negocio durante toda la ejecución de la aplicación.
Vista
UNIDAD 3 9
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Esta capa se encarga de generar lo que se va a mostrar al cliente, denominada vista. Generalmente aquí
radican los mecanismos, plantillas y demás, para la generación de páginas HTML dinámicas. La generación
de la vista será alimentada por los datos provistos por los objetos del Modelo.
Controlador
En la capa de Controlador se definen todos los puntos de entrada y salida de la aplicación, también llamados
endpoints.
Es habitual tener funciones dedicadas a atender las distintas rutas del servidor y mensajes HTTP, como por
ejemplo: GET /clientes/, PUT /clientes/id, etc.
Habrá un controlador por cada entidad que maneje la aplicación: un controlador para los Clientes, otro para
los Artículos, otro para los Proveedores, etc.
El controlador conoce la vista que tiene que responder a cada pedido del cliente.
Otras variantes
Además del modelo MVC existen otras variantes para realizar acciones distintas. Por ejemplo, es muy útil en
la actualidad diseñar una aplicación web que devuelva todas las respuestas en formatos de datos
estructurados tales como JSON o XML, en lugar de devolver una vista HTML ya cocinada para visualizar en
el cliente.
Este tipo de trabajo se ve en las APIs web y fundamentalmente en las APIs REST, que ya mencionaremos
en la próxima clase.
Frameworks actuales para el servidor
Vamos a enumerar algunos de los frameworks más conocidos y utilizados en la actualidad por la comunidad
de desarrollo web.
• [Link] para [Link], se puede programar en Javascript y TypeScript.
• Symfony, Doctrine, Laravel o Codeigniter para PHP.
• ASP .Net y ASP .Net Core para C#.
• Ruby on Rails para Ruby.
• Gin, Beego, Martini o Gorilla para Go Lang.
• Django, Flask o Pyramid para Python.
De ninguna manera pretendo que esta sea una lista exhaustiva, solo es un pantallazo para tener en cuenta
los nombres de algunos de los frameworks más populares hoy en la industria.
UNIDAD 3 10
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Frameworks del lado del Cliente
Páginas dinámicas
Durante la primera generación de aplicaciones web, la cosa era muy sencilla: todo se generaba en el servidor
y el cliente solo visualizaba y recogía datos. Esto significa que el navegador no tenía muchas
responsabilidades y todo el peso de la aplicación recaía sobre el servidor. Este tipo de aplicaciones no daban
una buena experiencia de usuario, como sí la daban los sistemas Cliente/Servidor basados en interfaces ricas
de usuario, pero que no corrían sobre un navegador ni sus mensajes iban sobre protocolos de internet.
El problema de este modelo de aplicación web es que por cada cambio o interacción que realiza la o el
usuario, se requiere una actualización completa de toda la página, yendo y viniendo constantemente a través
de la red.
Con las mejoras alcanzadas en las plataformas cliente, concretamente con la llegada de Google Chrome, su
motor V8 y los avances en el lenguaje Javascript, se pudo comenzar a realizar tareas más complejas en el
cliente. A partir de esto se empezó a equilibrar la balanza y las responsabilidades se repartieron entre el
navegador y el servidor.
SPA: Single Page Application
A raíz de que los navegadores permiten ahora la programación de aplicaciones complejas, surgieron las SPA:
Single Page Application o aplicación de una sola página. Este tipo de organización local de la interfaz de
usuario evita refrescar continuamente la página por cada minúsculo cambio. Ahora el navegador contiene la
interfaz de usuario completa, esto es el frontend. Mediante complejas funciones de Javascript el navegador
va presentando distintas secciones de la aplicación, sin necesidad de traerlas desde el servidor. Al servidor
solamente se lo invoca para obtener datos o realizar operaciones puntuales.
Este mecanismo ahorra ancho de banda, disminuye la latencia entre interacciones (se denomina latencia al
tiempo de espera entre una solicitud y su respuesta).
Como podemos imaginarnos, no es nada fácil programar un frontend con estas características,
completamente desde cero. Para esta tarea acuden a nuestro rescate los Frameworks del lado cliente.
De nuevo, si adaptamos la estructura de nuestra aplicación y nuestra forma de programar a los estándares
que marca cada Framework, podremos rápidamente ser beneficiarios de las ventajas que estos nos traen,
permitiéndonos desarrollar complejas interfaces de usuario basadas en componentes visuales modulares y
reutilizables.
UNIDAD 3 11
PROGRAMACIÓN WEB FULL STACK (NIVEL 1)
Frameworks o librerías de diseño gráfico
Además, este tipo de Framework siempre vienen acompañados con plantillas o librerías de diseño CSS, tales
como Bootstrap o Material. Estas librerías nos simplifican la vida brindándonos diseños gráficos profesionales
y responsivos (que se adaptan tanto a pantallas de PC como de celulares).
Frameworks actuales para el cliente
Mencionemos algunos de los frameworks web para cliente más conocidos en el mercado.
• Angular, mantenido por Google. Basado en TypeScript y Javascript.
• React, mantenido por Facebook (Meta). Por default usa ECMAScript (Javascript) pero se puede configurar
para programar en TypeScript.
• VueJS, creado por Evan You. Basado en Javascript.
• Electron. Este framework tiene la capacidad de mostrar aplicaciones web como si fueran aplicaciones de
escritorio.
Conclusión
Esta clase fue tan extensa como apasionante (por lo menos para mí). Pudimos ver el mapa de arquitectura
de aplicaciones web, tanto en la historia como para las aplicaciones actuales. Aprendimos lo indispensable
sobre servidores y navegadores web, sus evoluciones y características. Ahora conocemos sobre frameworks,
sus conceptos y aportes a la programación web.
En la próxima clase abordaremos el despliegue de aplicaciones web, middleware, API REST, Cloud
computing y mucho más!
Lo invitamos a resolver la actividad de autoevaluación correspondiente al módulo en el entorno
virtual. Luego, continuamos con el cuarto módulo del curso.
UNIDAD 3 12