Estructura de Datos : Arquitectura de Aplicaciones ( Application Architecture )


Layers

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.

Layers Generales

Esta visión de las partes de una aplicación es general y sin especificar un profundo detalle de las mismas.

  1. El Layer de Presentación ( Presentation Layers )
    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.
  2. El Layer de Logica ( Logic Layers )
    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.
  3. El Layer de Datos ( Data Layers )
    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.

Layers Detallados

Esta visión de las partes de una aplicación es más detallada que la anterior.

  1. Servicios de Presentación ( Presentation Services )
    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.
  2. Lógica de Presentacion ( Presentation Logic )
    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.
  3. Lógica del Negocio ( Business Logic )
    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.
  4. Lógica de Datos ( Data Logic )
    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.
  5. Servicios de Datos ( Data Services )
    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.
  6. Servicios de Archivos ( File Services )
    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.
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.


Tiers

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.

  1. Un Piso ( One Tier )
  2. Dos Pisos ( Two Tiers )
  3. Tres Pisos ( Three Tiers )
  4. ...
  5. N Pisos ( N Tiers )


Arquitectura y Comunicaciones

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 :

  1. Arquitectura Monolítica.
  2. Arquitectura Cliente Servidor.
  3. Arquitectura Internet.
A continuación enumeraremos las arquitectura conocidas, señalando la cantidad de tiers que la componen.


Arquitectura Monolítica de Un Piso - ( One Tiered Applications )

Representaciones

    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

Division del Trabajo

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