En MVC, ¿qué se conoce como lógica empresarial?

He tenido esta misma discusión con los desarrolladores en el pasado.

En cualquier sistema, ya sea una aplicación WCF o una aplicación web, tiene su dominio comercial (Cliente, Pedido, etc.). Estos objetos tienen propiedades y métodos simples.

Esas propiedades y métodos deben contener lógica empresarial y no solo datos. Si solo contienen datos contenidos en propiedades y son sus objetos principales para cualquier sistema, esto se considera un antipatrón según Martin Fowler (consulte bliki: AnemicDomainModel).

Los objetos comerciales en su sistema están destinados a contener datos y comportamiento, no solo datos.

Por ejemplo, supongamos que su objeto Cliente tiene las siguientes propiedades: Nombre, Apellido, Registrado, Último inicio de sesión y Pedidos.

Si solo tuviera estas propiedades y nada más, esto se consideraría anémico.

Ahora supongamos que tiene una página web que valida si un cliente es leal o no, tendría la siguiente lógica en la página.

if (Orders.Count> 10) {
DisplayLoyalCustomer ();
}

Si esto estaba en una página web, esto se considera lógica de negocios.

Tendría más sentido agregar esto como método en el objeto Cliente.

// En la página web
If (customer.IsLoyal ()) {
DisplayLoyalCustomer ();
}

// Objeto de cliente
public bool IsLoyal (int orderCount = 10) {
return Orders.Count ()> = orderCount;
}

¿Por qué harías esto? Dos razones:

  1. Hace que su interfaz de usuario sea más limpia para leer, casi como una “oración de programador”.
  2. Puede reutilizar ese código para escalar su aplicación. Si desea crear un servicio web en lugar de una página web y la lógica de negocios estaba en la interfaz de usuario, duplicará el código en la interfaz de usuario y en el servicio web. Es mejor colocar ese código en sus objetos.

La lógica de negocios es lo que le da a sus objetos comportamiento y decisiones para actuar sobre sus datos de objetos con objetivos comerciales específicos en mente.

En nuestro caso anterior, la lógica de negocios sería el método IsLoyal () (por supuesto). Toda la lógica para determinar si ese cliente es leal o no está autocontenido en ese objeto.

Espero que esto haya ayudado.

(¡No te olvides de votar!)

La lógica empresarial son las reglas y restricciones del mundo real del dominio comercial con el que se ocupa su aplicación; reglas que debe implementar y aplicar en todas las transacciones de su aplicación que leen, crean, modifican y eliminan datos.

Supongamos que está creando una aplicación bancaria demasiado simplificada donde un usuario tiene una cuenta.

Una cuenta tiene un saldo y puede realizar depósitos, retiros y transferencias entre las cuentas de los usuarios.

Existen reglas comerciales del mundo real que controlan lo que se puede y no se puede hacer.

Si transfiere 100US $ de la cuenta del Usuario A a la cuenta del Usuario B, la lógica empresarial de su aplicación debe asegurarse de que se cumplan todas estas condiciones:

  1. El usuario A debe tener 100US $ de crédito disponibles en el saldo de su cuenta.
  2. Cuando el usuario B recibe la transferencia, se debitarán 100 US $ de la cuenta del usuario A
  3. Cuando el usuario B recibe la transferencia, se abonarán 100 $ a la cuenta del usuario B

Este es un ejemplo demasiado simplificado, pero creo que puedes entender la idea.

PD: No es un concepto exclusivo de MVC, tiene lógica de negocios en la mayoría de los software, si no en todos, sin tener en cuenta su diseño arquitectónico.

La lógica empresarial es un mito.

Ten paciencia conmigo aquí.

Cuando los analistas presentan un conjunto de “requisitos”, creen que han capturado la “lógica empresarial” del sistema. Pero ellos junto con el equipo de desarrollo y dice:

  • Hmmm … ¿Qué pasa si dos personas están trabajando con esa cosa al mismo tiempo? ¿Eso está permitido? Si no está permitido, ¿queremos tomar un bloqueo pesimista o lo hacemos con optimismo? ¿Cómo lidiamos con el conflicto en el caso de un bloqueo optimista? ¿Cuánto tiempo le permitimos a un usuario mantener un bloqueo pesimista antes de asumir que se ha olvidado del trabajo y liberar el bloqueo? ¿Qué pasa si alguien toma un candado y se va de vacaciones? ¿Necesitamos permitir a los usuarios privilegiados liberar el bloqueo?
  • ¿Qué sucede incluso si falla una red aquí? ¿Qué debemos mostrar al usuario? ¿Deben perder su trabajo o lo mantenemos localmente hasta más tarde? ¿Cómo lidiamos con los conflictos que ocurrirán (ver ‘ediciones concurrentes’ más arriba)
  • Esta operación es potencialmente larga. ¿Deberíamos generar un proceso asincrónico para que el usuario no se bloquee hasta que se complete? Si lo hacemos, ¿cómo le damos retroalimentación al usuario mientras tanto? ¿Qué pasa si falla? ¿Cómo evitamos que los usuarios aprovechen ese cambio antes de que se complete realmente (¿los detenemos?)
  • Nos han dicho que la organización requiere que agotemos el sistema en un grupo de cuatro nodos distribuidos en 2 ubicaciones para permitir un acceso global rápido y resistencia. Pero esto implica una divergencia potencial en lo que cada nodo cree que es el estado actual. Analicemos las implicaciones de esto.
  • Etc.

Ahora, en este punto, muchos analistas dirán ‘todos estos son problemas técnicos. No me importa cómo los resuelves. Ese es el problema de TI.

Pero todos estos problemas son problemas de negocios porque el conjunto de soluciones elegidas afecta a los usuarios del sistema de diferentes maneras. Por lo tanto, son espacios implícitos en la intersección de la lógica empresarial y la posibilidad técnica dentro de las limitaciones de una cultura organizacional.

Estas cosas son lógica de negocios, independientemente de la cantidad de personas que deseen. De hecho, son las partes más interesantes, frustrantes y, a menudo, críticas de la lógica empresarial, y su frecuente omisión de consideración explica mucho sobre el estado de la entrega de software.

La lógica empresarial es la programación que mantiene la comunicación entre una interfaz de cliente final y una base de datos. Los segmentos fundamentales de la lógica empresarial son los estándares empresariales y los procesos de trabajo. Un estándar de negocios representa un sistema particular; un proceso de trabajo comprende las tareas, los pasos del procedimiento, la información requerida y la información de salida, y las herramientas requeridas para cada progresión de esa técnica. La lógica empresarial representa la agrupación de operaciones relacionadas con la información en una base de datos para cumplir el principio empresarial.

La lógica de negocios en teoría involucraba el nivel medio de una arquitectura de 3 niveles.

CMARIX TechnoLabs es una empresa líder de outsourcing tecnológico de la India. Con un equipo interno de más de 80 expertos, hemos diseñado más de 900 aplicaciones web personalizadas y más de 270 aplicaciones móviles personalizadas en diferentes mercados verticales.

En caso de que necesite ayuda, no dude en ponerse en contacto con Inquiry – CMARIX