Uma das dúvidas quando se está planejamento a arquitetura de um sistema multicamadas feito em .NET é sobre como fazer a comunicação entre as camadas da aplicação: utilizar DataSet ou desenvolver classes customizadas? A resposta para esta pergunta - e para todas as outras polêmicas como esta - é…depende.

Ambas abordagens tem suas vantagens e desvantagens: enquanto o DataSet pode ser bom pois já traz uma série de características prontas que podem nos poupar tempo, ele também é mais “pesado” já que possui muita coisa que talvez não iremos utilizar. Já a utilização de classes de negócios customizadas traz um maior controle sobre nossa arquitetura, já que podemos otimizá-las de acordo com nossas necessidades, mas o que num primeiro momento pode ser uma vantagem pode se tornar uma desvantagem, já que teremos que desenvolver muita coisa do zero, o que pode consumir um tempo grande do projeto. Outra alternativa que também pode ser considerada é a utilização de DataSet Tipados, que entre suas vantagens está o fato de ser fortemente tipado (ao contrário do DataSet “puro”), mas que também está longe de ser a solução de todos os nossos problemas.

Com o objetivo de ajudar a fazer uma escolha tão complexa quanto essa, sugiro a leitura do artigo DataSets vs. Collections do mestre Dino Esposito, no qual ele analisa cada caso e explica em qual situação utilizar cada uma das opções. Do artigo, chamo a atenção para uma tabela comparativa entre as várias possibilidades.

E a seguir alguns outros artigos que podem ajudar a decidir qual o melhor para o seu caso (percebam o quanto o assunto é polêmico):

On the Way to Mastering ASP.NET: Introducing Custom Entity Classes
Poor MSDN article on Custom Business Entities and DataSets
Typed DataSets and Business Entities: A Compromise (Part 1)
Typed DataSets and Business Entities: A Compromise (Part 2)
Typed DataSets and Business Entities: A Compromise (Part 3)

Ricardo Oneda.