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:

Unknown dijo...

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

Unknown dijo...

excelente la definicion de las capas fisicas y logicas

Luis D. Rojas dijo...

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

Unknown dijo...

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

Ing Alex dijo...

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

Luis D. Rojas dijo...

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.

Milton Baltazar Valenzuela dijo...

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

Luis D. Rojas dijo...

Gracias Milton por leer el blog.

Saludos

@jlbugarin dijo...

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

Luis D. Rojas dijo...

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

Anónimo dijo...

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...

Anónimo dijo...

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

Henry Rodríguez dijo...

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.

Luis D. Rojas dijo...

Gracias Henry por tus comentarios

Luis D. Rojas dijo...

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

Dennis dijo...

Muy bueno me ayudo a Comprender !! Dennis desde Costa Rica

Boris Zurita dijo...

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

Anónimo dijo...

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

juancito peña dijo...

Muy buena informacion, sigue de esa forma.

Gracias.

Jacksu Estrada dijo...

MUI BUENA PAGINA ACLARANDO MUCHAS DUDAS

Unknown dijo...

sumamente claro... y conciso.

JayLeo dijo...

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