Title: ARQUITECTURA TECNOL
1ARQUITECTURA TECNOLÓGICA DE APLICACIONES WEB
IN72J
- Ezequiel T. Muñoz K.
- etmunoz_at_gmail.com, etmunoz_at_yahoo.com
- Ingeniero Civil Industrial, MBE (i)?
- Departamento de Ingeniería Industrial
- Universidad de Chile
2Aplicaciones
3Contexto Arquitectura
Arquitectura Empresarial CODELCO
Arquitectura del Negocio
Arquitectura de Calidad y Seguridad
Arquitectura de Desarrollo e Integración
Estrategia del Negocio y Organización
Arquitectura de Procesos de Negocios
Arquitectura de Datos
Arquitectura de Aplicaciones
Arquitectura de Información
Arquitectura de Aplicaciones (Portafolio)?
Arquitectura de Operaciones
Arquitectura de Aplicaciones (Diseño)?
Arquitectura Técnica
Arquitectura de Infraestructura
Arquitectura de Operaciones
4Arquitectura Empresarial
Arquitectura del Negocio
Conductores del Negocio
Visión del Negocio
Misión Objetivos Impulsos Estratégicos
Visión Futuro Oportunidades
Maneja, Requiere
Arquitectura de Información
Guía el Desarrollo
Arquitectura de Aplicaciones
Se soporta con
Arquitectura de Infraestructura
5Zachman
6Arquitectura Empresarial
- Procesos que soportan el Negocio
- Funciones del Negocio
- Organización que desarrolla el Negocio
- Ubicaciones del Negocio
- Factores y Conductores del Negocio
- Componentes del Negocio
- Modelo de Información
- Conjuntos de Datos
- Repositorios
- Relación con Funciones del Negocio
- Relación con Aplicaciones
- Aplicaciones y sus Módulos
- Relación con Procesos del Negocio
- Relación entre Aplicaciones
- Tecnología Empleada
- Requerimientos de Interfaz
- Hardware
- Software
- Redes de Comunicaciones
- Telecomunicaciones
- Radiocomunicaciones
- Tecnología de Automatización
7La Estandarización
Estándares de Negocio
Estándares de Información
Estándares de Desarrollo e Integración
Estándares de Calidad y Seguridad
Estándares de Aplicaciones
Estándares de Infraestructura
La estandarización es un proceso que apunta al
manejo óptimo de los recursos TIC.
8Las Aplicaciones
9Tipos de componentes
- De cara a clasificar las diferentes
arquitecturas, es necesario distinguir los tipos
fundamentales de componentes que se dan en una
aplicación - De presentación
- Se encarga de la entrada de datos y de mostrar
los resultados - De negocio
- Realiza las funciones propias de la aplicación
- Normalmente es necesario cierto procesamiento de
datos - De acceso a datos
- Permite comunicarse con el sistema de
almacenamiento de datos (normalmente una base de
datos, aunque también podría ser un sistema
jerárquico de ficheros)
10Antecedentes
- Al principio, todo centralizado
- Mainframe
- Toda la lógica estaba en un único ordenador
central - El usuario se comunicaba con él a través de
terminales tontas - Compartimiento de archivos
- Las primeras redes de ordenadores personales (PC)
estaban basadas en arquitecturas de
compartimiento de ficheros - Había un servidor de ficheros y todo el trabajo
se realizaba en la máquina local - En los 90 cambia el modelo de computación, debido
al aumento del número de usuarios y al
advenimiento de las interfaces gráficas de
usuario (GUI)?
11Surgimiento de la arquitectura Cliente/Servidor
- Suele llevar asociada una base de datos (SGBD)?
- Hace falta algún mecanismo de comunicación
distribuida - Por ejemplo, Remote Procedure Calls (RPC)?
12Esquema de la arquitectura C/S
Aplicaciones clientes
Base de datos
13Arquitectura Cliente/Servidor
- También conocida como arquitectura en dos capas,
ya que consiste en dos partes que cooperan entre
sí - Los clientes se comunican directamente con el
servidor - Puede haber varios tipos
- Que los clientes se encarguen únicamente de
mostrar los resultados, y en el servidor se
ejecute toda la lógica del negocio, de acceso a
datos e incluso la mayor parte de la presentación - El otro extremo sería cuando casi toda la lógica
reside en el cliente, y el servidor sólo realiza
el acceso a los datos - P. ej., mediante el uso de applets de Java
14Características
- La base de datos compartida reside en un servidor
con el suficiente espacio en disco y capacidad de
procesamiento para soportar grandes volúmenes de
información y consultas - El término base de datos se usa aquí de modo
genérico (puede referirse a cualquier origen de
datos) - Balance
- ó FAT ?CLIENT
- Ó FAT SERVER
15Ventajas (dos capas)?
- La mayoría de las organizaciones necesitan un
control centralizado sobre los datos que asegure
su consistencia - Por el contrario, las aplicaciones que hacen uso
de estos datos suelen requerir mucho menos
control centralizado - La mayoría se limitan a presentar estos datos de
alguna forma - La arquitectura en dos capas se adapta bien a
estas necesidades
16Inconvenientes (dos capas)?
- La idea anterior de tener todos los datos
compartidos y todo el procesamiento local no deja
de ser una simplificación un tanto burda - Muchos de los aspectos de procesamiento de una
empresa están compartidos - Las bases de datos distan mucho de proporcionar
un lenguaje de programación completo - Los datos no están encapsulados, por lo que sigue
siendo necesario que el programador de las
aplicaciones realice bastantes tareas de control
de la integridad - Todo ello hace que este enfoque sea difícil de
mantener - No resulta fácil cambiar la estructura de una
base de datos de la que dependen un montón de
aplicaciones - Los procedimientos almacenados, aunque ayudan, no
son la solución (cuidado con la portabilidad)
17Complejidad Cliente/Servidor
18(No Transcript)
19(No Transcript)
20(No Transcript)
21(No Transcript)
22(No Transcript)
23(No Transcript)
24(No Transcript)
25(No Transcript)
26(No Transcript)
27(No Transcript)
28(No Transcript)
29(No Transcript)
30(No Transcript)
31Arquitectura de tres capas
- El esquema anterior ha ido evolucionando en el
tiempo y ha dado lugar a una arquitectura
mejorada de tres capas (aunque realmente algo
similar ya había sido propuesto a finales de los
70).
32Esquema de la arquitectura
Aplicaciones clientes
Dominio
Base de datos
Esquema externo
Esquema conceptual
Esquema interno
33Nueva capa Dominio
- Aparece una nueva capa la de Dominio
- Representa realmente a la empresa
- Debería obviar tanto la estructura de los datos
como su ubicación - Es su contribución más importante
- Permite describir las aplicaciones basándose
únicamente en el dominio a modelar - También posibilita cambiar la estructura física
de la base de datos y su ubicación sin afectar a
las aplicaciones existentes - La Tecnología de Objetos representa el mejor modo
de implementar (modelar) dicha capa
34Arquitecturas de n capas
- A la hora de la verdad (en el diseño detallado),
las arquitecturas en tres capas suelen separarse
aún más - Así, es posible diferenciar entre lógica de
presentación y de aplicación - De un lado, estrictamente la interfaz de usuario
- De otro, los servicios utilizados tanto por la
capa de presentación como por el dominio
35Despliegue
- Una arquitectura lógica de tres capas admite
varias implementaciones físicas - En el caso de las aplicaciones Web, normalmente
los clientes pesados del modelo tradicional
cliente/servidor se dividen en - Un cliente ligero
- Normalmente, un navegador Web encargado de
mostrar las páginas HTML que le envía el
servidor, y que sirve también para la entrada de
datos - La lógica de aplicación, que se traslada al
servidor
36Ventajas
- Reutilización
- La aplicación está formada por una serie de
módulos que se comunican a través de interfaces,
y que cooperan entre sí para dar lugar al
comportamiento deseado - Idealmente, se trataría de objetos independientes
que podrían ser empleados en otras aplicaciones - Facilidad de mantenimiento
- Eficiencia en el acceso a los datos y en el uso
de la red - Posibilita la especialización de los
desarrolladores
37Servidores 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 lógica del dominio,
ya que servicios de uso común, 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
electrónico - Es una capa intermedia (middleware) que se sitúa
entre el servidor Web y las aplicaciones y bases
de datos subyacentes
38Visión general
Aplicación cliente
Aplicación cliente
Aplicación cliente
SGBD
39Motivación
- Comienzan a surgir cuando queda claro que las
aplicaciones cliente/servidor no iban a ser
escalables a un gran número de usuarios - Debido a las características de los clientes
pesados - Se hacía necesario mover las reglas de negocio a
algún lugar intermedio entre los clientes y la
base de datos - Empezaron a surgir productos para hacer esa tarea
- Cada compañía los llamaba de una forma distinta
- Servidores de transacciones, servidores de
aplicaciones
40Servicios proporcionados
- Creación y gestión de los componentes del
servidor - Clustering
- Equilibrado de carga
- Transacciones
- Seguridad
- Acceso a datos
41Gestión de la sesión
El servidor ha de conservar información entre
peticiones del usuario a lo largo de la duración
de una sesión
- HTTP es un protocolo sin sesión
- No permite mantener una conexión abierta entre el
cliente y el servidor más allá de lo que dura la
transferencia del documento en cuestión - En cualquier aplicación de comercio electrónico,
es necesario poder identificar al usuario a
través de su navegación por el sitio Web - Autenticación, adición de productos al carrito de
la compra, etc.
42Gestión de la sesión
- La implementación a mano se complicaría
enormemente en el caso de contar con varios
servidores (equilibrado de carga)? - La petición de un usuario registrado en la
máquina A puede ser redirigida al servidor B - Lo lógico es que sea el servidor de aplicaciones
quien se encargue de gestionar la sesión - Además, debería ser más eficiente que si lo
programamos nosotros mismos
43Equilibrado de carga
Los servidores de aplicaciones proporcionan
mecanismos de equilibrado de carga (aspecto clave
para la escalabilidad)?
- Por equilibrado de carga (load balancing) se
entiende la capacidad de repartir el
procesamiento entre distintos servidores - Las peticiones de los clientes se redirigen a la
máquina que más desocupada se encuentre en ese
momento - Mejora de rendimiento de la aplicación
- No es tan sencillo como añadir una nueva máquina
y ya está - Además de la escalabilidad, se consigue una mayor
tolerancia a fallos
44Acceso a datos
- Los servidores de aplicaciones proveen
facilidades para administrar conexiones a bases
de datos relacionales - Oracle, SQL Server, DB2
- Los componentes (las clases que implementan la
lógica del negocio) acceden a ellas de forma
estándar - Independiente de la base de datos subyacente
- También suelen permitir acceder a otros tipos de
fuentes de datos - Tales como distintos ERP (SAP, Vaan...),
repositorios XML, etc. - Los servidores de aplicaciones son también
importantes, por tanto, como mecanismo de
integración de sistemas heredados
45Pooling de conexiones
- Abrir una conexión a una base de datos suele ser
un proceso costoso - No es viable abrir una nueva conexión por cada
consulta a la base de datos - Penalizaría enormemente el rendimiento de la
aplicación - Los servidores de aplicaciones suelen contar con
una serie de conexiones permanentemente abiertas
que distribuye de forma transparente a los
distintos procesos - Se debería poder configurar el número de
conexiones abiertas, e incluso la política de
asignación
46Gestión transaccional
Transacción secuencia de pasos que, o se
ejecutan todos, o si no el sistema queda en el
estado original
- Son un elemento básico de cualquier aplicación
comercial - Evitan que haya información inconsistente
- Sería complejísimo implementarlas a mano
- Con un servidor de aplicaciones que tenga esta
característica, bastaría con indicarle dónde
empieza y termina la transacción - Encargándose él de deshacer los pasos intermedios
en caso de un error del sistema
47Tecnologías actuales
- Actualmente, las dos plataformas más comunes que
implementan los servidores de aplicaciones son
J2EE y, más recientemente, ha surgido .NET - De hecho, hasta hace poco hablar de servidores de
aplicaciones era prácticamente hablar de J2EE - (aunque no debemos hacer tal asociación)?
48Algunas Definiciones
49Definiciones
- El modelo de red muestra las principales
componentes del sistema, donde están ubicadas y
como se conectan unas con otras. - La especificación de hardware y software
describen estas componentes en detalle y apoya la
compra y adquisición de productos para la
implementación.
50Que es un Servidor?
- Es un programa cuyo input son peticiones
recibidas por la red, y cuyo output es enviado
por la red al cliente que envió la petición. - Usualmente se le asocia a la máquina física, pero
una máquina por si sola no hace nada... - Las peticiones/respuestas estan formalizadas por
el llamado Protocolo de transmisión. El lenguage
de la transmisión y los pasos que se deben
cumplir para enviar/recibir los datos.
51Exclamación TípicaSe cayó el servidor!
- Un servidor no es una aplicación simple. En su
estructura interna es muy similar a un Sistema
Operativo. Ya conocen cuanto tiempo ha costado
que los SO se estabilizen. - Entre los mas estables el servidor web apache
(http//www.apache.org), la base de datos oracle
(http//www.oracle.com). - Razones Típicas
- Muchos clientes conectados.
- Falta de memoria.
- Errores del programa.
- Problemas de concurrencia.
52Arquitecturas Clásicas
- Si concideramos separar la lógica del
procesamiento de los datos según - Almacenamiento de Datos (archivos y prog que
accede)? - Lógica de Acceso a los Datos (extraer los datos)?
- Lógica de la Aplicación (negocio)?
- Lógica de Presentación (interfaces)?
- Podemos tener una variedad de arquitecturas según
como distribuyamos los procesos anteriores en
CAPAS.
53Esquema de mainframe
- Se trata de un computador que posee toda la
lógica del negocio y los datos centralizados. - Se accede a través de un terminal tonto (no
procesa)? - Este esquema quedó obsoleto, pero hoy en día ha
vuelto a la vida con la introducción de los
Network Computer
54Una Capa Modelo Mainframe
- Una capa es la encapsulación de lógica y de
procesamiento. En este caso - Centraliza el procesamiento en un servidor
llamado Host, con el que varios usuarios
interactuaban a través de dispositivos como
terminales, lectoras de tarjetas e impresoras. - En el Host se almacenan los datos y se realiza
todo el procesamiento recibir el requerimiento
del usuario, actualizar y rescatar información de
las bases de datos, realizar el procesamiento
necesario, entregar una respuesta al usuario y
realizar la gestión de los recursos compartidos.
55Una Capa Modelo Mainframe
- Ventajas
- Punto de control centralizado.
- Actualizar cambios en la lógica del negocio es
fácil (es 1 solo lugar). - Desventajas
- Sobrecarga del servidor (mas cpu por tareas)?
- Upgrade del servidor es caro
- Se requiere mas disco duro (Programas Data)?
- Más Riesgoso ante una Falla (todos los huevos en
una misma canasta).
56Dos Capas Arquitectura basada en el cliente.
57Dos Capas Arquitectura basada en el cliente.
- Todas las lógicas en el cliente, el servidor se
dedica a almacenar los datos en archivos. - Típicamente muchos pcs con un programa (Visual
Basic) que accede a un servidor de archivos común
en la empresa.
58Dos Capas Arquitectura basada en el cliente.
- Ventajas
- Los clientes son más baratos
- Software
- barato de desarrollar que MF (db-server
simplifica). - fácil de usar.
- Desventajas
- Sobrecarga de la red por flujos de datos.
- Costosos de mantener en el tiempo si son muchos
clientes (el www podria funcionar asi?). - Acceso a la BD también se puede sobrecargar.
59Dos Capas Arquitectura Cliente Servidor
(Tradicional).
L.presentacion L.Aplicación
Almacenamiento L.Accesos Datos L.Aplicación
60Dos capas Cliente servidor tradicional
- Se distribuye la carga de procesamiento entre la
máquina cliente y el servidor. - En la máquina cliente se ejecuta una aplicación
que se encarga de validar y procesar el
requerimiento del usuario antes de ser enviado al
servidor. - El servidor procesa dicho requerimiento, realiza
las actualizaciones necesarias y devuelve los
resultados al cliente. Los resultados son
recibidos por la aplicación cliente y presentados
al usuario.
61Dos capas Desventajas del Cliente/Servidor (1)?
- Distribución y Actualización de Aplicaciones
- Se deben instalar porciones importantes de código
en el Cliente - Problemas con el S.O
- Manejo de Versiones (upgrade)?
- Las actualizaciones generalmente requieren
desinstalar y reinstalar el programa
62Dos capas Desventajas del Cliente/Servidor (2)?
- Capacitación de Usuarios
- Distintas interfaces para las aplicaciones,
incluso para versiones del mismo programa
(dependiente del proveedor)? - Dificultar de estructura las aplicaciones en una
aplicación central
63Dos capas Desventajas del Cliente/Servidor (3)?
- Evolución de las Aplicaciones
- Cambios en las aplicaciones se deben replicar en
cada cliente - Esto incluye errores y evolución normal de los
programas
64Dos capas Desventajas del Cliente/Servidor (4)?
- Distribución de Carga del Sistema
- No existe posibilidad de diferenciar los clientes
según capacidad de proceso o ancho de banda - Programación en el Cliente incompatible
completamente con la del Servidor (lenguajes,
sistemas operativos, etc.)?
65Dos capas Desventajas del Cliente/Servidor (5)?
- Disponibilidad de las Aplicaciones
- Se deben instalar las aplicaciones en los
clientes para acceder a los servicios - Usuarios remotos
- Usuarios temporales
- No se puede definir con facilidad niveles de
acceso a las aplicaciones
66Arquitectura de Tres Capas
- Pretende dar solución a los problemas enunciados
anteriormente - Divide la aplicación en tres tipos de servicios
- Visualización, Lógica y Datos
67Capa de Presentación
- Involucra toda la interacción con el usuario.
Especifica operaciones como repintar una ventana,
capturar el clic del Mouse y realizar
validaciones mínimas. El modelo no permite la
interacción del usuario con otras capas. - Esta capa no conoce sobre la tecnología de
almacenamiento de datos y tiene un conjunto
definido de interfaces que la habilitan para
comunicarse con la capa Lógica del Negocio y
generar transacciones de negocio.
68Capa de Aplicación (Negocio)?
- Es la capa media entre el usuario y el
almacenamiento físico de datos, donde se efectúa
la mayoría del procesamiento. Esta capa no conoce
los detalles específicos de la capa servicio de
datos ni el tipo de Presentación. Sólo puede
procesar datos, no almacenarlos ni presentarlos. - Es en esta capa donde se resuelve toda la lógica
del negocio asociada a las transacciones (reglas
que definen las actividades que son factibles de
realizar sobre los datos), y se realiza una
conexión eficiente a la Base de Datos.
69Capa de Datos
- Esta capa se encarga de cualquier persistencia
física requerida por la aplicación. Aquí van los
mecanismos de servicios de datos específicos. - Aquí se definen los motores de bases de datos o
manejadores de archivo que se usarán.
70Ventajas
- Pueden convivir distintos tipos de aplicaciones
en la capa cliente aplicación Java, aplicación
CORBA y clientes delgados HTML. - Aporta flexibilidad en la capa base de datos
porque permite el acceso a variados servicios de
datos distintos motores de bases de datos, con
distintas tecnologías (relacionales u orientados
a objetos), en distintos servidores. - Además de la posibilidad de utilizar al mismo
tiempo más de un tipo de motor de base de datos.
71Ventajas (2)?
- Utilizando la programación multitareas es posible
aumentar la cantidad de conexiones a los
servidores de bases de datos. - Es posible compartir y reutilizar el código de
los servicios de la capa intermedia. Por ejemplo
un mismo servidor intermedio puede atender a
diversas aplicaciones cliente. - Se pueden destinar los servidores de más memoria
y capacidad de cálculo para el manejo de la capa
de la aplicación, y destinar los que poseen mayor
capacidad de manipulación de discos para la
administración de la base de datos.
72Ventajas (3)?
- La carga de trabajo puede ser distribuida en
varias aplicaciones o servidores de aplicación. - Es posible diseñar las aplicaciones trabajando
inicialmente con un único servidor, para luego
desdoblarla en sus capas intermedias cuando el
crecimiento de los requerimientos del
procesamiento así lo exijan. - Ante un incremento en las exigencias del sistema,
es posible incorporar en la capa intermedia,
máquinas de similares o diferentes
características, logrando mayor eficiencia en la
atención de requerimientos, gracias al
procesamiento paralelo.
73Tres capas (1)?
- Lógica
- Visualización presentación de información y
recopilación de datos - Lógica todos los algoritmos y procesos que
componen el sistema - Datos la información que maneja el sistema
74Tres capas (2)?
- Físicamente se puede estructurar esta
arquitectura según el tipo de aplicación y las
necesidades del sistema - Los parámetros principales para el análisis
- Capacidad de Proceso
- Ancho de Banda
75Tres capas (3)?
- Capacidad de Proceso
- Si no se tiene una estimación clara de la
capacidad de proceso de los clientes, se asume la
mínima capacidad (P.ej Internet)? - Si se tiene una noción más precisa de la
capacidad de los clientes, se considera
incorporar un mayor nivel de lógica (P.ej
Intranet)?
76Tres capas (4)?
- Ancho de Banda
- Si se tiene un ancho de banda reducido se trata
de transmitir la menor cantidad de información.
Se privilegia el HTML - Si se tiene un ancho de banda más controlado, se
considera el envío de cantidad de información
mayores, incluyendo aplicaciones, al cliente
77Tres capas (5)?
- Se consideran dos escenarios típicos
- Internet baja capacidad de proceso, ancho de
banda reducido - Intranet, Extranet capacidad de proceso más
controlada, mejor ancho de banda
78Tres capas (6)?
- Internet
- Visualización principalmente HTML y algo de
programación en el Cliente para validación o
datos o cálculo centrales - Lógica se encuentra completamente en el servidor
o parte de ella en la base de datos (Store
Procedures)? - Datos se encuentra en el mismo servidor que la
lógica de la aplicación o en un servidor aparte
79Tres capas (7)?
- Intranet
- Visualización páginas HTML con Applets de Java
- Lógica se contiene parte de la lógica del
sistema en - Datos se encuentra en el mismo servidor o en un
servidor aparte
80Tres capas (8)?
- Ventajas
- Las aplicaciones siempre se encuentran en el
servidor - Los cambios se realizan una vez en forma
centralizada y se distribuyen automáticamente - Se puede controlar mejor el desempeño del sistema
y mejorarlo si es necesario. Se pueden agregar
clusters de servidores para soportar la carga
81Tres capas (9)?
- Ventajas (cont)?
- El sistema puede estar integramente construído en
Java - Visualización Applets y Servlets (próximo
capítulo)? - Lógica Servlets y Java Beans
- Datos Store Procedures en Java
82La solución para sitios Web muy transaccionales.
- Asumamos que la Internet es lenta.
- Si agregamos lentitud en la respuesta a la
solicitud del usuario, el resultado es que,
después de un tiempo, nadie visite nuestro
website. - En comercio electrónico, lo anterior es crítico.
- El problema no se resuelve aumentando la
capacidad del servidor de datos. - Actualmente, la mayoría de los servidores de
datos son sistemas administradores de bases de
datos relacionales ( Oracle, Informix, Sybase)?
83La solución para (2)?
- La operación tradicional de un Motor de datos en
C/S, indica que por cada conexión a la base, se
crea un proceso que atiende la solicitud. - La creación del proceso tiene su costo en tiempo
y CPU. - Si hay muchas conexiones, no hay Motor que lo
soporte. - Un requerimiento Web, tiene la característica de
ser muy rápido y específico. - Los CGI tradicionales, levantan un proceso de
comunicación y luego lo bajan, producto del tipo
de transacción.
84La solución para (3)?
- La solución sería mantener un grupo de procesos
que atienden a los usuarios Web y que mantienen
la comunicación constante con el motor de datos. - Lo anterior define una arquitectura de tres
capas. - Pero quién administra los procesos de la capa
media? - Surge la idea de una solución transaccional para
la capa media, la que depende de cuántas
solicitudes recibirá el sitio
85La solución para (4)
86Consideraciones de diseño
- Los sitios Web muy transaccionales, deben
considerar capas medias complejas, incluso
servidores de balanceo - En general, oriente el desarrollo a tres capas
aunque físicamente sólo sean dos, en un futuro no
lejano, puede necesitar la tercera capa. - Pese a toda la publicidad sobre motores de bases
de datos, está claro que su mejor trabajo es
administrar datos y no el Web. - Oriente la capa media al uso de monitores
transaccionales
87Una capa lógica no es una capa física
88Múltiples capas
- Extendiendo la lógica en que se basa esta
arquitectura, es posible dotar al modelo de
tantas capas como sean convenientes de acuerdo a
las soluciones requeridas, dando origen a
aplicaciones multi-capas. - La esencia del modelo de desarrollo de
múltiples-capas, es dividir un sistema en partes
lógicas bien definidas, que pueden ser diseñadas
y construidas separadamente y ser expandidas
flexiblemente a través de múltiples máquinas.
89Múltiples capas (2)?
- La idea es separar las diferentes partes del
sistema, minimizar la interdependencia entre
ellas y diseñarlas con un alto grado de cohesión
en su funcionalidad interna. - Una capa particular no puede ver más que la
interfaz pública expuesta de su capa adyacente.
De este modo, los cambios en una capa tienen un
impacto mínimo sobre las otras, facilitando la
expansión y mejoras en el tiempo.
90Nuevas Arquitecturas
- Middleware (muchas-muchas capas)?
- Peer to peer (gnutella, napster)?
- Seti_at_Home
- Mobile Agents (programas que migran)?
91Middleware
- Es el software que conecta aplicaciones.
- Cual es la motivación? E-business tienen nuevas
necesidades que no están soportadas
explícitamente en las arquitecturas clásicas. - Requieren interconectarse para tener en línea
informaciones como rastrear productos
(amazon/DHL), disponibilidad de productos de
terceros, estatus de cuentas bancarias. - Requieren de efectuar transacciones con terceros
servicios de webpay, visa, amazon. - Abarca una gran variedad de tecnologías
específicas.
92Middleware para amazon
Conexión con DHL y TRANSBANK
93Tipos de Middleware
- Orientados a mensajes componentes que
implementan un protocolo de comunicación con
diferentes servicios en internet. - Orientados a RPC (Remote Procedure Call)
Implementan la posibilidad de ejecutar
procedimientos en servicios remotos (Ejemplo
abortar transacción). - Orientados al acceso de datos típicamente
parecidos a ODBC. - Orientados a las transacciones distribuidas
Implementan un protocolo para ejecutar
operaciones distribuidas en la red (inicio, fin y
rollback).
94Seti_at_Home
- Proyecto de búsqueda de vida inteligente en el
universo. - Reciben teras de datos de los radio telescopios
que deben analizarse. - Los computadores disponibles no alcanzan para
efectuar todo el procesamiento necesario. - El proyecto consiste en distribuir el
procesamiento por la red mundial.
95Seti_at_Home
96Seti_at_Home
- Se requiere procesar para cada punto del cielo
las señales recibidas por el radio telescopio
arecibo puerto rico. - Se distribuye el procesamiento en cada pc
cliente-seti. Que procesa y envía el resultado a
un repositorio centralizado. - Nos enseña lo poderosa que puede llegar a ser la
red en cuanto a capacidad de proceso. Hay muchos
computadores ociosos en el mundo cuya unión puede
representar a un supercomputador cuya capacidad
sobrepasa a las maquinas modernas. (GRID
computing)?
97Paradigma peer to peer (p2p)?
- Gnutella
- Intercambia archivos entre personas conectadas a
la red. - Cada nodo actúa como cliente y servidor a la vez.
Son los llamados servents (serverclients). - Existen servidores que almacenan a los usuarios
conectados. Estos entregan direcciones de quienes
se encuentran online - Como cliente envía requerimientos de búsquedas y
solicita archivos. - Como servidor responde peticiones.
98Paradigma peer to peer (p2p)?
- Protocolo Gnutella
- Mensajes de pertenencia al grupo Se efectúan
broadcast para detectar nodos vecinos y mejorar
continuamente la conectividad. - Búsquedas se envían búsquedas que son propagadas
a través de los nodos para la búsqueda de
archivos (numero máximo de up). - Transferencia FTP el protocolo de transmisión
ftp.
99Paradigma peer to peer (p2p)?
- Resultados en promedio la red se auto ajusta
transparentando la comunicación.
100Paradigma peer to peer (p2p)?
- Importancia ...
- Problemas con las arquitecturas centralizadas
- Ínter conectividad inter-empresa.
- P2p entrega un canal de comunicación colaborativo
que puede ser usado para integrar sistemas. - Se trasparenta la red, los archivos no se
encuentran en 1 solo lugar sino en múltiples
lugares, en realidad se encuentran en la GRID. - Futuro los servent no solo podrían usar ftp sino
también rpc, tns, el servidor es la red.
101Agentes Móviles
- Perspectiva del usuario final un software que
presta algún tipo de asistencia y que se comporta
de forma autónoma. - Perspectiva del sistema objeto de software
reactivo, autónomo, de ejecución continua, que se
propaga por la red.
102Agentes Móviles
- Paradigma de agentes moviles vs cliente servidor
103Agentes Móviles
- Paradigma de agentes móviles vs cliente servidor
104Agentes Móviles
- Reduce la carga de la red
- Sobrelleva cortes temporales en la red.
- Encapsula protocolos.
- Se ejecuta de manera asincrónica y autónoma.
- Adapta dinámicamente
- Se mueve en medios heterogéneos
- Tolerante a fallas
- Aplicaciones en Auditoria, configuración de
sistemas, computación independiente de la maquina
es decir en la red (GRID).
105Herramientas de Desarrollo
106 Qué es Java ?
- Java es
- Lenguaje de Programación Orientado a Objetos
- Independiente de la Plataforma
- Multithreaded
- Robusto
- Sintaxis Similar a C
- Compilador Estricto
107Por qué se habla tanto de Java?
- Java en el Browser
- Permitió el Desarrollo de Aplicaciones Genéricas
para el Web - Posee una interfaz Gráfica Independiente de la
Plataforma - Posee un modelo de Seguridad acorde al escenario
de Internet
108Por qué se habla tanto de Java?
- Java en el Servidor
- Permite cambiar una aplicación Java de plataforma
sin cambios en el código - Permite un acceso a Base de Datos independiente
del DBMS - Permite una ejecución eficiente de procesos en el
servidor
109Tipos de Aplicaciones JavaJava en el Cliente
Applets
- Funcionamiento
- El Código se Descarga del Sitio Web
- Se ejecuta en la máquina Cliente
- Independiente de la Plataforma
- Independiente del Browser
- Se ejecuta en un entorno de Seguridad Robusto
(Sandbox)? - Sólo se permite una comunicación de Red con el
Servidor de Origen - Aplicaciones Típicas
- Formularios con Lógica Compleja
- Gráficos
- Acceso a Base de Datos
- etc...
110Tipos de Aplicaciones JavaJava en el Cliente
Applets
- Aspectos Destacables
- Se Pueden Programar Aplicaciones Completas que se
Ejecuten en el Browser - Se Puede Incoporar Interacción Directa con la
Base de Datos - Se Pueden Programar Aplicaciones con una Poderosa
Interfaz Gráfica - La aplicación reside en el servidor
- Si se modifica el código automáticamente los
cambios se transmiten a los clientes - Se puede modificar el esquema de seguridad según
las necesidades
111Tipos de Aplicaciones JavaJava en el Servidor
Servlets
- Funcionamiento
- Se instalan los programas en un Servidor Web que
Soporte este tipo de Aplicación - Se conectan los clientes en la URL del Servlet
- Eejecuta distintos métodos según el tipo de
requerimiento (GET, POST, PUT, etc.)? - Devuelve una página HTML normal.
- Aplicaciones Típicas
- Interacción con Base de Datos
- Aplicaciones Transaccionales
- etc.
112Tipos de Aplicaciones JavaJava en el Servidor
Servlets
- Aspectos Destacables
- El Servlet permite manejar en forma separada cada
tipo de Petición - Tiene un manejo muy eficiente de los threads
- Permite manejo de Sesiones
- Genera Páginas HTML legibles por cualquier
Browser - Permite el desarrollo de aplicaciones utilizando
Java, visibles desde cualquier Browser - Cualquier modificación del código se actualiza
automáticamente - Permite el desarrollo de aplicaciones realmente
escalables
113Reseña Histórica
- Las versiones de Java se denominan por el Java
Developer Kit (JDK), de Sun - JDK 1.0.2 soportado por Browsers 3.0
- JDK 1.1 soportado por Browser 4.0
- JDK 1.2 aún sólo para algunos entornos de
Servidor - El cambio de JDK 1.0.2 a JDK 1.1 fue bastante
considerable - El cambio de JDK 1.1 a JDK 1.2 tiene relación
principalmente con los servicios adicionales
114CGI-BIN
- El Web habla HTML. Qué pasa si deseamos
hacerlo interactuar con datos que están en otro
formato? - Surge la idea de hacer un conversor, algo así
como un formateador de datos. - El formateador puede ser un programa escrito en
algún lenguaje. - Por el funcionamiento del Web Server, el lenguaje
debe soportar I/O estándar.
115CGI-BIN (2)?
- CGI (Common Gateway Interface)?
- El CGI especifica como se pasan los datos desde
el servicio WWW a una aplicación externa y como
se recuperan los resultados. Como todo en el WWW,
la interfaz CGI es simple pero muy potente.
116CGI-BIN (3)?
117CGI-BIN (4)?
- Formulario en HTLM
- Los formularios electrónicos sirven para recibir
datos desde el usuario y almacenarlos en algún
dispositivo. - Un formulario tiene la siguiente estructura
- ltform actionltSCRIPTgt methodltPostGetgt
targetltFrame de destinogtgt - ltELEMENTOSgt
- .......
- ltinput typesubmit valueEnviargt
- ltinput typereset valueBorrargt
- lt/formgt
118CGI-BIN (5)?
- Ejemplo de un CGI-BIN
- El CGI-BIN se puede escribir en cualquier
lenguaje que soporte STDIN y STDOUT - typedef struct
- char name128
- char val128
- entry
- int m,x
- cl getenv("QUERY_STRING")
- for(x0cl0 ! '\0'x)
- mx
- getword(entriesx.val,cl,'')
- plustospace(entriesx.val)
- unescape_url(entriesx.val)
- getword(entriesx.name,entriesx.val,''
) -
119CGI BIN El Método GET
- El cliente WWW solicita un servicio de una
aplicación CGI. - El servidor HTTPD recibe la solicitud y los datos
de entrada. - El servidor crea un ambiente y variables con los
datos de entrada. - El servidor ejecuta la ampliación CGI en este
ambiente. - El CGI procesa las variables de ambiente y
recupera los datos de entrada. - La aplicación CGI se ejecuta produciendo
unresultado sobre su salida estándar. - El servidor HTTP redirecciona la salida estándar
de la aplicación CGI hacia el cliente WWW. - El cliente WWW recibe el resultado de su
consulta.
120CGI BIN El Método POST
- El cliente WWW solicita un servicio de una
aplicación CGI. - El servidor HTTPD recibe la solicitud y los datos
de entrada. - El servidor ejecuta la ampliación CGI pasándole
la información a través de la entrada estándar. - La aplicación CGI procesa su entrada estándar y
recupera los datos de entrada. - La aplicación CGI se ejecuta produciendo un
resultado sobre su salida estándar. - EL servidor HTTP redirecciona la salida estándar
de la aplicación CGI hacia el cliente WWW. - El cliente WWW recibe el resultado de su
consulta.
121Lenguajes de programación de CGI
- El web server llama a un CGI creador de una
página web. Luego toma el código de la página y
lo envía al browser que lo solicitó. - Desde un punto de vista funcional, la transacción
anterior fue un intercambio de archivos entre dos
procesos. - El intercambio clásico de archivos entre procesos
es a través de la I/O estándar. - Entonces, los lenguajes de programación de CGI
deben soportar I/O - Perl. Practical Extraction and Report Language es
un lenguaje de programación medianamente nuevo - Surgió de otras herramientas de UNIX como son
sed, grep, awk, c-shell. - Sirve para labores de procesamiento de texto,
para la programación de software de sistemas y
ahora último para programar aplicaciones para
Web - C Desde su creación, soporta la entrada y salida
estándar, por cuanto siempre ha privilegiado la
comunicación entre procesos - C
- Para conectarlos con bases de datos, se han usado
APIS y características adicionales de los
lenguajes, tales como ProC
122JavaScripts Historia
- Antes dos eran los lenguajes que les daban vida a
una página web HTML y JAVA - HTML es un lenguaje sencillo de capacidades
limitadas - JAVA es un lenguaje muy poderoso, diseñado para
programadores. - Entonces tenemos dos extremos en el Web, hacía
falta un lenguaje intermedio sencillo hasta el
punto que un diseñador HTML lo pudiese programar. - La respuesta JavaScript
123JavaScript Qué es?
- Se basa en JAVA en su uso y sintaxis, pero es
compilado e interpretado en el browser. En el
caso de Java, se compila en el Server y se
interpreta en el browser ( el Byte Code)? - Un javascript se transmite como texto del server
al browser. Un tag especial le dice al browser
que las líneas siguientes se deben interpretar. - Por su sencillez, es muy utilizado en la
validación de campos de un formulario. Por
ejemplo revisar si el dígito verificador de un
rut es correcto.
124JavaScript JAVA v/s JavaScript
- Ambos son lenguajes de programación.
- JAVA se compila en el server y se interpreta en
el browser, JavaScript se compila e interpreta en
el Browser - JavaScript no Maneja Clases ni herencia
- Un código JavaScript se encuentra incluido dentro
de una página web. Las aplicaciones JAVA son
referenciadas a través de un tag para
transmitirlas desde el servidor
125JavaScript Seguridad e integración con JAVA
- JavaScript no permite el uso de punteros, por lo
que no hay violación de integridad - No se permite el acceso a discos
- Por ser un lenguaje interpretado, no hay problema
con las peticiones de memoria en tiempo real. - Desde JavaScript se pueden invocar applets JAVA.
126JavaScript Dónde se introduce el código ?
- ltHTMLgt
- ltHEADgtltTITLEgtlt/TITLEgt
- ltSCRIPT LANGUAGE"JavaScript"gt
- lt!--Código en JavaScript--gt
- lt/SCRIPTgt
- lt/HEADgt
- ltBODYgt
- ltFORMgt
- Introducir los elementos.
- lt/FORMgt
127ASP
- ASP, o Páginas de Servidor Activas, permite al
usuario de Internet, recibir páginas generadas
dinámicamente en el servidor. - La definición de Microsoft es Las Active Server
Pages son un ambiente de aplicación abierto y
gratuito en el que se puede combinar código HTML,
scripts y componentes ActiveX del servidor para
crear soluciones dinámicas y poderosas para el
Web". - Las Componentes ActiveX, se han diseñado para que
se ejecuten en el servidor Web. Proporcionan
funcionalidad a las aplicaciones, como el acceso
a archivos, Bases de datos, etc.
128ASP (2)?
- ASP es un lenguaje de script (guión), que
contiene además de tags de HTML, secuencias de
comandos que el servidor resuelve, para luego
enviar al navegador el resultado al Cliente en
código HTML. Las secuencias de comandos quedan
ocultas a los usuarios, estos solo reciben el
resultado de la ejecución en formato HTML.
129ASP (3)?
- El principio de la tecnología ASP es el VBScript,
pero existe otra diversidad de lenguajes de
programación que pueden ser utilizados como lo es
Perl, JScript, etc.
- Utilizando ASP es posible conectarse a gestores
de Base de datos SQL, Access, Oracle, o cualquier
otro motor que disponga de driver ODBC.
- ASP es más eficiente que el CGI tradicional
porque corre como un servicio en el servidor,
tomando ventaja de la arquitectura de multitareas.
130Servlets
- Son aplicaciones del lado del servidor
construídas en Java - Son equivalentes a los CGI.
- Al usarlos con una base de datos, generan una
sola conexión y atienden a los clientes a través
de thread.
131 Qué son los Servlets ?
- Ventajas sobre los CGI
- Construídos en Java
- Más ordenados
- Amplio Soporte del Mercado
- Excelente Manejo de Procesos
- Cada conexión se maneja como un proceso liviano
- Utilización de Recursos
- Pueden compatir recursos para todos los proceso
132Ciclo de Vida de un Servlet
- Inicialización
- Se realiza cuando el primer cliente hace una
petición del Servlet - Se define mediante el método init
- Se pueden especificar parámetros de configuración
- Se pueden definir variables que son visibles para
cualquier proceso de manejo de peticiones
133Ciclo de Vida de un Servlet (2)?
- Manejo de Petición
- Para cada cliente que hace una petición del
Servlet, se crea un proceso que lo maneja - Se ejecutan distintos métodos según el tipo de
petición - Petición GET (URLs) método doGet
- Petición POST (Formularios) método doPost
- Petición PUT (Upload) método doPut
134Ciclo de Vida de un Servlet (3)?
- Destrucción
- Se ejecuta cuando se baja el servidor de
Aplicación - Se realiza mediante el método destroy
- Sirve para realizar operaciones de finalización
de la aplicación (desconexión de la BD,
eliminación de archivos, etc.)?
135Objeto Request
- Objeto que contiene la información relacionada
con la petición que realiza el cliente - Tipo MIME de la petición
- Información del Browser
- Parámetros de la URL o proveniente de Fomularios
HTML
136Objeto Response
- Objeto que contiene la información que será
enviada al cliente - Tipo MIME de la respuesta
- Contenido de la página de respuesta
137Objeto Response (2)?
- El contenido se maneja mediante PrintWriter, que
se obtiene con el método getWriter()? - El contenido se agrega con el método write() o
writeln() sobre el PrintWriter
138Objeto Response (3)?
- PrintWriter (cont)?
- Por ejemplo
- public void doGet(HttpServletRequest request,
HtttpServletResponse response) ...
PrintWriter out response.getWriter()
out.println(Hello world!) ... -
139Objeto Response (3)?
- PrintWriter (cont)?
- Se debe ejecutar el método close de PrintWriter
el terminar el método - Permite que se envíe efectivamente el contenido
- Si no se ejecuta por lo general no se ve nada en
el browser
140Manejo de Sesiones
- Se realiza mediante el objeto HttpSesion
- Se obtiene del objeto Request, con el método
getSession()? - Se puede asignar cualquier objeto al objeto
HttpSesion, que podrá ser visto por cualquier
otro método de manejo de peticiones (mientras
dure la sesión)?
141Solución Transaccional
- A través de los servlets es posible construir
sistemas de alto rendimiento y en entornos
transaccionales - La posibilidad de manejar objetos comunes permite
una máxima utilización de recursos, como por
ejemplo conexiones a la Base de Datos
142Solución Transaccional (2)?
- Su esquema de manejo de procesos es muy superior
a otras tecnologías desarrolladas para este tipo
de aplicaciones - Existe un gran soporte del mercado, de forma que
existen interfaces para casi la totalidad de los
sistemas comerciales que están en operación
143MVC
144Visión General de una Aplicación (I)?
El siguiente gráfico ilustra la interacción
disposición de una aplicación monocanal
145Visión General de una Aplicación (II)?
146Visión General de una Aplicación (III)?
La distribución, composición de la aplicación se
complica a medida que se usan diferentes tipos de
tecnología y se abren nuevos canales de reporting
147MVC Controlador Frontal / Arquitectura JSP
Modelo 2
Las recomendaciones que propuso Sun para
implementar una arquitectura MVC JSP Modelo 1
diseños centrados en la página, las solicitudes
son realizadas a la página encargada de generar
la salida, sólo es aplicable para aplicaciones
extremadamente simples, no es válido en
aplicaciones complejas donde se requiera
generación dinámica de contenido, agilidad en el
cambio del flujo de la aplicación y del
contenido.
148MVC Controlador Frontal / Arquitectura JSP
Modelo 2
- JSP Modelo 2 o diseños de controlador. Permite
llevar a cabo de una manera menos traumática los
objetivos de generación dinámica de contenido,
cambio del flujo de programa, cambio de contenido
149MVC Controlador Frontal / Arquitectura JSP
Modelo 2 (I)?
Modelo Contiene el núcleo de la funcionalidad
(dominio) de la aplicación. Encapsula el estado
de la aplicación. No sabe nada / independiente
del Controlador y la Vista.
Vista Es la presentación del Modelo. Puede
acceder al Modelo pero nunca cambiar su estado.
Puede ser notificada cuando hay un cambio de
estado en el Modelo. Controlador Reacciona a
la petición del Cliente, ejecutando la acción
adecuada y creando el modelo pertinente.
150MVC JSP Modelo 2 Struts (I)?
Una aplicación basada en Struts, tiene un
componente básico llamado ActionServlet. Este es
un servlet, que tramita las peticiones de los
clientes delegando a un componente definido por
el usuario por cada petición. Este Servlet es el
punto central del framework, aunque no es
necesario que todas la actividad fluya a través
de él. En una aplicación basada en Struts se
pueden hacer peticiones a una JSP que contengan o
no tag libraries de Struts, sin pasar por el
Servlet ActionServlet.
El ActionServlet (controlador) de Struts captura
y encamina las peticiones HTTP que llegan a la
aplicación (toma la decisión de a dónde enviar la
petición HTTP), a otros componentes de
aplicación. Estos componentes pueden ser páginas
JSP o instancias de una subclase de la clase
org.apache.struts.action.Action que el propio
framework suministra.
Cuando se inicia el Servlet ActionServlet, carga
y analiza la información de un fichero que
contiene la configuración de la aplicación para
aplicar las características de Struts. Entre
otras cosas, el fichero de configuración define
las correspondencias que existen entre las
peticiones HTTP que captura el Servlet
controlador y las acciones que van a tratar esa
petición. Estas correspondencias son manipuladas
como instancias de la clase org.apache.struts.acti
on.ActionMapping
151MVC JSP Modelo 2 Struts (II)?
152J2EE
153Qué es J2EE?
- J2EE (Java 2 Enterprise Edition)
- J2EE es un grupo de especificaciones diseñadas
por Sun que permiten la creación de aplicaciones
empresariales, esto sería acceso a base de datos
(JDBC), utilización de directorios distribuidos
(JNDI), acceso a métodos remotos (RMI/CORBA),
funciones de correo electrónico (JavaMail),
aplicaciones Web(JSP y Servlets)...etc. -
- Es importante notar que J2EE es solo una
especificación, esto permite que diversos
productos sean diseñados alrededor de estas
especificaciones algunos son Tomcat y Weblogic. - Aunque varios productos Java están diseñados
alrededor de estas especificaciones, no todos
cumplen con el estándar completo, esto es, Tomcat
solo emplea / cumple las especificaciones de JSP
y Servlets, sin embargo, existen productos como
Websphere y algunos otros "Java Application
Servers" que son considerados "Fully J2EE
Compliant" , en otras palabras, cumplen con todas
las especificaciones definidas por Sun.
154 Arquitectura de Sistemas
- Arquitectura de 2 gradas
- El servidor sólo actúa como un simple controlador
de tráfico entre la aplicación y los datos.
Application
DB
155Arquitectura de Sistemas
- Arquitectura de 3 gradas
- Capa de presentación
- Capa de negocio
- Capa de datos
User Interface
Application Logic
XML Documents
DB
156Arquitectura de Sistemas
Browser
- Arquitectura de n-gradas
- No hay una manera rápida de definir las capas de
aplicación del sistema.
Firewall
Application Client
Presentation Logic
Services
Bussines Logic
157J2EE
- Plataforma J2EE
- J2EE Runtime
- J2EE APIs
- J2EE Arquitecture Containers
- Tecnologías J2EE
- Componentes Web
- - Servlets
- - Java Server Pages
- Componentes EJB
- - Beans de sesión
- - Beans de entidad
- Tecnologías de Servicio
- JDBC
- Java Transaction API and service
- JNDI
- Tecnologías de Comunicación
- Protocolos de Internet
- - HTTP
- - TCP/IP
- - SSL
- Protocolos de objeto remoto
- - RMI y RMI-IIOP
- - Java IDL
- JMS
- JavaMail
- XML
158Application Logic
Client
Data
Web Container
JDBC
RDMS
Servlets
JSPs
HTTP(S)?
Java Mail
Tag Library
Mail Server
RMI
J2EE Application Server
Java Application
EJB Container
IIOP
CORBA Server
Session Beans
Entity Beans
JNDI
Directory Service
JMS
Message Queue
159PLATAFORMA J2EE
160Plataforma J2EE
La plataforma J2EE provee lo siguiente
- J2EE Runtime
- Una infraestructura en runtime para dar soporte a
las aplicaciones.
- J2EE APIs
- Un conjunto de APIs que extienden java para
co