Pregunta

Estoy jugando con la construcción de un BLL para mi aplicación. Por lo que he visto / leído, parece que el BLL debería estar apátrate. ¿No significa esto que todos los métodos BLL podrían ser estáticos? ¿O al menos solo necesitaría una instancia de cada clase BLL? Lo que me parece extraño por alguna razón, así que pensé que mejor vería que no estaba obteniendo el final equivocado del palo antes de profundizar demasiado en mi experimentación.

También creo que esto significa que los objetos BLL nunca deben contener datos, porque los datos representan el estado, por lo que para cada operación BLL invocada, cualquier datos que se necesiten deben ser requisitos (o obtenidos de caché) y luego descartados. ¿Eso suena bien?

Gracias.

¿Fue útil?

Solución

En teoría, sí, un BLL sin estado puede significar que todos los métodos pueden ser estáticos.

Sin embargo, hay algunas consideraciones que pueden verlo hacia el uso de instancias de objetos BLL en lugar de estáticos.

  1. Los métodos estáticos introducen un acoplamiento estricto entre las clases y le impiden usar interfaces EG para unir dependencias libremente. El uso de interfaces mejoran la capacidad de prueba del BLL, ya que ahora se puede burlarse al escribir pruebas unitarias para la capa de servicio. Si sus métodos BLL son estáticos, generalmente no podrá hacerlo sin 'soluciones' (por ejemplo, necesitaría TypeMock o Microsoft Fakes en un entorno .NET).

  2. En un método BLL complejo (por ejemplo, una lógica de transacciones grandes), es posible que desee refactorizar cada una de sus reglas comerciales en varios métodos discretos, y en la salida, posiblemente acumule todas las violaciones de validación y reglas en un solo resultado agregado que contiene todos violaciones. En este caso, puede ser engorroso deriva de la entidad / entidades para ser validadas y acumulando las violaciones de las reglas, y en su lugar elige el almacenamiento con estado en una instancia de clase. Una clase base o genérico para su instancia BLL puede ayudar aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top