Transparencias Aplicaciones web

Anuncio
Aplicaciones Cliente - Servidor
Servidor
Cliente
SQL
Presentación +
Lógica aplicación
Almacenamiento
datos
Acceso remoto a información a través de red.
Un servidor - múltiples clientes.
Servidores esperan peticiones: protocolos de nivel de
aplicación petición-respuesta.
Servidores tiene colas de peticiones que atender.
Dimensionamiento es importante adecuadamente
(cuellos de botella: acceso a disco, conexión Inet).
Departament d’Arquitectura de Computadors - UPC
v.2003.02
1
Reparto Funcionalidad
Repartir procesamiento vs. transferir datos.
Ejecución en servidor = Control de aplicación, pero más potencia
requerida.
Thin Client – Fat Server: Aplicación ejecutada en servidor,
cliente solo visualiza pantallas. Ej: Mainframes, XWindows,
Application Server Providers.
Fat Client – Thin Server: Servidor solo proporciona informacion a
cliente, cliente procesa y visualiza. Ej:Servidor web, Servidor de
ficheros, servidor de software, servidor streaming.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
2
Arquitecturas
Una organización de aplicaciones en distintos módulos y cómo se
comunican entre sí.
Servidor
Cliente
Cliente
p
Servidor
Cliente
Servidor
Servidor
p1
Cliente
Cliente
Encadenado,
recursivo
Servidor
p1
p1
Servidor
Cliente
p2
p2
Cliente
Servidor
Servidor
Servidor
Servidor
Cliente
Servidor
Referencia, iterativo
Servidor
Cliente
Servidor
Multicast, difusión
Departament d’Arquitectura de Computadors - UPC
v.2003.02
3
Variantes
Descentralizado ~ Peer to Peer P2P
Dispositivos m viles
Cli/Ser
Cli/Ser
Cli/Ser
Cli/Ser
Cli/Ser
Agentes m viles
Clientes Thin
v.2003.02
Cliente
Servidor
+ Cliente
Departament d’Arquitectura de Computadors - UPC
4
Servidores Multiple Procesos
"
"
!
#
$
%
&
'
( '
)
v.2003.02
$
% %
*
+
'
*
+ !&
Servidores MultiThread
"
"
!
v.2003.02
+
( '
#
$ , %%
&)
$
% ( % /& 0
1& 2# &''
. % '
Arquitectura Multinivel Web
Presentación: presentación, control flujo.
Lógica Negocio: procedimientos aplicación.
Almacén Datos: datos aplicación.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
7
Separación presentación / lógica aplicación
JSP
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white"> <font size=4>
<% if (numguess.getSuccess()) { %>
Congratulations! You got it. And after just <%= numguess.getNumGuesses() %> tries.<p>
<% numguess.reset(); %> Care to <a href="numguess.jsp">try again</a>?
<% } else { %>
Good guess, but nope. Try <b> <%= numguess.getHint() %> </b>. You have made <%= numguess.getNumGuesses() %>
guesses.<p>
I'm thinking of a number between 1 and 100.<p>
<form method=get>
What's your guess? <input type=text name=guess> <input type=submit value="Submit">
</form>
<% } %>
</font> </body> </html>
v.2003.02
Departament d’Arquitectura de Computadors - UPC
8
3
Arquitectura Multinivel J2EE
Client Tier: HTML, Applets.
Web Tier: JSP & Servlets.
Business Logic: Java Beans.
Enterprise: BBDD.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
9
Almacenes Información
Sitio Web,
Bases de datos relacional,
Repositorios XML,
Directorio LDAP,
Buscadores Web,
Almacén Objectos.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
10
4
Almacén Sitio Web
Colección de documentos multimedia guardados en
ficheros.
Información sin estructurar relaccionados por enlaces.
Ventajas: Facilidad de creación.
Desventajas: falta control.
v.2003.02
v.2003.02
Departament d’Arquitectura de Computadors - UPC
11
Departament d’Arquitectura de Computadors - UPC
12
5
Base de datos relacional
Datos muy estructurados requiere integridad y
seguridad.(sin informacion presentación)
Relacción basados en Algebras: modelos EntidadRelacción.
Ratio escritura / lectura alto.
Requieren un complejo programa (un gestor de bases de
datos): mantiene consistencia, acceso concurrente, ...
Ventajas: Control total de información.
Desventajas: laborioso estudio previo y diseño.
Departament d’Arquitectura de Computadors - UPC
v.2003.02
13
Almacen XML
'7$
8 %
83' 7
97 %
8
'/%
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="role1"/>
<role rolename="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat“ roles="tomcat,role1"/>
</tomcat-users>
v.2003.02
Departament d’Arquitectura de Computadors - UPC
14
6
Repositorio XML
Datos estructurados sin información presentación.
Relacción basada estructuras definidas por usuario.
Ratio escritura / lectura bajo.
Gestor de repositorio a medida: mantiene consistencia, precarga pagina web, ...
Ventajas: sin BBDD, eficiente, control.
Desventajas: programación gestor.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
15
Directorios LDAP
Datos muy estructurados información usuarios.
Relacción según arbol de directorio OIT.
Ratio escritura / lectura bajo.
Gestores de directorio mantiene consistencia, acceso
concurrente, ...
Ventajas: estructura sencilla, gestores comerciales.
Desventajas:Solo para algunos datos.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
16
:
Almacen Buscadores Web
Datos muy estructurados: palabras, imágenes, URLs....
Relacción orden alfabético,..: gigantesca tabla hash:
palabra - URLs.
Ratio escritura / lectura bajo.
Gestor de buscador: encuentra nuevas páginas web,
mantiene consistencia, cache, ...
Ventajas: eficiente, gestor optimizado.
Desventajas:Uso especifico.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
17
Almacenes de Objetos
Todo es un objeto: datos, tablas, documentos.
Relacciones entre datos son objetos contenidos en /
apuntados por otros objetos.
Gestores de almacen con diferentes funcionalidades:
OODDBB (complejo gestor, integridad, etc), Objetos
serializados Java (gestor simple, ficheros).
Ventajas: Facilmente integrables en aplicaciones
programadas en lenguaje OO.
Desventajas: ineficiencia, no reinventar.
v.2003.02
Departament d’Arquitectura de Computadors - UPC
18
;
CGI / FastCGI
Servidor Web
Proceso principal
1 proceso/petición
Petición1 a CGI A
Proc
Proc hijo
hijode
deCGI
CGIAA
Petición1 a CGI B
Proc
Proc hijo
hijode
deCGI
CGIBB
Petición2 a CGI A
Proc
Proc hijo
hijode
deCGI
CGIAA
Servidor Web
Proceso principal
(Único)
(Único)Proc
Proc hijo
hijode
deCGI
CGIAA
Petición1 a CGI A
Petición1 a CGI B
FastCGI: 1 proceso/CGI
Petición2 a CGI A
(Único)
(Único)Proc
Proc hijo
hijode
deCGI
CGIBB
Departament d’Arquitectura de Computadors - UPC
v.2003.02
19
CGI:Ciclo de Vida
=
&
=
% &
=
$
=
=
v.2003.02
%
7
!&
&
%
'
Departament d’Arquitectura de Computadors - UPC
20
<
API
Servidor Web
Proceso principal
Petición1 extensión A
Extensión
ExtensiónAA
Extensiones: parte del proc servidor
Petición1 extensión B
Extensión
ExtensiónBB
Petición2 extensión A
Departament d’Arquitectura de Computadors - UPC
v.2003.02
21
API: Ciclo de Vida
'
%
(
.
'
!
' *
.
8
3'
4'
v.2003.02
>
$
!
!
9
!
'
'
'
Departament d’Arquitectura de Computadors - UPC
22
Servlet
Servidor Web
Proceso principal
Petición a Servlet A
JVM
Thread
ServletA
ServletA
Petición a Servlet B
Thread Servlet: 1 thread/petición
Petición a Servlet A
Thread
ServletB
ServletB
v.2003.02
Departament d’Arquitectura de Computadors - UPC
23
Servlet “Hello World”
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
v.2003.02
Departament d’Arquitectura de Computadors - UPC
24
Servlet:Ciclo de Vida
'
%
'!
2# &
+
$
3'
&
$
'
'
>
!
'
4'
!
v.2003.02
'
Departament d’Arquitectura de Computadors - UPC
25
Separación presentación / lógica aplicación
JSP
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white"> <font size=4>
<% if (numguess.getSuccess()) { %>
Congratulations! You got it. And after just <%= numguess.getNumGuesses() %> tries.<p>
<% numguess.reset(); %> Care to <a href="numguess.jsp">try again</a>?
<% } else { %>
Good guess, but nope. Try <b> <%= numguess.getHint() %> </b>. You have made <%= numguess.getNumGuesses() %>
guesses.<p>
I'm thinking of a number between 1 and 100.<p>
<form method=get>
What's your guess? <input type=text name=guess> <input type=submit value="Submit">
</form>
<% } %>
</font> </body> </html>
v.2003.02
Departament d’Arquitectura de Computadors - UPC
26
JSP:Ciclo de Vida
%
2# & -
&
$
'
$
'
3'
v.2003.02
'
>
!
!
%'
%'
Departament d’Arquitectura de Computadors - UPC
27
3
Descargar