You are on page 1of 5

Arquitectura software en capas

Tema 6: Arquitectura Web Multicapa

Capa Presentacin:
genera pantallas, crea cdigo formato.

(Dibujo de arquitectura de Ebay)

Capa Lgica negocio: objetos aplicacin que generan, manipulan y organizan infomacin. Capa Datos: almacenes de datos: ficheros o bbdd. 2

Arquitectura sistema en capas


Capa Cliente:
Cliente: genera pantallas: cdigo HTML. Servidor: crea cdigo HTML.

Arquitecturas Web Multicapa


Arquitectura 2 capas (Web + aplicacin):
Apache + TOMCAT.

Arquitecturas 3 capas(Web + aplicacin +datos):


Datos en ficheros (Bookstore). Datos en DDBB (BookStore con BBDD, LAMP).

Capa aplicacin:
Servidores que ejecutan aplicaciones: accede a datos, crea campos para HTML.

Arquitecturas 4 capas (Web + Servlets + Beans + datos):


J2EE (Ebay,.)

Capa Datos:
(Dibujo de architectura de Ebay)

Servidores que almacenan 3 datos y ficheros.

Apache vs. servidor Java (rep)


Incovenientes Apache Acceso a aplicaciones no eficiente (CGI) o no robusto (API) Ventajas Acceso a ficheros eficiente. protocolo seguro HTTPS eficiente.

2 capas: Apache + TOMCAT (I)


Capa Web: Capa Aplicacin: Sirve contenido esttico Sirve contenido dinmico Control de Acceso y HTTPS
Capa Aplicacin
Tomcat Servlet Java Virtual Machine Files Linux

Capa Web:
Apache Client host
Web Client: Iexplorer, FireFox

Aplicaciones JAVA. Servidor Lectura ficheros no eficiente. JAVA Aplicaciones multihilo Protocolo HTTPS e integradas en servidor-> bastante no eficiente. eficiente. 5

GET /index.html HTTP1.0


Servlet Interface Read(file)

Output MSPservlet.doGet() Output of Servlet GET /MSPservlet Conexin AJP

Content of index.html GET /MSPservlet

Output of Servlet

2 capas: Apache + TOMCAT (II)


Configuracin TOMCAT
fichero server.xml:
<Connector className= "org.apache.jk.server.JkCoyoteHandler" port="8009" minProcessors="5 maxProcessors="75 protocol=AJP/1.3> Aplicacin /Examples/
Context Aplic Tomcat JK

Capa de Datos, sin BBDD


Datos en ficheros y variables. Aplicacin lee ficheros a travs de SO.
Server host Client host Tomcat Servlet Java Virtual Machine Sistema Operativo
Web Client: Iexplorer, FireFox

Configuracin Apache Fichero httpd.conf:


LoadModule jk_module libexec/mod_jk.so AddModule mod_jk.c JkWorkersFile .conf/workers.properties JkMount /examples/* worker1

Fichero Workers.properties:
worker.worker1.type=ajp13 worker.worker1.host=host2.unavarra.es worker.worker1.port=8009

Worker1

Java Virtual Machine

GET /MSPservlet Capa Web MSPservlet.doGet() FileOutputStream(file); Read(); Output of Servlet


7

Aplicacin /Appli2
Context Aplic

host2.unavarra.es

AJP
Tomcat JK Worker2 Apache

Java Virtual Machine host1.unavarra.es

AJP

mod_jk.so Linux www.unavarra.es

Output of Servlet
8

Aplicacin Web en Java: ejemplo http://localhost:8080/bookstore/catalog

Objetos acceso Datos, sin BBDD


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> &nbsp;" + "<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 10

Capa de Datos, con BBDD


Datos en BBDD. Aplicacin hace queries a travs de librera (JDBC, DAO,..)
Server host MySQL daemon Servlet + JDBC client Tomcat Client host Iexplorer,
FireFox Web Client:

Objetos acceso Datos, con BBDD


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> &nbsp;" + "<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();

Ejemplo BookStore Avanzado

Java Virtual Machine Sistema Operativo

GET /MSPservlet MSPservlet.doGet() JDBCConnection(); rs=executeQuery(); Output of Servlet Output of Servlet


11

CLASE ACCESO DATOS CON MISMO INTERFACE, Implementacin usa JDBC. Datos en BBDD.

} 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 + aplicacin + Datos.
DDBB host MySQL daemon Server host Servlet + JDBC client Tomcat Client host Iexplorer,
FireFox Web Client:

Servidores de Datos: BBDD (II)


BBDD compartida por varias aplicaciones y/o servidores de aplicacin.
Server1 host Servlet1 + JDBC client DDBB host MySQL daemon Tomcat

Java Virtual Machine Sistema Operativo Sistema Operativo

Java Virtual Machine Sistema Operativo

Client hosts

GET /MSPservlet MSPservlet.doGet() JDBCConnection(); rs=executeQuery(); Output of Servlet Output of Servlet


Sistema Operativo Servlet2 + JDBC client Server2 host Tomcat

Java Virtual Machine Sistema Operativo


13 14

Plataforma LAMP.
Linux + Apache + Perl + MySQL:
Mod_perl (API) or perl.exe (CGI). MySQL library or client.
Server host MySQL daemon Client host Script Apache MySQL + Interpret

RMI en Aplicaciones Servidor


Servlets: genera pagina web + cliente RMI. Servidor RMI: guarda objetos.
Server2 Server1 ServletComprar + RMI Client Tomcat Client host

Object Libreria1 Servidor RMI

Internet
Java Virtual Machine

Web Client: Iexplorer, FireFox

GET /ServletComprar(libro1)
Linux

GET /Wikka.php?HomePage /Wikka.php?HomePage


SQL.connect(); rs=executeQuery();

ServletComprar.doPost(libro1) libreria1.comprar(libro1) Results Output of Servlet Output of Servlet


16

Output of Wikka.php

Output of Wikka.php

15

Arquitectura de 4 capas (I)


Datos + Lgica Negocio + Web Dinmico+ Web Esttico
DDBB host MySQL daemon Server3 host RMI Object RMI Server Server2 host Servlet + RMI Client Tomcat Apache Files Server1 host

Arquitectura de 4 capas (II)


Lgica Negocio, Web dinmica distribuida en servidores independiente.
DDBB1 host MySQL daemon Server5 host RMI Object1 RMI Server Server3 host Servlet1 + RMI Client Tomcat Files Apache Server1 host

Java Virtual Machine Sistema Operativo Linux Sistema Operativo

Java Virtual Machine Sistema Operativo Linux

Java Virtual Machine Sistema Operativo Sistema Operativo

Java Virtual Machine Sistema Operativo

GET /index.html InvocarMetodo() JDBCConnection(); rs=executeQuery(); MSPservlet.doGet()


Read(file) Content DDBB2 host MySQL daemon Server6 host RMI Server RMI Object2 Java Virtual Machine Server4 host Servlet2 + RMI Client Tomcat Files Apache

GET /MSPservlet

Server2 host

RMI
Output of Metodo Output of Servlet Output
17

Java Virtual Machine Sistema Operativo Linux


18

Sistema Operativo

Sistema Operativo

Arquitectura J2EE en 4 capas


J2EE: Web + Servlets + Beans + Datos Los beans pueden ser persistentes en BBDD.
Servidor DDBB MySQL daemon Bean Java Virtual Machine Sistema Operativo Sistema Operativo Servidor Beans J2EE container Servidor Servlets Servlet + RMI client Tomcat Apache Files Linux

EJB: Entreprise Java Beans


EJB son un componente del J2EE de Sun (una arquitectura de desarrollo muy usada) EJB son objetos remotos:
Tienen un interface. Internamente se invocan por RMI.

Java Virtual Machine Sistema Operativo

GET /index.html Bean1.metodo1() JDBCConnection(); rs=executeQuery(); MSPservlet.doGet()


Read(file) Content

GET /MSPservlet

EJB son componentes que se instalan en contenedores de beans:


Contenedor J2EE: SunAppserver, JBoss, Se instalan, despliegan, etc como servlets.
20

Output of Bean Output of Servlet Output


19

You might also like