Estamos interesados en discernir las partes de una aplicación, desde su punto de vista lógico o funcional. Layers son las partes funcionales de una aplicaci¢n, independientemente de como se las agrupe. Las partes de una aplicación se conocen como layers, por que ellas se construyen unas sobre otras. La palabra inglesa frame significa armadura, armazón, cerco, marco, estructura corporal, construir, armar, formular, enmarcar o encuadrar.
Esta visión de las partes de una aplicación es general y sin especificar
un profundo detalle de las mismas.
Es la parte de la aplicación que interactúa, de una forma u otra, entre
la aplicación y el usuario de la misma. Las interfases gráficas, las
páginas Web y los reportes emitidos por una aplicación son ejemplos de
este layer.
El presentation layer hace que la aplicación sea útil al usuario.
Es la parte de la aplicación que contiene las múltiples reglas y operaciones
del negocio, las que son realizadas sobre los datos.
Considérese el ingreso de una órden de compra, donde debe almacenarse los
datos de la órden, calcularse los precios e impuestos, validarse la
fuente de pago, y confirmar que toda la información está correcta.
El logic layer le da vida a los datos, haciendo que se comporten de acuerdo
con las reglas del negocio.
Es la parte de la aplicación que maneja los datos que usa la aplicación.
A veces la aplicación maneja los datos por si misma en archivos de datos,
mientras que otras veces delega a un manejador de base de datos dicha tarea,
conviertiendo al manejador de base de datos en el data layer.
El data layer procesa los datos en sus formas primarias.
Esta visión de las partes de una aplicación es más detallada
que la anterior.
Hemos usado la palabra Lógica ( Logic ) para señalar los componentes
que debemos programar y la palabra Servicios ( Services ) para los
componentes que nos son dados, generalmente por el sistema operativo de la
computadora, o por algún producto que lo complementa, por ejemplo, los
Servidores de Base de Datos.
Son servicios provistos por un dispositivo
con medios de entrada de información ( teclado, mouse, micrófono, etc. ),
medios de salida de información ( monitor, parlantes, impresoras, etc. )
y medios de procesamiento de información para ejecutar software
que elabora la interfase del usuario.
Los servicios aceptan entradas desde el usuario y muestran salidas
producidas por las aplicaciones.
El dispositivo transfiere informacion desde el usuario a la aplicacion y
desde la aplicacion al usuario.
El software es solo programable en el aspecto de la representación
y no involucra procesamiento alguno de la aplicación.
Es la lógica que controla la interación entre el usuario y la computadora.
Es la especificación de lo que debe ocurrir cuando un usuario selecciona
una opción de menú, oprime un botón o elije un item en una lista,
para mencionar unos pocos. La validación
primaria de la información ingresada pertenece a este componente.
Es la lógica que colecciona todas la decisiones, cálculos y operaciones
que la Aplicación debe llevar a cabo.
Como funciona el negocio está controlado e implementado en este componente.
Es la lógica de las operaciones que deben ejecutarse en la base de datos
para cumplir con las necesidades de recuperación y almacenamiento de
información que tiene la Lógica de Negocios.
Para el caso particular de la bases de datos las expresiones de este
componente son sentencias de SQL tales como Select, Insert y Update.
Son los servicios que el gerenciador de base de datos debe llevar a cabo
para cumplir los requerimientos de la Lógica de Datos.
La lista de servicios incluye la definición de los datos,
la manipulación de los datos, la integridad de las transacciones,
entre otros.
Son servicios ejecutados directamente sobre los discos magnéticos,
reservorios de bits que constituyen la información de la Aplicación.
Estos servicios son normalmente ejecutados por el sistema operativo
de la computadora.
Tiers es como se agrupan las partes funcionales o layers de un aplicación.
En ingles se utiliza la palabra " tiers " para indicar la cantidad de
estratos que tiene cada arquitectura.
Dicha palabra puede traducirse como
hileras en un teatro, filas en
un teatro, filas de palcos, pisos de una torta, etc..
Así podemos distinguir las arquitecturas según la cantidad de pisos o tiers
en que está fisicamente separada la aplicación.
La arquitectura de las aplicaciones ha ido cambiando en el tiempo.
Las principales evoluciones tienen su paralelo con los avances de la
tecnología de comunicaciones.
Las arquitecturas que han seguido esta evolución son las siguientes :
A continuación enumeraremos las arquitectura conocidas, señalando la
cantidad de tiers que la componen.
tipo 1 tipo 2 tipo 3
*-----------------------* *-----------------------* *-----------------------*
| | | | | |
| | | | | |
| | | Data | | File Services |
| | | | | |
| | | | | |
| | | | | Data Services |
| | | | | |
| | | | | |
| | | | | Data Logic |
| | | | | |
| | | Logic | | |
| | | | | Bussines Logic |
| | | | | |
| | | | | |
| | | | | Presentation Logic |
| | | | | |
| | | | | |
| | | Presentation | | Presentation Services |
| | | | | |
| | | | | |
*-----------------------* *-----------------------* *-----------------------*
Aplicacion Monolitica Aplicacion Monolitica Aplicacion Monolitica
Desordenada Ordenada Detallada
Factores
Tipo 1
Tipo 2
Tipo 3
Hardware Cliente
Nada exigente
Nada exigente
Nada exigente
Interfase Grafica
Muy pobre
Muy pobre
Muy pobre
Uso Red
Poco intensa
Poco intensa
Poco intensa
Hardware Servidor
Muy exigente
Muy exigente
Muy exigente
Escalibilidad Servidor
Muy dificil
Muy dificil
Muy dificil
Desarrollo Aplicaciones
Muy facil
Muy facil
Muy facil
Distribucion Software
Muy facil
Muy facil
Muy facil
Un Servidor - Muchos Clientes
*---------* *-----------------------* *---------*
| Cliente | | | | Cliente |
*---------* | | *---------*
| S E R V I D O R |
*---------* | | *---------*
| Cliente | | | | Cliente |
*---------* *-----------------------* *---------*
*---------* *---------*
| Cliente | | Cliente |
*---------* *---------*
*---------* *---------* *---------* *---------* *---------* *---------* *---------* *---------* *---------*
| Cliente | | Cliente | | Cliente | | Cliente | | Cliente | | Cliente | | Cliente | | Cliente | | Cliente |
*---------* *---------* *---------* *---------* *---------* *---------* *---------* *---------* *---------*
Arquitectura Cliente Servidor de Dos Pisos - ( Two Tiered Applications )
Representaciones
S E R V I D O R
tipo 4 tipo 5 tipo 6 tipo 7 tipo 8 tipo 9
*-----------------------* *-----------------------* *-----------------------* *-----------------------* *-----------------------* *-----------------------*
| | | | | | | | | | | File Services |
| | | | | | | | | | | |
| File Services | | File Services | | File Services | | File Services | | File Services | | |
| | | | | | | | | | | Data Services |
| | | | | | | | | | | |
| Data Services | | Data Services | | Data Services | | Data Services | *-----------------------* | |
| | | | | | | | ............................. | Data Logic |
| | | | | | | | . *-----------------------* . | |
| Data Logic | | Data Logic | | Data Logic | *-----------------------* . | | . | |
| | | | | | ............................. | | . | Bussines Logic |
| | | | | | . *-----------------------* | Data Services | . *-----------------------*
| Bussines Logic | | Bussines Logic | *-----------------------* . | | | | ...........................
| | | | ............................. | | | | *-----------------------*
| | | | . *-----------------------* | Data Logic | | Data Logic | | Data Logic |
| Presentation Logic | *-----------------------* . | | | | | | | |
| | ............................. | | | | | | | |
| | . *-----------------------* | Bussines Logic | | Bussines Logic | | Bussines Logic | | Bussines Logic |
*-----------------------* . | | | | | | | | | |
........................... | | | | | | | | | |
*-----------------------* | Presentation Logic | | Presentation Logic | | Presentation Logic | | Presentation Logic | | Presentation Logic |
| | | | | | | | | | | |
| | | | | | | | | | | |
| Presentation Services | | Presentation Services | | Presentation Services | | Presentation Services | | Presentation Services | | Presentation Services |
| | | | | | | | | | | |
| | | | | | | | | | | |
*-----------------------* *-----------------------* *-----------------------* *-----------------------* *-----------------------* *-----------------------*
C L I E N T E
Sistema Cliente Servidor Sistema Cliente Servidor Sistema Cliente Servidor Sistema Cliente Servidor Sistema Cliente Servidor Sistema Cliente Servidor
Servidor Central Presentacion Remota Logica Remota Dato Remoto Servidor Archivos Logica Partida
Division del Trabajo
Factores
Tipo 4
Tipo 5
Tipo 6
Tipo 7
Tipo 8
Tipo 9
Hardware Cliente
Nada exigente
Algo exigente
Medio exigente
Bastante exigente
Muy exigente
Muy exigente
Interfase Grafica
Muy pobre
Muy rica
Muy rica
Muy rica
Muy rica
Muy rica
Uso Red
Muy intensa
Medio intensa
Poco intensa
Medio intensa
Muy intensa
Poco intensa
Hardware Servidor
Muy exigente
Bastante exigente
Medio exigente
Algo exigente
Nada exigente
Muy exigente
Escalibilidad Servidor
Muy dificil
Medio facil
Bastante facil
Medio facil
Muy facil
Medio facil
Desarrollo Aplicaciones
Muy facil
Medio facil
Muy dificil
Medio facil
Muy facil
Muy dificil
Distribucion Software
Muy facil
Medio facil
Muy dificil
Muy dificil
Muy dificil
Muy dificil
Arquitectura Internet de Un Piso y Medio - ( One and a Half Tiered Applications )
Representaciones
W E B
tipo 10 tipo 11 tipo 12 tipo 13
*-----------------------* *-----------------------* *-----------------------* *-----------------------*
| | | | | | | |
| | | | | | | |
| File Services | | File Services | | File Services | | File Services |
| | | | | | | |
| | | | | | | |
| | | Data Services | | Data Services | | Data Services |
| | | | | | | |
| | | | | | | |
| | | | | | | Data Logic |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
*-----------------------* *-----------------------* *-----------------------* *-----------------------*
................................................................................................................
*-----------------------* *-----------------------* *-----------------------* *-----------------------*
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | Presentation Logic | | Presentation Logic |
| | | | | | | |
| | | | | | | |
| Presentation Services | | Presentation Services | | Presentation Services | | Presentation Services |
| | | | | | | |
| | | | | | | |
*-----------------------* *-----------------------* *-----------------------* *-----------------------*
B R O W S E R
Sistema de Paginas Sistema de Paginas Sistema de Paginas Sistema de Paginas
Estaticas Interactivas Dinamicas Activas
Division del Trabajo
Factores
Tipo 10
Tipo 11
Tipo 12
Tipo 13
Hardware Cliente
Nada exigente
Nada exigente
Nada exigente
Nada exigente
Interfase Grafica
Muy rica
Muy rica
Muy rica
Muy rica
Uso Red
Poco intensa
Medio intensa
Bastante intensa
Medio intensa
Hardware Servidor
Poco exigente
Medio exigente
Bastante exigente
Muy exigente
Escalibilidad Servidor
Nada Dificil
Medio Dificil
Bastante Dificil
Muy Dificil
Desarrollo Aplicaciones
Poco dificil
Medio dificil
Bastante dificil
Muy dificil
Distribucion Software
Muy facil
Muy facil
Muy facil
Muy facil
Arquitectura Cliente Servidor de Tres Pisos - ( Three Tiered Applications ) y
Arquitectura Internet de Dos Pisos y Medio - ( Two and a Half Tiered Applications )
Representaciones
tipo 14 tipo 15
*-----------------------* *-----------------------*
| | | |
| | | |
| File Services | | File Services |
| | Servidor de Datos | | Servidor de Datos
| | | |
| Data Services | | Data Services |
| | | |
| | | |
*-----------------------* *-----------------------*
......................... .........................
*-----------------------* *-----------------------*
| | | |
| | | |
| Data Logic | | Data Logic |
| | Servidor de Trasacciones | | Web Server
| | | |
| Bussines Logic | | Bussines Logic |
| | | |
| | | |
*-----------------------* *-----------------------*
......................... .........................
*-----------------------* *-----------------------*
| | | |
| | | |
| Presentation Logic | | Presentation Logic |
| | Cliente Remoto | | Browser
| | | |
| Presentation Services | | Presentation Services |
| | | |
| | | |
*-----------------------* *-----------------------*
Division del Trabajo
Factores
Tipo 14
Tipo 15
Hardware Cliente
Nada exigente
Nada exigente
Interfase Grafica
Muy rica
Muy rica
Uso Red
Poco intensa
Poco intensa
Hardware Servidor
Muy exigente
Muy exigente
Escalibilidad Servidor
Medio dificil
Medio dificil
Desarrollo Aplicaciones
Medio facil
Medio facil
Distribucion Software
Poco Facil
Muy Facil
Arquitectura versus Numero de Clientes.
Cantidad Clientes
Arquitectura
2
Arquitectura Monolitica
20
Arquitectura Cliente Servidor
200
Arquitectura Cliente Servidor
2000
Arquitectura Browser Web
20000
Arquitectura Browser Web
Interfase Client/Server
Interfase Servidor ( CS_Server.java )
package oot.estructuras;
public interface CS_Server
{
/**
Publica un Mensaje enviado por un Cliente en la pantalla del Servidor.
@param client Es el Objeto Cliente que solicito la publicacion del Mensaje.
@param mensaje El el Mensaje enviado por el Cliente para su publicacion.
@return void Este Metodo no devuelve valor alguno. En el Cliente solicitante invoca los Metodos : setFeedback() y setEco().
*/
public void Publicar_Mensaje( Object client, String mensaje );
}
Interfase Cliente ( CS_Client.java )
package oot.estructuras;
public interface CS_Client
{
/**
Propiedad donde el Servidor devuelve el Resultado de la Operacion solicitada.
@param server Es el Objeto Servidor que atendio la Operacion.
@param feedback Es el Resultado de la Operacion realizada por el Servidor.
@return void Este Metodo no devuelve valor alguno.
*/
public void setFeedback( Object server, int feedback );
/**
Propiedad donde el Servidor devuelve el Eco.
@param server Es el Objeto Servidor que atendio la Operacion.
@param eco Es el Eco devuelto por el Servidor.
@return void Este Metodo no devuelve valor alguno.
*/
public void setEco( Object server, String eco );
}
Funciones en el Cliente y en el Servidor
El servidor debera implementar los metodos de servicios que ofrece
a sus clientes.
Estos metodos son los que los clientes invocaran para disparar la accion
en el servidor.
Cuando el cliente solicita un servicio al servidor invocando los metodos de
servicios, el servidor debe individualizar al cliente que llama, puesto
que luego de ejecutar el servicio solicitado, debera informar al cliente
los resultados de su gestion.
El cliente debera implementar metodos especificos de retorno, los que
seran utilizados por el servidor para notificar al cliente de los resultados
de la operacion.
El servidor debera tener un identificador preciso, el cual sera usado
por los clientes para ubicarlo.
Los clientes deberan tener un identificador preciso y unico, el cual sera usado
por el servidor para devolverles los resultados de los servicios cumplidos.