Patrón de Arquitectura por Capas. Componentes presentes en la Capa de Lógica de Negocios

Diseño de componentes de negocio

Los componentes empresariales pueden ser la raíz de las transacciones atómicas. Éstos implementan las reglas de negocio, y aceptan y devuelven estructuras de datos simples o complejos. Los componentes de negocio deben exponer funcionalidad de modo que sea independiente de los repositorios de datos y los servicios necesarios para realizar la tarea, y se deben componer de forma coherente desde el punto de vista del significado y transaccional.

Normalmente, la lógica de negocio evoluciona y aumenta, proporcionando funcionalidad y operaciones de mayor nivel que encapsulan la lógica preexistente. Si el proceso de negocio invoca a otros en el contexto de una transacción atómica, todos los procesos llamados deben garantizar que sus operaciones participan en la transacción existente de modo que las operaciones se deshagan en caso de que la lógica de negocio que realiza las llamadas se interrumpa. Si no puede implementar transacciones atómicas, se necesitará ofrecer procesos de compensación.

Algunas responsabilidades de los componentes de negocio incluyen:

  • Dependiendo de la arquitectura, permitir ser llamados desde las interfaces de servicio, flujos de negocio u otros componentes de negocio.
  • Validar entradas y salidas.
  • Exponer operaciones de compensación.
  • Dependiendo del diseño, realizar llamados a los componentes de la capa de acceso a datos, para obtener o actualizar los datos de la aplicación, o llamar servicios externos.
  • Llamar flujos de negocio u otros componentes de negocio

La siguiente figura muestra la interacción de un componente de negocios con los demás componentes de la arquitectura:

Diseño de flujos de negocio

Cuando los procesos empresariales requieren varios pasos o transacciones de ejecución larga, es necesario administrar el flujo de trabajo, controlando el estado de la conversación e intercambio de mensajes con diversos servicios según sea necesario. En la siguiente figura se muestra la interacción de un proceso orquestado de negocios, con las interfaces de servicios, los agentes de servicios y los componentes de negocios

 

Diseño de interfaces de servicio

En el caso que se desee exponer la funcionalidad de negocios como un servicio (siendo lo mas recomendado por permitir que el sistema desde su inicio sea integrable con otros), es necesario proporcionar un punto de entrada desacoplado de la implementación interna. Asimismo, puede que también necesite exponer funcionalidad similar a clientes diferentes con requisitos de autenticación, logging, transacciones o contratos de nivel de servicio (SLA) distintos.

Puede proporcionar un punto de entrada al servicio creando una interfaz de servicios. Una interfaz de servicios es una entidad de software implementada normalmente como una fachada que controla los servicios de mapeo y transformación para permitir la comunicación con un servicio y aplica un proceso y una política de comunicación.

Una interfaz de servicios expone métodos, a los que se puede llamar de forma individual o en una secuencia específica para formar una conversación que implemente una tarea de negocios. Se recomienda, que el mecanismo de comunicación con la interfaz de servicio implemente una conversación basada en mensajes (ej. SOAP o MSMQ), en lugar de una basada en RPC (DCOM). De esta manera se logra un desacople con los clientes. Se debe tener en cuenta a la hora de definir estos protocolos, los requerimientos de interoperabilidad con otras plataformas, la seguridad y sincronía de la comunicación. Los requisitos de formato de comunicación, esquema de datos, seguridad y proceso necesarios se determinan como parte de un contrato publicado por el servicio.

Este contrato proporciona la información que necesitan los clientes para localizar y comunicarse con la interfaz de servicios. La siguiente figura muestra como es visto un servicio en un entorno empresarial

Las siguientes son las principales responsabilidades de una interfaz de servicios:

  • Exponer la lógica de negocios a la capa de presentación, o servicios externos
  • Servir como raíz de las transacciones atómicas que envuelven las operaciones de negocio.
  • Servir como punto de captura y registro (logging) por defecto de cualquier excepción que haya surgido durante el llamado a los demás componentes de la cada de negocios y acceso a datos.
  • Implementar los controles de seguridad requeridos por las llamadas (autenticación, autorización y auditoria).
  • Implementar funciones de cache de datos con frecuente consulta.

 Si se necesita crear un sistema que pueda ser invocado a través de mecanismos (protocolos) diferentes, se debe agregar una fachada entre la lógica de negocios y la interfaz de servicios. Al implementar esta fachada, se puede consolidar el código relacionado con las políticas (como la autorización, la auditoría y las validaciones, entre otros) de modo que se pueda utilizar por parte de varias interfaces de servicios que traten con diversos canales.

Esta fachada ofrece una mayor facilidad de mantenimiento debido a que aísla los cambios en los mecanismos de comunicación de la implementación de los componentes empresariales, tal como se muestra en la siguiente figura de ejemplo.

Tomado con fines Educativos de la Guia de Patrones, Practicas y Arquitectura .NET, Autores:  Ernesto Marquina, Jose David Parra.  Microsoft Services.

Autor: arevalomaria

Ingeniero de Sistemas, Magister en Gerencia y Tecnologia de la Informacion, Certificaciones: ITIL V3, CCNA, Microsoft Certified Professional.

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s