Comunicación entre BLL y DAL

Configuración de la solución:

DAL (biblioteca de clases)BLL (biblioteca de clases)Común (biblioteca de clases (algunas funciones comunes: enumeraciones, registros, excepciones, ...))Aplicación1 (Aplicación de Windows)Aplicación2 (Aplicación de Windows)WebApp (aplicación web)...

Digamos que tengo unCliente entidad, que es:

una tabla en el servidor SQLuna tabla de datos del cliente en DALuna clase de cliente en BLLuna clase de cliente BLL en todas las aplicaciones

¿Qué tipo de objetos deben usar BLL y DAL para la comunicación?DataTable oList<Customer> (por ejemplo)? En el primer caso, la lógica BLL debe transformar el objeto Cliente en DataTable y enviarlo a DAL. En el segundo caso, la capa DAL debe tener en cuenta la clase del cliente, que está en la capa BLL. Pero originalmente DLL hace referencia a DAL y no al contrario ...

¿Debo poner todas las clases en un ensamblaje separado, al que hacen referencia todos los demás (Common, BusinessObjects, ...)? En este caso, podría usar la clase Customer en todos mis proyectos.

¿Debería incluso molestarme en separar DAL y BLL cuando lo sé, que solo un BLL usará mi DAL? En este caso, podría fusionarlos en un solo proyecto.

PD: estoy leyendo sobre DataTables y mucha gente dice que no deberíamos usarlos en absoluto. ¿Cuáles son las mejores opciones? Tal vez es hora de que aprenda algunas herramientas de mapeo ORM :)

Respuestas a la pregunta(4)

Su respuesta a la pregunta