Transparencias 07-08 - Departamento de Ingeniería Telemática

Anuncio
Capa
p de p
presentación
Panorámica de
t
tecnologías
l í
Mario Muñoz Organero
Departamento
p
de Ingeniería
g
Telemática
http://www.it.uc3m.es/mario
Distribución de la lógica en el
servidor
Capa de
presentación
((PL))
Capa de
lógica de
negocio
g
(BLL)
Capa de
datos
((DL))
Cliente
tier
Mario Muñoz Organero.
tier
tier
Servidores de información
2
Generación dinámica de páginas
Web
„
La página Web se basa en datos enviados por el usuario
…
„
La página Web se deriva de datos que cambian
frecuentemente
…
…
„
resultado de robots de búsqueda,
q
, confirmaciones de compra
p p
por
catálogo, etc.
Pronóstico del tiempo, noticias
El servidor puede decidir si envía un versión anterior ya
existente (timeouts) o si la genera de nuevo
La página Web presenta información de las bases de
datos de la empresa o accede a otros recursos del
servidor
…
Precio actual y disponibilidad de componentes de un catálogo
Mario Muñoz Organero.
Servidores de información
3
Tecnologías de capa de
p
presentación
„
Algunas de las más típicas
… Invocación
de aplicaciones externas por el servidor
Web y comunicación mediante interfaces definidos:
CGIs FastCGI
CGIs,
… Scripts interpretados por el Servidor Web (PHP, ASP,
JSP)
… Componentes ejecutados en el servidor Web:
Servlets
Mario Muñoz Organero.
Servidores de información
4
CGIs
„
„
„
„
CGI es un estandar que define un modelo de interación entre un
servidor Web y un programa externo.
Desarrollado por el National Center for Supercomputing
Applications (NCSA)
CGI fue el primer mecanismo para generar contenido dinámico
Basedo en el modelo de la shell de Unix
…
„
Los CGIs se encuentran normalmente en un determinado directorio
como:
…
„
Los parametros se pasan via stdin/stdout y variables de entorno de la
shell
/cgi-bin/
Se asocian a una URL que selecciona el programa a ejecutar
…
http://host/cgi-bin/programa
Mario Muñoz Organero.
Servidores de información
5
CGIs (I)
„
„
El servidor ejecuta externamente un programa binario, a
través del S.O.
SO
El programa binario debe seguir unas reglas específicas
(Common Gateway Interface) para comunicarse con el
servidor web:
…
Recibir la petición
… Devolver la respuesta
„
Los resultados del programa son devueltos por el
servidor web mediante http
Mario Muñoz Organero.
Servidores de información
6
CGIs (II)
http
navegador
Petición HTML
Respuesta
(Form, enlace)
MIME
I
Internet
http
Servidor
web
Cabecera +
Respuesta
Variables entorno
[+ Datos del form]
MIME
CGI
BD
Servidores de información
Mario Muñoz Organero.
7
CGIs (III)
„
„
„
„
Por ser una interfaz no existe dependencia con el
lenguaje de programación empleado.
Lenguajes usuales: C++, Visual Basic, Perl, Tcl
Un CGI puede devolver cualquier tipo de
i f
información:
ió texto
t t ASCII,
ASCII imagen
i
GIF código
GIF,
ódi HTML,
HTML
etc
La cabecera más importante es la que especifica el
contenido MIME:
Content-type:
yp tipo/subtipo
p
p
„
Entre las cabeceras y el contenido hay que dejar una
línea en blanco
Mario Muñoz Organero.
Servidores de información
8
CGIs (IV) – paso de parámetros
„
Cuando se invoca un GET, la cadena de petición se
pasa a través de la variable de entorno:
QUERY_STRING
…
„
Cuando la invocación es un POST, la petición se pasa a
(
)
través de la entrada estándar (stdin).
…
„
El programa CGI debe analizar la cadena.
El programa CGI debe leer de dicha entrada estandar y analizar
la petición
En ambos
E
b casos ell programa CGI responde
d por la
l salida
lid
estándar (stdout)
Mario Muñoz Organero.
Servidores de información
9
CGIs (V) – Un ejemplo sencillo
#!/bin/sh
echo “Content-type: text/html\n\n”
y p
echo “<html><body><p>”
echo “Your query string was: $QUERY_STRING”
echo “</p></body></html>”
</p></body></html>
Mario Muñoz Organero.
Servidores de información
10
CGIs (VI)
„
Inconvenientes CGIs:
… Dependen
D
d
de la
d
l máquina
á i
… Cada petición la ejecuta un programa cgi diferente difícil de mantener
… Cada llamada supone un proceso de S.O.
… Al no ejecutar
j
el p
proceso el servidor sino el sistema
operativo crea un problema de seguridad
„
Los FastCGIs dan mayor rendimiento
Mario Muñoz Organero.
Servidores de información
11
Ej – CGIs con Perl
„
„
„
Un script en Perl, al igual que en shell script es un conjunto de
instrucciones interpretas por un intérprete.
Se puede usar para implementar CGIs (se tiene un módulo especial
para ello).
Veamos primero un ejemplo de script en Perl sencillo:
#!/local/bin/perl
use strict;
my $count;
$count++ foreach(<STDIN>);
print "There were $count lines of input\n";
Mario Muñoz Organero.
Servidores de información
12
Ej – CGIs con Perl
#!/usr/bin/perl –w
# My Third Perl script.
# I call this script like :
# http:///www.redbrick.dcu.ie/~username/script.pl?name=something
use strict;
use CGI;
my $query = new CGI;
my $name = $query->param(‘name’);
print $query->header();
If ($name eq “”))
{
print “No Name Specified!\n”;
}
else
{
print “Hello, “ . $name . “!\n”;
}
Mario Muñoz Organero.
Servidores de información
13
Scripts de servidor
„
„
Se incluyen los scripts encapsulados en unas
etiquetas especiales, incrustadas en el código html,
cuyo contenido será ejecutado en el servidor antes
de enviar la página al cliente
Tecnologías más usadas:
… PHP (hypertext processor)
… ASP (Active Server Pages)
… JSP (Java Server Pages)
Mario Muñoz Organero.
Servidores de información
14
Scripts de servidor. PHP
„
„
„
„
„
„
Código abierto
Puede ejecutarse en plataforma Windows y Linux
Primera versión en 1994 por Rasmus Lerdorf
Se convierte en lenguaje de scripting para servidores Web en su
segunda versión en 1995.
Actualmente ((PHP 5)) con amplio
p
soporte
p
de p
programación
g
(variables, estructuras condicionales, bucles…) y con multitud de
librerías (accesos a bases de datos, servicios Web, manejo de
XML…)
El código PHP se inserta en una página HTML mediante la
etiqueta:
<? php
…
....
?>
Otra posiblidad: <script language="php">
Mario Muñoz Organero.
Servidores de información
15
Servidores de información
16
PHP – Primer ejemplo
<html>
<head>
<title>Example</title>
</head>
y
<body>
<?php
echo "Hi,
Hi, I'm
I m a PHP script!";
script! ;
?>
/body
</body>
</html>
Mario Muñoz Organero.
PHP – Otro ejemplo
<?php
$today
$
y_dayofweek
y
= date(“w”);
( );
if ($today_dayofweek == 4){
echo “Today is Thursday!”;
}
else{
echo “Today is not Thursday.”;
}
?>
Mario Muñoz Organero.
Servidores de información
17
PHP – Añadiendo código externo
<?php
// header
include(“header.php”);
?>
Insert content here!
?php
<?php
// footer
include(“footer.php”);
?
?>
Mario Muñoz Organero.
Servidores de información
18
PHP – Contador mediante
ficheros
<?php
$COUNTER_FILE = “webcounter.txt";
if (file_exists($COUNTER_FILE)) {
$fp = fopen("$COUNTER_FILE", "r+");
flock($fp,
( p 1);
) // Adquiere
q
un bloqueo
q
$hits = fgets($fp, 4096);
$hits += 1;
($ p, );
fseek($fp,0);
fputs($fp, $hits);
flock($fp, 3); // libera el bloqueo
fclose($fp);
}
?>
Mario Muñoz Organero.
Servidores de información
19
Scripts de servidor. ASP (I)
„
„
„
Tecnología de Microsoft
Ligada al servidor IIS y a la plataforma
Windows
Utiliza VBScript (subconjunto de Visual Basic)
como lenguajes por defecto. También puede
utilizar Javascript
<% ... %>
Mario Muñoz Organero.
Servidores de información
20
Scripts de servidor. ASP (II)
„
„
Pueden hacer uso de objetos COM
(Component
(Co
po e t Object Model)
ode ) que so
son objetos
en algún otro lenguaje (ej.: ejecutables en
C++ o Java))
Para conectarse a una base de datos,
normalmente se utiliza ADO que es un
adaptador universal a bases de datos que se
especializa posteriormente para hablar con
una base de datos concreta.
Mario Muñoz Organero.
Servidores de información
21
Servidores de información
22
ASP - Ejemplo
<HTML>
<BODY>
<% For i = 3 To 7 %>
<FONT SIZE=<% = i %>>
Hello World!<BR>
<% Next %>
</BODY>
/HTML
</HTML>
Mario Muñoz Organero.
ASP – Otro ejemplo
<html>
<body>
<%
dim i
f i=1
for
i 1 tto 6
response.write("<h" & i & ">Header " & i &
"</h"
</h & i & ">")
>)
next
%>
</body>
/b d
</html>
Mario Muñoz Organero.
Servidores de información
23
Scripts de servidor. JSP
„
„
„
„
Desarrollado por Sun
Utiliza Java
El código JSP se puede poner dentro de las
páginas
á i
HTML
HTML,
<% ... %>
Las páginas JSPs generan Servlets
Mario Muñoz Organero.
Servidores de información
24
JSP - Ejemplo
<HTML> <%@ page language="java" imports="java.util.*" %>
<H1>Welcome</H1> <P>Today is </P>
<jsp:useBean id="clock"
id "clock" class="jspCalendar"
class "jspCalendar" />
<UL> <LI>Day: <%= clock.getDayOfMonth() %>
<LI>Year: <%= clock.getYear() %> </UL>
% Check for AM or PM --%>
%
<%-<%! int time = Calendar.getInstance().get(Calendar.AM_PM); %>
<% if (time == Calendar.AM) { %>
Good Morning
<% }
else {
%> Good Afternoon
%}
<%
%> <%@ include file="copyright.html" %> </HTML>
Mario Muñoz Organero.
Servidores de información
25
Servlets (I)
„
„
„
„
Componentes del servidor escritos en Java que se
pueden ejecutar en cualquier plataforma y en
cualquier servidor
Los servlets son a los servidores web como los
applets a los navegadores
Su rendimiento es tan alto como los programas con
FastCGI (reutilizan los procesos)
Para poder escribir Servlets es necesario:
…
…
Paquetes J2EE: Para poder compilar las clases y ejecutar
el servidor.
Un servidor web con contenedores web integrados o un
servidor de aplicaciones como el Tomcat (opensource)
Mario Muñoz Organero.
Servidores de información
26
Servlets (II)
http
navegador
I
Internet
Servidor
web
http
JVM
Petición HTML
Respuesta
(Form, enlace)
Html
S l t API
Servlet
Servlet
l
Java
Mario Muñoz Organero.
Servidores de información
27
Tareas de los servlets
„
1. Leer los datos enviados por el usuario
…
Típicamente enviados en un formulario en una página Web, pero pueden venir
también de un applet o de una aplicación cliente de HTTP
„
2. Recuperar información de usuario embebida en la petición HTTP
„
3. Generar resultados
…
…
„
Normalmente dentro de una página HTML
5. Poner los parámetros de respuesta HTTP adecuados
…
„
Cálculo directo de la respuesta, o llamando a otro servidor (posiblemente remoto
– accesos con RMI o con CORBA), o accediendo a una base de datos, etc.
4. Formatear los resultados dentro de un documento
…
„
Capacidades del navegador, cookies, nombre de la máquina del cliente, etc
Tipo de documento devuelto (HTML), cookies, parámetros de cache, etc
6 Devolver el documento al cliente
6.
…
En forma de documento textual (HTML), formato binario (GIF), comprimido
(gzip)…
Mario Muñoz Organero.
Servidores de información
28
Comparativa
Compañía
Lenguaje
pro.
Coste
PHP
Zend
Php
ASP
Microsoft
VBScript
Servlets
JAVA
JAVA
Barato:Puede funcionar
sobre Apache
Caro: Necesita
Microsoft-IIS
Barato:Puede
funcionar sobre
Apache
Más robusto y
portable
Otras
Rápidas, fáciles de
desarrollar y
aprender.
Mario Muñoz Organero.
Servidores de información
29
Servidores de información
30
Servidores Típicos
Mario Muñoz Organero.
Descargar