¿Estilo arquitectónico en ‘Layers’ o ‘Tiers’?

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.

image21

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.

image_thumb[6]

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.

Fuente: http://icomparable.blogspot.com/2008/10/arquitectura-n-tier-o-arquitectura-n.html

Capas

Las capas son las agrupaciones lógicas de los componentes de software que forman la aplicación o servicio. Ellos ayudan a diferenciar entre los distintos tipos de tareas realizadas por los componentes, lo que hace que sea más fácil crear un diseño que soporta la reutilización de los componentes. Cada capa lógica contiene un número de tipos de componentes discretos agrupados en sub-capas, con cada subcapa realizando un tipo específico de tarea. Al identificar los tipos genéricos de componentes que existen en la mayoría de las soluciones, se puede construir un mapa significativo de una aplicación o servicio, y luego utilizar este mapa como un modelo para su diseño. La división de una aplicación en capas separadas que tienen distintos roles y funciones ayuda a maximizar la mantenibilidad del código, optimizar la forma en que la aplicación funciona cuando se despliega de maneras diferentes, y proporcionar una clara delimitación entre los lugares donde se debe usar determinada tecnología o decisiones de diseño.

Presentación, negocio y servicios de datos

En el nivel más alto y más abstracto, la vista de la arquitectura lógica de un sistema puede ser considerado como un conjunto de servicios de cooperación agrupados en las siguientes capas, como se muestra en la Figura 1.Figura 1 La vista de la arquitectura lógica de un sistema de capas de las secciones el diseño de la aplicación se muestra en la Figura 1 se puede considerar como tres conjuntos básicos de servicios:

Figura 1 La vista de la arquitectura lógica de un sistema de capas

Figura 1 La vista de la arquitectura lógica de un sistema en capas

  • Servicios de presentación . Estos son los servicios orientados al usuario responsables de la gestión de la interacción del usuario con el sistema, y generalmente consisten en componentes situados dentro de la capa de presentación. Constituyen un puente común en la lógica de negocio del núcleo encapsulado en los servicios de negocio (business services).
  • Servicios de negocios (business services) . Estos servicios implementan la funcionalidad básica del sistema, y encapsulan la lógica de negocio relevante. Por lo general, consisten en componentes situados en la capa de negocio, que pueden exponer las interfaces de servicio que otros usuarios pueden utilizar.
  • Los servicios de datos (data services) . Estos servicios proporcionan acceso a los datos que se alojan dentro de los límites del sistema y los datos expuestos por otros sistemas back-end, tal vez accede a través de los servicios. La capa de datos expone los datos a la capa de negocio a través de interfaces genéricas diseñadas para ser convenientes para el uso de servicios de negocio (business services).

Componentes

Cada capa de una aplicación contendrá una serie de componentes que implementan la funcionalidad de esa capa. Estos componentes deben ser cohesivos y débilmente acoplados para simplificar la reutilización y el mantenimiento. La Figura 2 muestra los tipos de componentes que se encuentran comúnmente en cada capa.

Figura 2 Tipos de componentes que se encuentran comúnmente en cada capa

Figura 2 Tipos de componentes que se encuentran comúnmente en cada capa

Componentes de la capa de presentación

Los componentes de la capa de presentación implementan la funcionalidad necesaria para permitir a los usuarios interactuar con la aplicación. Los siguientes tipos de componentes se encuentran comúnmente en la capa de presentación:

  • componentes de la interfaz de usuario (UI) . Estos componentes proporcionan el mecanismo para que los usuarios interactúen con la aplicación. Los datos de formato para su visualización, adquirir y validar los datos introducidos por los usuarios.
  • Componentes de proceso de interfaz de usuario . Para ayudar a sincronizar y organizar las interacciones del usuario, puede ser útil para impulsar el proceso utilizando distintos componentes del proceso de interfaz de usuario. Esto evita que el flujo del proceso y la lógica de gestión de estado de ser codificada en los elementos de interfaz de usuario en sí, y le permite volver a utilizar los mismos patrones básicos de interacción con el usuario en otras interfaces de usuario (básicamente se refiere a separar los componentes de UI de la lógica de implementación de dichos componentes), para mayores referencias consultar el patrón MVP (Model View Presenter).

Componentes de la capa de Negocio

Los componentes empresariales de esta capa implementan la funcionalidad básica del sistema, y ​​encapsulan la lógica de negocio relevante. Los siguientes tipos de componentes se encuentran comúnmente en la capa de negocio:

  • Fachada de aplicaciones (Application façade). Esto es una característica opcional que se puede utilizar para combinar múltiples operaciones empresariales en un solo envió un mensaje a base de operaciones. Esta característica es útil cuando se localice los componentes de la capa de presentación en un nivel físico independiente de los componentes de la capa de negocio, lo que le permite optimizar el uso del método de comunicación que los une.
  • Los componentes empresariales (Business components) . Estos componentes implementan la lógica de negocio de la aplicación. Independientemente de que un proceso de negocio se compone de un solo paso o un flujo de trabajo orquestado, su aplicación es probable que requieren componentes que implementan las reglas de negocio y realizar tareas de oficina.
  • Flujos de trabajo empresariales (Business workflow) . Después de que los componentes de interfaz recogen los datos necesarios del usuario y lo pasa a la capa de negocio, la aplicación puede utilizar esta información para llevar a cabo un proceso de negocio. Muchos procesos de negocio implican varios pasos que se deben realizar en el orden correcto, y pueden interactuar entre sí a través de una orquestación. Los componentes empresariales de flujo de trabajo definen y coordinan las de larga duración, de pasos múltiples procesos de negocio, y se puede implementar utilizando herramientas de gestión de procesos de negocio.
  • Componentes de entidad empresarial (Business entity components) . Las entidades empresariales se utilizan para pasar los datos entre los componentes. Los datos representan entidades del mundo real de negocios, tales como productos o pedidos. Las entidades empresariales que la aplicación utiliza internamente suelen ser estructuras de datos, como DataSets, DataReaders, o Lenguaje de marcado extensible (XML) corrientes, pero también se puede implementar utilizando clases personalizadas orientados a objetos que representan las entidades del mundo real que la aplicación manejará.

Componentes de la capa de datos

Los componentes de la capa de datos facilitan el acceso a los datos que se aloja dentro de los límites del sistema y los datos expuestos por otros sistemas back-end. Los siguientes tipos de componentes se encuentran comúnmente en la capa de datos:

  • Componentes de acceso a datos (Data access components). Estos componentes abstraen la lógica necesaria para acceder a los almacenes de datos subyacentes. Si lo hace, centraliza la funcionalidad de acceso a datos y hace la aplicación más fácil de configurar y mantener.
  • Ayudante de datos y componentes de servicios públicos (Data helper and utility components). La mayoría de las tareas de acceso a datos requieren lógica común que pueda ser extraída y aplicada en distintos componentes de ayuda reutilizables. Esto ayuda a reducir la complejidad de los componentes de acceso a datos y centraliza la lógica, lo que simplifica el mantenimiento. Otras tareas que son comunes en componentes de la capa de datos, y no es específica de un conjunto de componentes, pueden ser implementados como componentes de servicios separados. Ambos componentes de ayuda y utilidad a menudo puede ser reutilizado en otras aplicaciones.
  • Los agentes de servicio (Service agents). Cuando un componente de negocio debe utilizar la funcionalidad proporcionada por un servicio externo, puede que tenga que implementar código para administrar la semántica de la comunicación con ese servicio en particular. Los Agentes del Servicio permiten aislar las idiosincrasias de diversos servicios de llamadas desde la aplicación, y puede proporcionar servicios adicionales, tales como la cartografía básica entre el formato de los datos expuestos por el servicio y el formato que requiere su aplicación.

Componentes transversales

Muchas de las tareas llevadas a cabo por el código de una aplicación se requieren en más de una capa. Los componentes transversales implementan tipos específicos de funcionalidad que se puede acceder a partir de componentes en cualquier capa. Los siguientes son los tipos comunes de componentes transversales:

  • Componentes para la implementación de la seguridad . Estos pueden incluir componentes que realizan la autenticación, autorización y validación.
  • Componentes para la implementación de tareas de gestión operacional . Estos pueden incluir componentes que implementan las políticas de manejo de excepciones, registro, contadores de rendimiento, configuración y localización.
  • Componentes para implementar la comunicación . Estos pueden incluir componentes que se comunican con otros servicios y aplicaciones.

(Continúa en http://apparchguide.codeplex.com/wikipage?title=Chapter%209%20-%20Layers%20and%20Tiers)

Referencias:

http://blogs.msdn.com/b/jmeier/archive/2008/09/06/layers-and-tiers.aspx

http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

http://queens.db.toronto.edu/~papaggel/courses/csc309/docs/lectures/web-architectures.pdf

http://archive.systems.ethz.ch/www.systems.ethz.ch/education/hs11/eai/lectures/Chapter-1-EAI-2011-Layers.pdf

http://morphological.files.wordpress.com/2011/08/5-layer-architecture-draft.pdf

Anuncios

Deja un comentario

Archivado bajo Arquitectura de Sistemas, Arquitectura de Software, Diseño

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s