El patrón MVC

La arquitectura en tres capas

Objetivo:

Compatibilizar aplicaciones web, aplicaciones cliente / servidor y aplicaciones de sobremesa, permitiendo la reutilización del codigo

  • Separar las responsabilidades en distintos niveles
    • Permite aislar los cambios en tecnologías a ciertas capas para reducir el impacto en el sistema total.
  • Aumentar la reutilización del código
    • Cada capa no tiene dependencia con otra, por lo que es más fácil que se pueden reutilizar
  • Aumentar la portabilidad al crear clases con alta cohesión
    • Las clases realizan trabajos especializados y se relacionan con interfaces perfectamente definidas
  • Mejorar el rendimiento.
    • Distribuir las capas entre múltiples sistemas (físicos) puede incrementar la escalabilidad, la tolerancia a fallos y el rendimiento.
  • Aumentar la independencia del hardware

Cuando hablamos de estructura en capas, habitualmente, planteamos tres capas:

  • Persistencia
    • Responsable del acceso a la base de datos para la obtención o grabación de toda la información
  • Lógica de negocios
    • gestionan la lógica empresarial de la aplicación y pueden acceder a los servicios del tercer nivel. La capa de la lógica de aplicación es donde se produce la mayor parte del trabajo de los procesos.
  • Interfaz de usuario
    • permiten al usuario interactuar con los procesos del segundo nivel de forma segura

Los tres niveles deben comunicarse entre ellos. Los protocolos abiertos estándar y las API expuestas simplifican esta comunicación. Puede escribir componentes de cliente en cualquier lenguaje de programación, como Java o C++. Estos clientes se ejecutan en cualquier sistema operativo, comunicándose con la capa de la lógica de la aplicación. Las bases de datos del tercer nivel pueden tener cualquier diseño, si la capa de la aplicación pueda consultarlas y manipularlas. La clave de esta arquitectura es la capa de la lógica de aplicación.

Esta estructura permite p.ej: la reutilización de los controladores, en cualquier entorno:

La ventaja que aporta esta forma de programar es la independencia de las capas; esto significa que cada capa utilizar la tecnología que mejor se adapte al entorno.

Frente a cambios de estructuras…

  • En web, la capa presentación se puede desarrollar con HTML, Javascript,…
  • En cliente-servidor, podemos utilizar Visual Basic, Java, o cualquier tecnología soportada por el cliente
  • En sobremesa, volveríamos a utilizar la tecnología soportada

Frente a cambios de Base de datos

  • Cambiamos la capa de acceso a datos

Cuando se requiere alta disponibilidad o redundancia, podemos hacer que cada capa corra en cualquier número de máquinas distintas

Por último, no se debe confundir capa con nivel; los niveles es la forma en que se distribuyen las capas. Esto es, si todas la capas están en la misma máquina, la aplicación tendrá 1 nivel

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Desarrollo Web, Divulgacion y etiquetada . Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.