ADO .NET - Recomendações para estratégia de acesso a dados


Se você esta iniciando o aprendizado ou migrando para a plataforma .NET pode estar confuso quando o assunto é acesso a dados. Motivos não faltam, afinal você tem a sua disposição diversas opções na plataforma .NET para realizar acesso a dados com classes e métodos distintos: DataSets, DataReaders, XML, TableAdapters, DataAdapter, Command, etc.

Diante de tantas opções, a dúvida em qual delas é a melhor escolha para a sua aplicação, é algo comum para os iniciantes e mesmo para quem já usa o plataforma .NET há algum tempo. Afinal o que seria mais recomendado para uma aplicação WIndows Forms ? DataSet ou DataRead ? E para uma aplicação Web que usa os Web Forms ?

Neste artigo pretendo apresentar as recomendações para estratégia de acesso a dados sugeridas pela Microsoft no artigo: http://msdn2.microsoft.com/en-us/library/8fxztkff(VS.71).aspx , e, assim, lançar um pouco de luz sobre este tema com o objetivo de ajudar a esclarecer(não esgotar) o assunto. Vamos lá...

Um pouco sobre ADO .NET

O modelo de acesso a dados usado pela ADO .NET pode ser resumido da seguinte forma:

  1. Você abre uma conexão;
  2. Obtêm os dados ou realiza uma operação;
  3. Você fecha a conexão;

Muito simples não é mesmo ? Para trabalhar com este modelo a ADO .NET fornece duas estratégias básicas:

  1. Armazenar os dados em um dataset , que é um cache de dados em memória de registros nos quais você pode trabalhar enquanto esta desconectado da fonte de dados. Para usar um dataset você cria uma instância do mesmo e usa um data adapter ou TableAdapter para preencher o dataset a partir da fonte de dados. Feito isso você pode trabalhar com os dados no dataset , realizar operações , exibir os dados em formulários , etc.
  2. Realizar operações diretamente no banco de dados através de comandos SQL ou stored procedures. Este modelo exige que você esteja conectado a fonte de dados e utilize o objeto Command incluindo uma instrução SQL ou uma referência a uma stored procedure para em seguida executar o comando e realizar a operação desejada. (Os comando de dados ADO.NET (data commands) permitem a execução de comandos diretamente contra uma base de dados sem necessitar de um dataset ou de um data adapter.)
Nota: O objeto DataReader  é usado somente para leitura de dados de forma conectada e percorre os dados até o fim em um único sentido (forward-only) e no modo somente leitura (read-only). O DataReader consome menos recursos do que o dataset e oferece uma acesso mais rápido que o objeto dataset mas não pode efetuar alterações na fonte de dados original, sendo usado para acessar os dados de forma rápida e para apresentá-los sempre atualizados. 

Vantagens do modelo DataSet:

Vantagens do modelo de acesso direto:

Qual modelo devemos usar ? Em quais circunstâncias um modelo é mais indicado que o outro ?

Nota: De forma geral a recomendação para acesso a dados tem a seguinte premissa: Abrir a conexão o mais tarde e fechar o mais cedo possível.

1- Windows Forms

Em aplicações WIndows Forms você, quase sempre, deve usar um dataset:

Especificamente você deve usar os datasets nos seguintes cenários:

Você deve usar uma consulta TableAdatper ou comando de dados nos seguintes cenários:

DDL - Data Definition Language (DDL) - São usados para definir o esquema e estrutura do banco de dados, exemplos:

  • CREATE - para criar objetos em um banco de dados;
  • ALTER - alterar a estrutura de um banco de dados;
  • DROP - deletar objetos de um banco de dados;
  • RENAME - renomear um objeto;

2- Web Forms

Em aplicações Web Forms você deve usar os comandos de dados para realizar operações e um DataReader para exibição de dados:

Especificamente você deve usar os datasets nos seguintes cenários:

3- XML Web Services

Como XML Web Services são aplicações Web ASP .NET você deve usar o mesmo modelo que o indicado para as páginas Web Forms:

Considere a utilização de um dataset se:

Use os comandos de dados e/ou um DataReader nos seguintes cenários:

Uma palavra final sobre a utilização de acesso a dados com Crystal Reports

A escolha do modo de acesso a dados com relatórios Crystal Reports em sua aplicação irá afetar a atualização do relatório e a sua distribuição.

  1. Obter os dados de uma fonte conectada e os colocar diretamente no relatório : Usando este método os relatórios será afetados por quaisquer alterações irão exigir uma novo deploy do relatório;

  2. Definir as tabelas e os campos usados no relatório, criar um dataset e passar para o relatório: Este método requer uma maior trabalho de configuração, definição de conexão com o banco de dados, execução de consultas contra o banco de dados e utilização do método SetDataSource;        

A palavra final quanto a qual modelo usar envolve a escolha do visualizador(viewer):

Este é um resumo básico que não contempla os novos recursos da ADO.NET Entity Framework e do LINQ.

Estamos conversados...

Referências:


José Carlos Macoratti