Beruflich Dokumente
Kultur Dokumente
Desarrollo de
Aplicaciones Web
Contenidos
Internet
Protocolo TCP/IP
Aplicaciones: DNS, FTP, SMTP, etc.
Servidor Web
Arquitectura cliente/servidor
Pginas estticas/dinmicas
Servidor de Aplicaciones
Servicios
2007-2008
DASDI
Introduccin a Internet
Web = vasta coleccin de documentos
en Internet enlazados a travs de
hiperenlaces
2007-2008
DASDI
Evolucin de Internet
(60-80) Origen militar
Protocolos de comunicacin (TCP/IP)
Seguridad ante ataques (mltiples servidores)
(80 90) Implantacin acadmica
Protocolos de intercambio de informacin (FTP, SMTP, ...)
(90-95) World Wide Web
HTTP, HTML, etc.
Enorme biblioteca con material hipermedia
(95 00) Acceso comercial
Posibilidad de negocio Dinero!!
Boom comercial
(00-) Crisis de las punto com
Historias de fracasos Lecciones aprendidas
Nuevas posibilidades: Computacin ubicua, Web semntica,
etc.
2007-2008
DASDI
Internet
Router ISP local
Modem
ISP regional
servidores
Telefona mvil
Acceso
particular
Acceso corporativo
wireless
2007-2008
DASDI
Protocolo TCP/IP
Se encarga de llevar a cabo la conmutacin de
paquetes
2007-2008
DASDI
Cuatro capas
La familia de protocolos TCP/IP se divide en 4
capas:
Capa de red: de ms bajo nivel
Representa el medio fsico encargado de enviar en
ltima instancia los 0 y 1 que componen cada mensaje
Diversas tecnologas: Ethernet, ATM
DASDI
Arquitectura de TCP/IP
Capa de
Aplicacin
HTTP
Telnet
FTP
SMTP
Capa de
Transporte
TCP
Capa de
Internet
IP
Capa
de red
2007-2008
Ethernet
DASDI
Token
Ring
Frame
Relay
ATM
El protocolo TCP
trocea los datos
en paquetes
2. Los paquetes
viajan de router
a router segn
protocolo IP
router
router
router
router
Emisor
router
router
2007-2008
3. El protocolo TCP
ensambla los
paquetes para
obtener el
mensaje original
DASDI
Receptor
Direcciones IP
Cada ordenador conectado a Internet (=Host) debe
tener una direccin para poder recibir los paquetes
TCP
Puede ser:
Esttica
Fija, siempre la misma
Dinmica
Por ejemplo, cada vez que nos conectamos a Internet con un
mdem telefnico, nuestro proveedor de Internet (ISP,
Internet Service Provider) nos asigna una direccin temporal
2007-2008
DASDI
10
Capa de Aplicacin
Diversas protocolos de aplicacin
SMTP (correo electrnico)
FTP (intercambio ficheros)
IRC (Chat)
HTTP (hipertexto)
DNS (nombres dominio)
2007-2008
DASDI
11
Nombres de dominio
DNS (sistema de nombres de domino) permite
asociar nombres lgicos a direcciones IP
DNS es una base de datos distribuida
Ejemplo: www.euitio.uniovi.es 156.35.94.5
2007-2008
DASDI
12
Internet Web
Internet permite a cualquier ordenador del
mundo compartir datos con otro ordenador
remoto
Un programa cliente en un ordenador accede a un
programa servidor en otro ordenador remoto
DASDI
14
Tim Berners-Lee
2007-2008
DASDI
15
Peticin
Red
Servidor
Respuesta
Cliente
2007-2008
DASDI
16
Internet
enlace
www.euitio.uniovi.es
2007-2008
DASDI
17
2007-2008
DASDI
18
2007-2008
DASDI
19
HTTP
HTTP
Y el navegador se
encarga de interpretar
el cdigo HTML y
mostrar el resultado
2007-2008
DASDI
21
Funcionamiento de la Web
Un servidor Web es un ordenador en
Internet que sirve pginas Web y
contenido esttico en general a peticin
Para ello, debe tener un programa ejecutndose
que haga de servidor Web: Apache, IIS,
etctera
2007-2008
DASDI
22
HTTP
HTTP (HyperText Transform Protocol) es el
protocolo usado para transferir pginas Web
Es el modo en que un navegador se comunica con un
servidor Web (Apache, Internet Information
Server)
2007-2008
DASDI
23
Respuesta
<
HTTP/1.0 200 OK <
Date: Wed, 18 Sep 1996 20:18:59 GMT <
Server: Apache/1.0.0 <
Content-type: text/html <
Content-length: 1579 <
Last-modified: Mon, 22 Jul 1996 22:23:34 GMT <
<
HTML document
2007-2008
DASDI
24
Especificacin de HTTP
Tipos de peticiones
GET, HEAD, POST, PUT, DELETE,
2007-2008
OK
Bad Request
Unauthorized
Forbidden
Not Found
DASDI
25
Unicode
Representacin de caracteres
Representacin de Caracteres
ASCII: 7 bits (0 127)
(A)merican (S)tandard (C)ode for (I)nformation (I)nterchange
Extensiones de ASCII
ISO-8859-1 (iso-latin-1)
(8 bits) ASCII (0-127) + otros caracteres tpicos de Europa occidental
Familia ISO-8859-X = Otros alfabetos europeos
ISO-8859-15 (iso-latin-9) Igual que iso-8859-1 + smbolo de
2007-2008
DASDI
27
Unicode
ISO-10646 (31 bits) Define un repertorio universal de caracteres (UCS)
En continua revisin: ISO-10646-2:2001 contiene ms de 70.000
caracteres
UNICODE = Consorcio de empresas que define restricciones sobre la
implementacin de ISO-10646
Varias codificaciones (UTF = Unicode Transformation Format)
- UTF-8: Los primeros 127 cdigos se presentan igual (compatible con
ASCII)
El resto se codifican en longitud variable
Relativamente Eficiente
- UTF-16: Usa 16bits para los caracteres ms comunes, el resto con pares
de 16 bits
- UTF-32: Codificacin directa en 32 bits (desperdicio de espacio)
28
URIs
URIs
URI: Uniform Resource Identifier
2007-2008
DASDI
30
Sintaxis de un URL
protocolo://direccin[:puerto]/directorio/fichero
Ejemplos:
http://www.princast.es/
http://195.55.30.17/
http://www.cfacebal.com/
http://www.cfacebal.com/index.html
http://web.uniovi.es/Vicerrectorados/Extension/
http://localhost:8080/
http://petra.euitio.uniovi.es/
2007-2008
DASDI
31
Protocolo
Un protocolo define el modo en que se comunican
dos ordenadores para llevar a cabo alguna tarea
Protocolo del Web:
HTTP (HyperText Transfer Protocol)
Especifica cmo tiene lugar el dilogo entre el
navegador y el servidor para conseguir el fichero
especificado
No se ocupa del transporte en s: TCP
2007-2008
DASDI
32
Ejemplos de protocolos
file
ftp
http
Pginas Web
2007-2008
DASDI
33
2007-2008
DASDI
34
DASDI
35
Directorio
Hay que indicar la ruta hasta el fichero deseado
Como mnimo, debe ir la barra (/)
http://www.uniovi.es/
http://www.uniovi.es
/
DASDI
36
2007-2008
DASDI
37
2007-2008
DASDI
38
Puerto
Por omisin, una peticin HTTP se
dirige al puerto 80
Por eso casi nunca la especificamos
2007-2008
DASDI
39
Lenguaje HTML
HTML
Es el lenguaje de creacin de pginas Web
Al menos, de las pginas estticas
2007-2008
DASDI
41
HTML es un lenguaje
Como tal, tiene unas reglas que
deben ser cumplidas, esto es, una
sintaxis, una gramtica... igual que
el espaol o cualquier otro lenguaje
informtico
Es adems un lenguaje informtico,
para ser procesado por
ordenadores; pero no es un
lenguaje de programacin
2007-2008
DASDI
42
Por qu de marcado ?
Qu vemos de un vistazo en el siguiente texto?
Acme Computer Corp.
Acme Computer Corporation is a technology-based company that seeks to offer
its customers the latest in technological innovation. Our products are created
using the latest breakthroughs in computers and are designed by a team of topnotch experts.
We are based in Acmetown, USA, and have offices in most major cities around
the world. Our goal is to have a global approach to the future of computing.
Have a look at our product catalog for some examples of our innovative
approach.
2007-2008
DASDI
43
DASDI
44
Especificacin de HTML
La especificacin del lenguaje HTML y
de la mayora de tecnologas
relacionadas con el Web est
definida por el World Wide Web
Consortium (W3C)
www.w3c.org
2007-2008
DASDI
45
Ejemplo de HTML
Cabecera
Cuerpo
Lista
Enlaces
AlCapone.html
<html>
<head>
<title>Pizzeria Al Capone</title>
</head>
<body bgcolor="blue" text="yellow"
link="red" vlink="white">
Pgina visualizada
<h1>Pizzera Al Capone</h1>
<p>Lista de enlaces</p>
<ul>
<li><a href="Pizzas.html">
Tipos de Pizzas</a></li>
<li><a href="http://www.mafia.it">
Patrocinadores</a></li>
<li><a href="#Contacto">Contacto</a></li>
<ul>
<h2><a name="Contacto">Contacto</a></h2>
<p><font color="red">Direccin:</font>
Detalles de
C/ Gnova N 3, Oviedo, Espaa</p>
presentacin <p><font color="red">Telfono:</font>
985203040</p>
</body>
</html>
2007-2008
DASDI
46
2007-2008
DASDI
47
Elementos HTML
Un elemento contiene:
Una etiqueta inicial (nombre entre signos < y > ):
<etiqueta>
La etiqueta inicial puede contener atributos:
<etiqueta atributo=valor>
El elemento debe acabar con una etiqueta final con
el mismo nombre
El contenido del elemento es todo lo que hay entre la
etiqueta inicial y la final
El contenido pueden ser otros elementos
Elemento
Etiqueta de inicio
Contenido
Etiqueta final
DASDI
48
Elemento vaco
<img src=cara.gif width=100 height=80 />
2007-2008
DASDI
49
Cabecera HTML
En la cabecera se pueden incluir los elementos
<title> especifica el ttulo del documento
<meta> especifica meta-informacin. Dos modos:
Atributo name
<meta name=Author content=Jose Granda>
y descripciones
<meta name=Description content=Pginas de una pizzera...>
DASDI
50
Cabecera HTML
Otros elementos de la cabecera
<link> especifica relaciones entre documentos
Muchas opciones dependen del soporte ofrecido por el
visualizador
<link rel=INDEX href=indice.html>
<link rel=ALTERNATE media=PRINT
href=versionImpresa.ps>
Pueden especificarse hojas de estilo (se vern ms
adelante)
<link rel=stylesheet href=estilo.css>
<style> especifica estilo del documento (se ver ms adelante)
<style type=text/css>
body { background: blue; color: yellow }
</style>
2007-2008
DASDI
51
HTML: Texto
Niveles de encabezado (headings)
h1, h2, h3, h4, h5, h6
Prrafo p
Los saltos de lnea son gestionados por el visualizador
br inserta un salto de lnea
inserta un espacio pero impide un salto de lnea
Elementos de frases
em, strong, cite, dfn, code, samp, kbd, var, abbr, acronym,
blockquote, q
Texto preformateado pre
<pre>
void main() {
return (Hola);
}
</pre>
2007-2008
DASDI
52
HTML: Listas
Listas no ordenadas <ul> (unordered-lists)
Listas ordenadas <ol> (ordered-lists)
Items de listas <li> (list-item)
<ul>
<li>Primer valor</li>
<li>Segundo valor</li>
</ul>
<ol>
<li>Primer valor</li>
<li>Segundo valor</li>
</ol>
2007-2008
Primer valor
Segundo valor
1. Primer valor
2. Segundo valor
DASDI
53
<dl>
<dt>HTML</dt>
<dd>Hypertext Markup Language</dd>
<dt>XML</dt>
<dd>eXtensible Markup Language</dd>
</dl>
2007-2008
DASDI
HTML
Hypertext markup
Language
XML
eXtensible Markup
Language
54
HTML: Enlaces
<p>Lista de enlaces</p>
<ul>
<li><a href="Pizzas.html">Tipos de Pizzas</a></li>
<li><a href="http://www.mafia.it">Patrocinadores</a></li>
<li><a href="#Contacto">Contacto</a></li>
<ul>
Direccin relativa
Lista de enlaces
Tipos de pizzas
Patrocinadores
Contacto
Direccin absoluta
Direccin interna
pizzas.html
http://www.mafia.it
#contacto
DASDI
55
HTML: Imgenes
<img src=images/fotoPizza.gif
width=500 height=500 alt=Foto de una pizza>
2007-2008
DASDI
56
2007-2008
DASDI
57
HTML: Tablas
<table>
<caption>Pizzas disponibles</caption>
<tr><th>Nombre</th><th>Ingredientes</th><th>Precio</th></tr>
<tr><td>Barbacoa</td><td>Mozzarella, Bacon</td><td>8 €</td></tr>
<tr><td>Hawaiana</td><td>Tomate, Pia, Queso</td><td>7€</td></tr>
<tr><td>4 quesos</td><td>Tomate, Mezcla 4 quesos</td><td>7 €</td></tr>
</table>
Pizzas Disponibles
2007-2008
Nombre
Ingredientes
Precio
Barbacoa
Mozzarella, Bacon
Hawaiana
4 Quesos
DASDI
58
Compilador
de
java
MiApplet.class
...
<applet code=miApplet.class width=500 height=500 >
Aqu vena un applet que saludaba
</applet>
...
<object codetype=application/java
classid=MiApplet.class width=500 height=500>
Aqu vena un applet que saludaba
</object>
DASDI
59
2007-2008
DASDI
60
HTML: Marcos
<html>
<head>
<title>Ejemplo con marcos</title>
</head>
<frameset rows="10%,*">
<frame src="superior.html">
Se puede asignar un nombre
<frameset cols="40%,60%">
para hacer referencias
<frame src=Indice.html">
<frame name=Principal src="Pizzas.html">
<a href=Enlace.html target=Principal>Enlace</a>
</frameset>
<noframes>
informacin sin marcos
</noframes>
</frameset>
</html>
2007-2008
DASDI
61
HTML: Formularios
<form action="http://www.mafia.it/cgi-bin/nuevoSocio"
method="get">
Nombre: <input type="text" id="nombre"><br/>
Apellido <input type="text" id="apell"><br/>
email: <input type="text" id="email"><br/>
<select name="sexo">
<option selected value="H">Hombre</option>
<option value="M">Mujer</option>
</select>
<textarea name="Comentarios"
rows="5" cols="50">
<<Inserta aqu tus comentarios>>
</textarea>
<input type="submit"
value="Enva">
<input type="reset
value="Borra" >
</form>
2007-2008
DASDI
62
HTML: Scripts
La etiqueta <script> permite incluir guiones (scripts)
Son interpretados por navegador (JavaScript, VBScript, etc.)
<head>
<script type="text/javascript">
<!-if (document.images) {
coche1 = new Image(128,128);
coche2 = new Image(128,128);
coche1.src = "coche1.gif"; coche2.src = "coche2.gif";
}
function cambia(name, image) {
if (document.images) {document[name].src = eval(image+".src");
}}
// -->
</script>
Al avanzar el ratn
</head>
cambia la imagen
<body>
<img name="coche1 width="128" height="128
Computacin en cliente
onMouseOver=' cambia("coche1", "coche2")'
Depende de las posibilidades del visualizador
onMouseOut = cambia("coche1", "coche1")'>
src="coche1.gif />
2007-2008
DASDI
63
</body>
Servidor Web
Qu es un servidor Web?
Un programa que atiende las
peticiones HTTP llegadas a un
puerto determinado de la mquina
Tambin se denomina as, por extensin,
a la mquina que cuenta con uno de
tales programas
DASDI
65
Pginas estticas
Al principio, el Web estaba poblado nicamente por
pginas estticas
El servidor Web simplemente localizaba el documento
solicitado en el URL y se lo entregaba al cliente
2007-2008
DASDI
66
En el navegador
se vera
17/10/2005
2007-2008
<html><head></head>
<body>
<h1>17/10/2005</h1>
</body>
</html>
DASDI
67
Motor
PHP
En el navegador
se vera
18/10/2005
2007-2008
<html><head></head>
<body>
<?php
printf(<h1>%s</h1>,
date(d/m/Y));
?>
</body>
</html>
<html><head></head>
<body>
<h1>18/10/2005</h1>
</body>
</html>
DASDI
68
Modo de funcionamiento
El servidor Web detecta una peticin de una pgina
dinmica y se la pasa al programa necesario
Podra ser una extensin del servidor
O bien un programa completamente independiente
2007-2008
DASDI
69
CGI
CGI fue la primera tecnologa
que permiti crear pginas
dinmicas, que realizaban algn
tipo de procesamiento en el lado
del servidor.
DASDI
71
CGI: Esquema
/cgi-bin/buscar.cgi?texto=web standards
El usuario, por
ejemplo, rellena un
formulario y pulsa el
botn de enviar
2007-2008
DASDI
El servidor
Web invoca
al programa
CGI
pasndole los
parmetros
recibidos
Y ste devuelve
el resultado al
servidor por
medio de la
salida estndar 72
2007-2008
DASDI
73
Variables de entorno
La tabla siguiente muestra alguna de las
variables de entorno:
(Puede verse una lista completa en
http://hoohoo.ncsa.uiuc.edu/cgi/env.html)
Variable
Descripcin
SERVER_NAME
QUERY_STRING
DASDI
74
2007-2008
getenv("SERVER_NAME")
Perl
$ENV{'SERVER_NAME'}
DASDI
75
Ejemplo
El siguiente programa CGI en Perl
muestra el valor de todas las
variables de entorno:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
print "$key --> $ENV{$key}<br>";
}
2007-2008
DASDI
76
Mantenimiento de la sesin
2007-2008
DASDI
78
2007-2008
DASDI
79
DASDI
80
Detalles de implementacin
Segn la especificacin, un agente de
usuario (es decir, un navegador), debe
permitir al menos:
Un total de 300 cookies
Hasta 4 KB (4.096 bytes) por cookie
Al menos 20 cookies de un servidor dado
DASDI
81
Sintaxis
Cada cookie presenta la siguiente
sintaxis general:
nombre=valor; [expires=fecha; path=directorio;
domain=nombreDeDominio; secure]
82
path
El conjunto de directorios del servidor para los
que es vlida esta cookie (por omisin, ser el
raz /, es decir, todos)
2007-2008
DASDI
83
2007-2008
URL Rewriting
Consiste en incluir la informacin del
estado en el propio URL
//comprar.asp?paso=3&producto1=01992CX
&producto2=ZZ112230&producto3=HJ19X25
No es de recibo en aplicaciones
serias
Un cliente puede iniciar dos o ms
sesiones simultneas, pginas tediosas
de programar, slo se puede usar el
mtodo GET, etc.
2007-2008
DASDI
85
DASDI
86
DASDI
87
DASDI
88
Servidores de aplicaciones
Qu es un servidor de aplicaciones?
Es un programa que provee la infraestructura
necesaria para las aplicaciones Web
empresariales
Qu quiere decir esto?
Que los programadores van a poder dedicarse casi en
exclusiva a implementar la lgica del dominio, ya
que servicios de uso comn, como transacciones,
seguridad, persistencia, etc. ya son proporcionados
por el servidor Web
Se ha convertido en una pieza de software clave para
cualquier empresa dedicada al comercio electrnico
Es una capa intermedia (middleware
middleware) que se sita entre
el servidor Web y las aplicaciones y bases de datos
subyacentes
2007-2008
DASDI
90
Visin general
Aplicacin
cliente
Aplicacin
cliente
Aplicacin
cliente
Servidor de aplicaciones
(Transacciones, mensajera, servicios Web)
CORBA
J2EE
.NET
SGBD
2007-2008
DASDI
91
Motivacin
Comienzan a surgir cuando queda claro las
aplicaciones cliente/servidor no iban a ser
escalables a un gran nmero de usuarios
Debido a las caractersticas de los clientes pesados
DASDI
92
Misin
Los llamasen como los llamasen,
estaban diseados para gestionar
de forma centralizada el modo en
que los clientes deban conectarse a
la base de datos o a los servicios
con los que tenan que interoperar
2007-2008
DASDI
93
Servicios proporcionados
Clustering
Equilibrado de carga
Transacciones
Seguridad
Acceso a datos
Invocacin remota
Deploy
Theading
Pooling de recursos
Caching
2007-2008
DASDI
94
Servicios proporcionados
Gestin de la sesin
El servidor ha de conservar informacin entre peticiones del usuario a lo largo de la
duracin de una sesin
2007-2008
DASDI
96
2007-2008
DASDI
97
Equilibrado de carga
Los servidores de aplicaciones proporcionan mecanismos de equilibrado de carga
(aspecto clave para la escalabilidad)
DASDI
98
Acceso a datos
Los servidores de aplicaciones proveen facilidades para
administrar conexiones a bases de datos relacionales
Oracle, SQL Server, DB2
2007-2008
DASDI
99
Pooling de conexiones
Abrir una conexin a una base de datos
suele ser un proceso costoso
No es viable abrir una nueva conexin por cada
consulta a la base de datos
Penalizara enormemente el rendimiento de la
aplicacin
2007-2008
100
Gestin transaccional
Transaccin: secuencia de pasos que, o se ejecutan todos, o si no el sistema
queda en el estado original
101
Tecnologas actuales
Actualmente, las dos plataformas ms
comunes son J2EE y, ms
recientemente, ha surgido .NET
De hecho, hasta hace poco hablar de
servidores de aplicaciones era
prcticamente hablar de J2EE
(aunque no debemos hacer tal asociacin)
2007-2008
DASDI
102
Servidor J2EE
Contenedor Web
Navegador
Servlets
Contenedor
Aplicacin
Cliente
Aplicacin
Cliente
2007-2008
Pginas
JSP
Contenedor EJBs
EJB
DASDI
Base
Datos
EJB
103