Certificação Microsoft 70-487: Objetivo 1.1 – Choose data access technologies (Parte 1, ADO.NET)

EDIT: Essa é a parte 1 de três posts sobre o objetivo 1.1. Você pode conferir a parte 2 aqui (Entity Framework) e a parte 3 aqui (WCF Data Services).

O primeiro tópico da certificação Microsoft 70-487 é Accessing data. Você pode conferir todos os tópicos e seus objetivos aqui.

Vamos falar do primeiro objetivo, Choose data access technologies, que se trata de como escolher uma tecnologia de acesso a banco de dados baseado nos requisitos da aplicação.

As três opções que serão cobradas no exame são:

Farei um post para cada uma das opções, pois esse primeiro objetivo é bem extenso.

ADO.NET

ADO.NET é a tecnologia mais antiga das três e, portanto, considerada a mais madura e performática.

A primeira característica abordada no livro é a de que ADO.NET usa um modelo desconectado quanto a conexões no banco de dados. Ou seja, a cada comando (INSERT, UPDATE ou DELETE) ou query (SELECT), uma conexão é aberta e imediatamente fechada após o uso. Isso é uma vantagem pois evita todos os erros provenientes de se manter longas conexões abertas com o banco de dados, como processamento, rede e limite de conexões abertas ao mesmo tempo.

Outro ponto positivo é que ADO.NET é compatível com vários sistemas de banco de dados. No pacote System.Data, há classes específicas para alguns deles, como System.Data.SqlClient e System.Data.OracleClient, e também genéricas como System.Data.OleDb ou System.Data.Odbc.

Arquitetura

O .NET framework, no pacote System.Data, oferece várias classes apelidadas “data providers” que são designadas para lidar com as questões básicas de banco de dados, como fazer uma conexão, executar um comando e trabalhar com os dados que vieram do banco.

Nesse momento, o livro foca na diferença entre duas classes para obter dados: DataSet (ou DataAdapter) e DataReader. Note a diferença entre como as duas funcionam:

As principais vantagens do DataReader são:

  • Como internamente um DataAdapter usa um DataReader, o último tem melhor performance;
  • DataReader possui métodos assíncronos (BeginExecuteNonQuery, BeginExecuteReader, BeginExecuteXmlReader), enquanto DataAdapter não;
  • O método Fill de um DataAdapter, conforme mostrado acima, só popula DataSets e DataTables. Com DataReaders, trabalhar com objetos de negócio é mais fácil.

Já as vantagens do DataAdapter são:

  • É possível mapear os relacionamentos do banco de dados usando a propriedade Relations;
  • O método Fill lê todos os registros do comando de uma vez, quando no DataReader você deve iterar por todos os registros manualmente (while (reader.Read()) …);
  • DataSets são serializáveis. Eles podem ser carregados ou persistidos de um XML, por exemplo. Podem também ser salvos na Session ou em um ViewState (você não vai querer fazer isso).

Por Que ADO.NET?

No exame, muitas perguntas são do tipo “dada uma situação, escolha as tecnologias que seriam as mais apropriadas”. Às vezes é difícil identificar, mas o livro é bem focado e já apresenta as informações dessa forma. Vamos às vantagens de se utilizar ADO.NET:

  • Consistência: ADO.NET é a mais antiga e estável das opções disponíveis. Foi muito utilizada e testada.
  • Estabilidade em termos de evolução e qualidade. ADO.NET está bem estabelecida e é pouco provável que mude ou tenha novas features.
  • ADO.NET é fácil de entender. Sabendo o conceito de como funciona, não há muitos segredos. Por existir há muito tempo, há providers para quase todos os tipos de bancos de dados e uma documentação bem abrangente.
  • É possível utilizar ADO.NET com Azure SQL sem problema algum.

Fique ligado no próximo post, que será sobre a segunda opção de tecnologia para acesso à banco de dados: o Entity Framework.

Até mais!