10.21.2008

¿Arquitectura n-Tier o Arquitectura n-Layer?

Al parecer existe una confusión respecto al término aplicación n-capas cuando este se lleva al idioma español. El problema principal es que en inglés se manejan dos conceptos a nivel de arquitectura:

  • Aplicaciones n-Tier
  • Aplicaciones n-Layer

Ambos términos significan “de n capas"; pero existe una gran diferencia respecto al significado de cada uno de ellos. Una arquitectura n-Tier se refiere a la distribución física de las capas, es decir donde corre el código y los procesos. Una arquitectura n-Layer se refiere a la distribución lógica de las capas, es decir, como esta estructurado el código.

En la siguiente figura podemos ver una aplicación n-tier – una aplicación web - que contiene 3 capas, una capa en el cliente, otra en el servidor IIS, y otra en la base de datos; es decir, el navegador, el servidor Web y el servidor de bases de datos corren en diferentes máquinas.

Ejemplo Arquitectura n-Tier

Por otra parte, una arquitectura n-Layer define simplemente como se organiza el código. Normalmente incluye una capa de presentación, una capa de negocios, una capa de acceso a datos, una capa de entidades de negocio y una capa de datos – repositorio de datos. El hecho de que se dividan las capas para organizar el código, no significa que las capas obligatoriamente deban corren en diferentes máquinas o que deben estrictamente correr en una sola máquina o en un único proceso.

La siguiente figura detalla una arquitectura n-Layer básica.

Arquitectura N-Layer

Como podemos ver en la figura, en una arquitectura n-layer las capas solamente interactúan con sus capas adyacentes lo que permite abstraer funcionalidades de las capas superiores e inferiores. Por ejemplo, la capa de presentación no se da cuenta que tipo de base de datos o que repositorio de datos se utiliza por que esta solamente se comunica con la capa de negocios, y el repositorio de datos no se da cuenta en donde se esta utilizando o desplegando la información ya que este interactúa con la capa de acceso a datos.

En los post siguientes vamos a hablar el por que es importante dividir las aplicaciones en capas, y vamos a profundizar en las arquitecturas n-Layer.

22 comentarios:

  1. Muy bien, es bueno hacer este tipo de aclaraciones. Siempre había pensado que eran lo mismo. Saludos y gracias por el desenganio. Saludos

    ResponderEliminar
  2. excelente la definicion de las capas fisicas y logicas

    ResponderEliminar
  3. Gracias a ambos por tomarse el tiempo para leer mi blog y por los comentarios :).

    ResponderEliminar
  4. Muy buena la aclaración, es un tema muy importante y de mucha utilidad.

    ResponderEliminar
  5. Hola, me encanto el post, la aclaración es muy buena, incluso antes de leer esto no hubiera tomado no lo habría tomado en cuenta, estoy desarrollando mi proyecto de titulación como In. en Sistemas y pues tome en cuenta los detalles de la arquitectura n-Tier, sin saber que lo estaba haciendo (tan solo la nombre arquitectura física).

    Ahora, también tengo una pregunta, ¿a qué te refiere con la "Capa de entidades de Negocio", en que se diferencia de la Capa de negocio? Si va por donde creo, me ayudaría mucho en verdad para completar mi arquitectura de este proyecto que menciono.

    Dejo mis correos electrónicos por cualquier aclaración:

    alejandrorazgado@hotmail.com
    alejandrorazgadogmail.com

    ResponderEliminar
  6. Gracias Alex por tu comentario.
    Las capas de lógica de negocio usualmente se dividen en comportamiento y en estado. La idea con la capa de entidades de negocio es separar la lógica del negocio con el estado de las clases del negocio - entidades -, lo que nos permite de forma sencilla darle mantenimiento a las entidades o a los comportamientos sin tener que recompilar alguna de las dos. Además, con el uso de Ioc [ver post de Unity] esta separación me permite crear aplicaciones versalites que pueden crecer en el tiempo sin necesidad de ser recompiladas.

    ResponderEliminar
  7. muy buena la aclaración, yo tambien pensaba que era lo mismo, gracias por este tipo de aclaraciones.

    ResponderEliminar
  8. Gracias Milton por leer el blog.

    Saludos

    ResponderEliminar
  9. Muy buena la explicacion. Tier = Arquitectura del Sistema . Layer = arquitectura del SW. :)

    ResponderEliminar
  10. Gracias @jlbugarin por leer el blog y por tus comentarios. Saludos

    ResponderEliminar
  11. pero en este tipo de arquitectura n-tier si implemento los Caching Application Block en que capa tendria que hacerlo si puedo preguntar en este blog...

    ResponderEliminar
  12. por cierto me gusta tu blog gracias... por tu respuestas

    ResponderEliminar
  13. Hay tantas definiciones en el mundo informático que con frecuencia se dan ambiguedades, de no ser por Don Luis Diego yo seguiría pensando que n-Tier y n-Layer eran lo mismo. Muchas gracias Don Luis por su aporte. Saludos.

    ResponderEliminar
  14. Gracias anónimo por tu comentario.
    Respecto al caching, este application block si lo usas a nivel de página web se usa en el UI, y si lo usas a nivel de servicio te funciona a nivel de capa de servicios

    saludos

    ResponderEliminar
  15. Muy bueno me ayudo a Comprender !! Dennis desde Costa Rica

    ResponderEliminar
  16. Muchas gracias me fue de mucha ayuda ! Tienes las fuentes ? saludos

    ResponderEliminar
  17. Muy buena tu explicación. Gracias pues habemos quienes apenas y sabemos que es un sistema.

    ResponderEliminar
  18. Muy buena informacion, sigue de esa forma.

    Gracias.

    ResponderEliminar
  19. MUI BUENA PAGINA ACLARANDO MUCHAS DUDAS

    ResponderEliminar
  20. Excelente aclaración me sirvió de mucho.. suerte!!

    ResponderEliminar