Revista MSDN Magazine Edição 11 - Novidades em ADO.NET 2.0

Artigo Originalmente Publicado na MSDN Magazine Edição 11

Clique aqui para ler todos os artigos desta edição

 

Novidades em ADO.NET 2.0

por Joel Pereira

 

Na segunda parte deste artigo vamos ver as melhorias relacionadas com a integração do SQL Server 2005.  Na primeira parte (edição agosto/04) foram cobertas as funcionalidades gerais adicionadas ao ADO.NET 2.0.

Este artigo basea-se na versão Beta 1 do .NET Framework 2.0, lançada no segundo semestre de 2004 e disponível para download através do link:  http://lab.msdn.microsoft.com/vs2005/.

 

Integração com SQL Server 2005

Execução “verdadeiramente” assíncrona – Você precisa executar alguns comandos no banco de dados e ao mesmo tempo você não quer que sua aplicação pareça com o antigo Outlook, ou seja, que não responda aos comandos da interface gráfica até receber o resultado do banco de dados?  Além disso, você também não quer pagar o custo associado com a execução de múltiplas threads para cada requisição ao banco de dados, certo?  Pois bem, a resposta para você é: use a execução assíncrona do ADO.NET 2.0 que permite enviar comandos ao banco de dados e enquanto isso executar outras tarefas com a mesma thread.  É importante notar que esta funcionalidade é implementada no ADO.NET 2.0 independentemente da versão do servidor Sql Server, ou seja, você pode executar comandos assíncronos no Sql Server 7, 2000 e 2005.  Interessado em mais detalhes?  Procure por BeginExecuteReader na documentação do ADO.NET 2.0.

MARS – Na minha opinião esta é a funcionalidade mais desejada de qualquer desenvolvedor que utiliza as versões anteriores ao ADO.NET 2.0.  MARS significa múltiplos resultados ativos(Multiple Active Result-Sets) e resolve o seguinte problema. É muito comum recuperar os dados de uma tabela, e enquanto o programa processa o resultado, para cada registro lido deve-se executar um outro comando no mesmo banco de dados.  Nas versões anteriores ao ADO.NET 2.0, o desenvolvedor é obrigado a abrir uma nova conexão ao banco de dados, e obviamente se preocupar em fechá-la quando apropriado.  O MARS possibilita que o desenvolvedor utilize a mesma conexão associada com o resultado que esta sendo lido, para executar um novo comando que produzirá um segundo resultado que será lido em paralelo ao primeiro.  Em termos mais técnico, o MARS permite que você tenha dois ou mais objetos do tipo SqlDataReader ativos, associados à mesma conexão.

Notificações e SqlDependency – SQL Server 2005 suporta a notificações de aplicações que desejam saber quando um resultado de uma determinada consulta é alterado, seja pela própria aplicação ou por outra qualquer.  Isso significa que sua aplicação pode ser notificada quando o resultado de um comando for diferente daquele que seria produzido caso o comando fosse executado novamente. Um cenário muito comum que requer este tipo de funcionalidade é no cachê de um Web Site, onde informações de um banco de dados são armazenadas localmente e devem ser invalidadas ou recuperadas novamente quando são atualizadas no banco de dados.

UDT (User-defined types) – Os tipos definidos pelo usuário (UDT) é uma das grandes adições ao Sql Server 2005.  Esta funcionalidade permite estender o sistema de tipos do banco de dados e fazer com que objetos de código gerenciável sejam armazenados no banco de dados.  ADO.NET 2.0 permite que você trabalhe com os objetos armazenados no banco de dados de forma transparente; você simplesmente recebe um objeto construído e pronto para ser utilizado como resultado de um comando no banco de dados.

Novos tipos de dados (Xml, max) – Assim como a funcionalidade UDT, o suporte nativo ao formato Xml e o modificador max estão presentes somente no Sql Server 2005.  Para integrar de forma transparente o formato Xml no servidor e no cliente, ADO.NET 2.0 usa as classes implementadas por System.Xml para manipular Xml.  Esta funcionalidade é tão ampla e complexa que seria necessário um artigo inteiro para descrevê-la.  Sql Server 2005 também introduz o modificador ‘max’ para os tipos varchar, nvarchar e varbinary.  Este modificador permite armazenar um grande volume de dados numa única coluna.  Se você é como eu, que achava muito irritante os limites impostos nas versões anteriores do Sql Server para uma coluna nvarchar, esta adição lhe deixa muito satisfeito com o novo produto.

Promotable Transactions  – O .Net Framework 2.0 inclui uma nova infra-estrutura de transações, localizada no namespace System.Transaction, e o ADO.NET 2.0 é integrado a esta nova infra-estrutura.  Uma das adições mais importantes nesta área são as transações promovíveis.  Este é o cenário onde este novo  tipo de transação de aplica. Uma aplicação atualiza múltiplas bases de dados e, portanto utilizam-se transações distribuídas para se assegurar que ou todas as bases de dados são atualizadas com o novo estado, ou nenhuma é.  Só que as regras de negócio apresentam certas condições que devem ser verdadeiras para que as múltiplas bases de dados sejam envolvidas na transação, ou seja, muitas das operações são realizadas apenas contra uma única base de dados.  Entretanto a transação sempre é distribuída, pois é impossível determinar o tipo de transação antes de começar a operação.  Neste caso todas as transações pagam o custo em termos de desempenho, das transações distribuídas, mesmo que só esteja acessando um único banco de dados. As transações promovíveis permitem que o usuário comece a operação de atualização com um único banco de dados e se eventualmente, em função do processamento das regras de negócio, for preciso adicionar novas bases de dados, a transação será automaticamente promovida à transação distribuída.  O resultado é um ganho considerável no desempenho e utilização dos recursos de rede. A transação promovível está disponível apenas quando ADO.NET 2.0 se conecta ao Sql Server 2005.

Conclusão

A lista acima descreve apenas as funcionalidades mais importantes do ADO.NET 2.0.  Para obter a lista completa de novidades da integração com o Sql Server 2005 bem como as melhorias gerais publicadas na edição anterior, acesse http://www.joelpereira.com.

Artigos relacionados