Tipos que o DAL e o BLL devem passar

Apenas uma pergunta rápida. Em um ambiente de arquitetura em camadas com uma Business Logic Layer (BLL) e uma Data Access Layer (DAL), que tipos o DAL deve passar para o BLL?

Atualmente, nossas classes DAL produzem objetos DataTables e SQlDataReader (entre outros tipos de dados comuns). A conversão dos objetos para nossos tipos personalizados deve ser feita no DAL antes de passar para o BLL ou o DAL deve passar o tipo original e o BLL faz a conversão?

Estou tentando pensar em um cenário em que a camada DAL possa ser substituída por outra tecnologia no futuro. Nesse cenário, parece que o BLL deveria esperar o tipo de dados convertidos, de modo que, quando uma troca é feita, precisamos apenas garantir que nossos objetos sejam retornados?

Qualquer esclarecimento sobre isso ou materiais de leitura para esclarecer as coisas seria útil!

TIA

questionAnswers(1)

yourAnswerToTheQuestion