He escuchado a la gente hablar mucho sobre lógica de negocios en el trabajo y en línea, y he leído varias preguntas en este sitio al respecto, pero el término aún no tiene mucho sentido para mí. Por ejemplo, aquí hay algunas declaraciones (parafraseadas) que a menudo veo:
"La lógica empresarial es la parte de su programa que codifica las reglas comerciales reales". La mayoría de las definiciones que he leído son circulares como esta.
"La lógica de negocios es todo único para su aplicación particular". No veo cómo esto es diferente de "su aplicación particular no es más que lógica de negocios", a menos que accidentalmente reinventamos un montón de ruedas para las que podríamos haber utilizado software de terceros. De ahí el título de la pregunta.
"Debe haber una capa de lógica de negocios encima de su capa de acceso a datos y debajo de su capa de GUI". En el código que escribo, los accesos a la base de datos deben saber a qué datos se supone que deben acceder, y el código de la interfaz de usuario tiene que saber mucho sobre lo que se muestra para mostrarlo correctamente, y no hay nada que hacer realmente en el medio esos dos lugares además de pasar blobs de datos entre el cliente y el servidor. Entonces, ¿qué se supone que debe entrar en una capa de lógica de negocios?
"La lógica de negocios debe estar separada de la lógica de presentación". La mayoría de las solicitudes de funciones que recibimos son para cambiar la lógica de presentación por razones comerciales. Si una de las reglas comerciales es mostrar los precios de los bonos del gobierno de los EE. UU. En notación 32 por defecto (al tiempo que proporciona una IU para que el usuario configure eso), la lógica de presentación necesita al menos saber que esta regla existe, si no implementarla completamente. Además, parece que una parte importante del diseño de UX es ayudar al usuario a comprender las reglas comerciales que nuestro software está tratando de implementar.
¿Es posible que realmente esté en un equipo que solo hace lógica de negocios, y toda la lógica no comercial está siendo realizada por otros equipos? ¿O todo el concepto de "lógica de negocios" como una entidad separada solo es viable para ciertas aplicaciones o arquitecturas?
Para ayudar a concretar las respuestas: imagina que tienes que volver a implementar la aplicación Domino's Pizza. ¿Cuál es la lógica comercial y cuál es la lógica no comercial de esa aplicación? ¿Y cómo sería posible poner esa lógica comercial de pedidos de pizza en su propia "capa" de código, sin que la mayor parte de la información de la pizza se filtre en las capas de acceso a datos y presentación?
Actualización: Llegué a la conclusión de que mi equipo probablemente está haciendo un 90% de código de interfaz de usuario y la mayoría, pero no todo, de lo que llamarías lógica empresarial proviene de otros equipos o empresas. Básicamente, nuestra aplicación es para monitoreardatos financieros, y casi todas las características son formas para que el usuario personalice qué datos ven y cómo los ven. No se realiza ninguna compra o venta (aunque integramos un poco con otras aplicaciones de nuestra empresa que lo hacen), y los datos reales son suministrados por muchas fuentes externas. Pero sí permitimos que los usuarios hagan cosas como enviar copias de sus "monitores" a otros usuarios, por lo que los detalles de cómo los manejamos probablemente califiquen como lógica comercial. En realidad, hay una aplicación móvil que actualmente habla con algunos de nuestros códigos de back-end, y sé exactamente qué parte de nuestro código de interfaz me gustaría que compartiera con nuestra interfaz de usuario en un mundo ideal (básicamente la M en nuestro cuasi-MVC) Supongo que ese es el BLL para nosotros.
Estoy aceptando la respuesta del usuario 61852 ya que me dio una comprensión mucho más concreta de lo que hace y no hace referencia la "lógica de negocios".
Respuestas:
Te daré algunos consejos sobre las aplicaciones CRUD , ya que no tengo mucha experiencia en juegos o aplicaciones gráficamente intensivas:
fuente
Parece que la mayor parte de su trabajo puede estar en la capa de la interfaz de usuario. Cambiar el formato de visualización por razones comerciales no implica ninguna lógica comercial. El cambio es un cambio en la lógica de la vista.
Ser capaz de cambiar el formato implica cierta lógica empresarial que posiblemente implique la persistencia de la preferencia.
La persistencia del formato a una cookie también se podría implementar en la capa de vista.
Sin embargo, esto podría implementarse de manera MVC. (Algunos modelos implementan la vista como su propio MVC capaz de manejar preferencias).
Hacer una suposición educada sobre su aplicación.
La lógica de negocios maneja cosas como:
Si esto se hace correctamente, debería ser posible proporcionar múltiples componentes de vista sin cambiar el modelo o la lógica empresarial. Por ejemplo, si el diseño actual es un sitio web, un nuevo servidor de vista para una aplicación de iPhone o Android usaría el modelo y la lógica comercial existentes. Estos pueden introducir nuevas funciones comerciales para proporcionar notificaciones push cuando se completa un pedido, lo que puede requerir cambios en varias capas.
Este desglose permite la separación de las preocupaciones.
fuente