Tema 6: Arquitectura Web Multicapa

Anuncio
Arquitectura software en capas
Tema 6:
Arquitectura Web
Multicapa
genera
pantallas,
crea código formato.
1
(Dibujo de arquitectura de Ebay)
Arquitectura sistema en capas
Capa Cliente:
Cliente:
genera pantallas:
código HTML.
Servidor: crea código HTML.
Capa aplicación:
Servidores
que ejecutan
aplicaciones: accede a datos,
crea campos para HTML.
Capa Lógica negocio:
objetos aplicación que
generan, manipulan y
organizan infomación.
Capa Datos: almacenes de
datos: ficheros o bbdd. 2
Arquitecturas Web Multicapa
Capa Presentación:
Arquitectura 2 capas (Web + aplicación):
Apache
+ TOMCAT.
Arquitecturas 3 capas(Web + aplicación +datos):
Datos
en ficheros (Bookstore).
Datos en DDBB (BookStore con BBDD, LAMP).
Arquitecturas 4 capas (Web + Servlets + Beans
+ datos):
J2EE
(Ebay,….)
Capa Datos:
Servidores
(Dibujo de architectura de Ebay)
que almacenan
3
datos y ficheros.
4
Apache vs. servidor Java (rep)
Apache
Incovenientes
Ventajas
Acceso
Acceso
a
aplicaciones no
eficiente (CGI) o
no robusto (API)
2 capas: Apache + TOMCAT (I)
Capa Web:
Capa Aplicación:
•Sirve contenido estático
•Sirve contenido dinámico •Control de Acceso y HTTPS
a ficheros
Capa Aplicación
eficiente.
protocolo seguro
HTTPS eficiente.
<Connector className=
"org.apache.jk.server.JkCoyoteHandler"
port="8009" minProcessors="5“
maxProcessors="75” protocol=”AJP/1.3”>
Context
Aplic
Tomcat
JK
Worker1
Web Client:
Iexplorer,
FireFox
Linux
GET /index.html HTTP1.0
Read(file)
Servlet Interface
Output
MSPservlet.doGet()
Content of index.html
GET /MSPservlet
GET /MSPservlet
Conexión AJP
Output of Servlet
Output of Servlet
6
Capa de Datos, sin BBDD
Configuración Apache
Fichero httpd.conf:
LoadModule jk_module libexec/mod_jk.so
AddModule mod_jk.c
JkWorkersFile .conf/workers.properties
JkMount /examples/* worker1
Datos en ficheros y variables.
Aplicación lee ficheros a través de SO.
Server host
Client host
Tomcat
Fichero Workers.properties:
Aplicación /Examples/
Files
Java Virtual Machine
2 capas: Apache + TOMCAT (II)
fichero server.xml:
Client host
Apache
Servlet
Servidor Lectura ficheros Aplicaciones JAVA.
no eficiente.
JAVA
Aplicaciones multihilo
Protocolo HTTPS e integradas en
servidor-> bastante
no eficiente.
eficiente.
5
Configuración TOMCAT
Capa Web:
Tomcat
worker.worker1.type=ajp13
worker.worker1.host=host2.unavarra.es
worker.worker1.port=8009
Web Client:
Iexplorer,
FireFox
Servlet
Java Virtual Machine
Sistema Operativo
GET /MSPservlet
Java Virtual Machine
MSPservlet.doGet()
Capa Web
host2.unavarra.es
Aplicación /Appli2
AJP
Context
Aplic
Tomcat
JK
FileOutputStream(file);
Read();
Output of Servlet
Apache
Worker2
Java Virtual Machine
host1.unavarra.es
AJP
mod_jk.so
Output of Servlet
Linux
www.unavarra.es
7
8
Objetos acceso Datos, sin BBDD
Aplicación Web en Java: ejemplo
http://localhost:8080/bookstore/catalog
public class CatalogServlet extends HttpServlet {
private BookDB bookDB;
public void init() throws ServletException {
bookDB =
(BookDB)getServletContext().getAttribute("examples.bookstore.database");
Ejemplo
if (bookDB == null) {
BookStore
bookDB = BookDB.instance();
getServletContext().setAttribute("examples.bookstore.database", bookDB);
}
public void doGet (HttpServletRequest request,HttpServletResponse response)
{…..
out.println("<br>  " + "<h3>Please choose from our selections:</h3>" + "<center> <table>");
Collection c = bookDB.getBooks();
Iterator i = c.iterator();
public class BookDB {
while (i.hasNext()) {
private HashMap database;
BookDetails book = (BookDetails)i.next();
bookId = book.getBookId();
public BookDB () {
out.println("<tr>" + ….
BookDetails book;
}
database = new HashMap();
}
book = new BookDetails("201", "Duke", "", "My Early Years:
Growing up on *7",(float)10.75, 1995, "What a book.");
database.put(new Integer(201), book);
}
public Collection getBooks() {
ArrayList al = new ArrayList(database.values());
return Collections.sort(al);
}
9
Objetos acceso Datos, con BBDD
Capa de Datos, con BBDD
Datos en BBDD.
Aplicación hace queries a través de librería (JDBC, DAO,..)
Server host
MySQL
daemon
Web Client:
Servlet +
JDBC client
Client hostIexplorer,
Tomcat
FireFox
Java Virtual Machine
Sistema Operativo
GET /MSPservlet
MSPservlet.doGet()
JDBCConnection();
rs=executeQuery();
Output of Servlet
10
public class CatalogServlet extends HttpServlet {
private BookDB bookDB;
public void init() throws ServletException {
bookDB =
(BookDB)getServletContext().getAttribute("examples.bookstore.database");
if (bookDB == null) {
bookDB = BookDB.instance();
getServletContext().setAttribute("examples.bookstore.database", bookDB);
}
public void doGet (HttpServletRequest request,HttpServletResponse response)
{…..
out.println("<br>  " + "<h3>Please choose from our selections:</h3>" + "<center> <table>");
Collection c = bookDB.getBooks();
Iterator i = c.iterator();
while (i.hasNext()) {
BookDetails book = (BookDetails)i.next();
public class BookDB {
bookId = book.getBookId();
private EntityManager em;
out.println("<tr>" + ….
}
public BookDB () {
}
JDBCConnection();
CLASE ACCESO DATOS
CON MISMO INTERFACE,
Output of Servlet
Implementación usa JDBC.
11
Datos en BBDD.
Ejemplo
BookStore
Avanzado
}
public List getBooks() throws BooksNotFoundException {
try {
return rs=executeQuery("SELECT bd FROM Book bd
ORDER BY bd.bookId").getResultList();
}
12
Servidores de Datos: BBDD (I)
Arquitectura 3 capas: Web + aplicación + Datos.
Server host
DDBB host
MySQL
daemon
Servlet +
JDBC client
Servidores de Datos: BBDD (II)
Server1 host
Web Client:
Client hostIexplorer,
Tomcat
Servlet1 +
JDBC client
FireFox
DDBB host
Java Virtual Machine
Sistema Operativo
BBDD compartida por varias aplicaciones y/o
servidores de aplicación.
MySQL
daemon
Sistema Operativo
Tomcat
Java Virtual Machine
Client hosts
Sistema Operativo
GET /MSPservlet
MSPservlet.doGet()
Server2 host
Sistema Operativo
JDBCConnection();
rs=executeQuery();
Servlet2 +
JDBC client
Output of Servlet
Output of Servlet
Tomcat
Java Virtual Machine
Sistema Operativo
13
Plataforma LAMP.
14
RMI en Aplicaciones Servidor
Linux + Apache + Perl + MySQL:
Mod_perl
(API) or perl.exe (CGI).
MySQL library or client.
Servlets: genera pagina web + cliente RMI.
Servidor RMI: guarda objetos.
Server2
Server1
Server host
MySQL
daemon
Object
Libreria1
Client host
Script
Internet
Servidor RMI
Apache
Client host
ServletComprar
+ RMI Client
Tomcat
Web Client:
Iexplorer,
FireFox
Java Virtual Machine
MySQL + Interpret
GET /ServletComprar(libro1)
Linux
ServletComprar.doPost(libro1)
GET /Wikka.php?HomePage
/Wikka.php?HomePage
libreria1.comprar(libro1)
SQL.connect();
rs=executeQuery();
Output of Wikka.php
Results
Output of Servlet
Output of Wikka.php
15
Output of Servlet
16
Arquitectura de 4 capas (I)
Arquitectura de 4 capas (II)
Datos + Lógica Negocio + Web Dinámico+ Web Estático
Lógica Negocio, Web dinámica distribuida en
servidores independiente.
DDBB1 host
DDBB host
MySQL
daemon
Server3 host
RMI
Object
Server2 host
RMI Server
Servlet +
RMI Client
Java Virtual Machine
Sistema Operativo
MySQL
daemon
Server1 host
Tomcat
RMI
Object1
RMI Server
Server3 host
Servlet1 +
RMI Client
Files
Sistema Operativo
Server1 host
Tomcat
Files
Apache
Java Virtual Machine
Sistema Operativo
Server5 host
Apache
Java Virtual Machine
Java Virtual Machine
Sistema Operativo
Sistema Operativo
Linux
Server4 host
Server2 host
Linux
Sistema Operativo
GET /index.html
InvocarMetodo()
JDBCConnection();
rs=executeQuery();
MSPservlet.doGet()
Read(file) Content
DDBB2 host
GET
/MSPservlet
MySQL
daemon
RMI
Output of Metodo
Output of Servlet
Sistema Operativo
Server6 host
RMI Server
RMI
Object2
Servlet2 +
RMI Client
Tomcat
Java Virtual Machine
Java Virtual Machine
Sistema Operativo
Sistema Operativo
Files
Apache
Linux
Output
17
Arquitectura J2EE en 4 capas
EJB: Entreprise Java Beans
J2EE: Web + Servlets + Beans + Datos
Los beans pueden ser persistentes en BBDD.
Servidor DDBB
Servidor Beans
MySQL
daemon
J2EE container
Bean
Sistema Operativo
EJB son un componente del J2EE de Sun
(una arquitectura de desarrollo muy usada)
EJB son objetos remotos:
Servidor Servlets
Servlet +
RMI client
Tomcat
Java Virtual Machine
Sistema Operativo
Sistema Operativo
un interface.
Internamente se invocan por RMI.
Linux
GET /index.html
JDBCConnection();
rs=executeQuery();
Tienen
Apache
Files
Java Virtual Machine
Bean1.metodo1()
18
MSPservlet.doGet()
Read(file) Content
GET
/MSPservlet
Output of Bean
Output of Servlet
Output
19
EJB son componentes que se instalan en
contenedores de beans:
Contenedor
J2EE: SunAppserver, JBoss,…
Se instalan, despliegan, etc como servlets.
20
Descargar