0% encontró este documento útil (0 votos)
29 vistas12 páginas

Historia y Evolución de Navegadores Web

La unidad 3 se enfoca en las plataformas web basadas en la arquitectura cliente/servidor. Explica conceptos clave como navegadores web, servidores web y frameworks. Detalla la historia y características de navegadores populares como Chrome, Firefox y Safari. También define qué son los frameworks y menciona ejemplos tanto del lado del servidor como del cliente.

Cargado por

Soledad Gez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas12 páginas

Historia y Evolución de Navegadores Web

La unidad 3 se enfoca en las plataformas web basadas en la arquitectura cliente/servidor. Explica conceptos clave como navegadores web, servidores web y frameworks. Detalla la historia y características de navegadores populares como Chrome, Firefox y Safari. También define qué son los frameworks y menciona ejemplos tanto del lado del servidor como del cliente.

Cargado por

Soledad Gez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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  

También podría gustarte