msdn12_capa.JPG

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

Coluna: Direto da Fonte

Novidades em ADO.NET 2.0

por Joel Pereira

Na última parte deste artigo vamos ver as melhorias relacionadas com o componente DataSet.  Na primeira parte foram cobertas as funcionalidades gerais adicionadas ao ADO.NET 2.0 e na segunda as funcionalidades relacionadas com a integração do Sql Server 2005. 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 em  http://lab.msdn.microsoft.com/vs2005/.

 

DataSet e DataTable

Serialização no formato binário – Este novo formato para serialização de objetos DataSet resulta num grande ganho de desempenho tanto na utilização da CPU quanto da memória RAM. Se você utiliza objetos DataSet ou DataTable em cenários distribuídos, esta otimização sozinha justifica a realização de um teste da sua aplicação com ADO.NET 2.0.

Objetos DataTable  ADO.NET 2.0 adicionou uma série de métodos antes disponíveis apenas na classe DataSet, para a classe DataTable, além disso passou a permitir a serialização de objetos DataTable desassociados de um DataSet. Esta funcionalidade resolve o seguinte problema: caso um WebService precisasse retornar um objeto DataTable, era preciso criar um objeto DataSet com uma única tabela. Agora o objeto DataTable sozinho pode ser serializado e retornado em qualquer cenário que necessite a serialização de objetos. Outra funcionalidade adicionada ao DataTable é a capacidade de se criar um objeto DataTable a partir de um objeto DataView.

Nome das tabelas – Objetos DataSet podem suportar múltiplas tabelas com o mesmo nome, pois uma nova propriedade, chamada Namespace, foi adicionada ao DataSet e é utilizada na resolução dos nomes das tabelas.

Melhorias na inferencia – O componente responsável pela inferência de esquemas foi aprimorado para inferir os tipos dos dados quando certas informações estão disponíveis, além de estar significantemente mais rápido.

Atualizações mais rápidas – Com o novo componente responsável pela indexação de objetos DataSet e DataTable, as atualizações e inserções são processadas muito mais rápido em objetos que possuam chave primária ou DataViews.

DataTableReader  – Esta nova classe permite que os dados armazenados num objeto DataTable sejam disponibilizados através da interface IDataReader. Um cenário típico onde isso é necessário é quando uma função processa um conjunto de registros através da interface IDataReader, e o código cliente já possui os dados na memória local, armazenados num objeto DataTable. Neste caso, o código cliente cria um DataTableReader e passa-o para a função desejada.

DataTable.Load() – O novo método Load() é uma alternativa ao uso de adaptadores (ex. SqlDataAdapter.Fill()) para carregar dados num objeto DataTable. Você pode utilizá-lo para carregar dados a partir de um objeto DataReader direto para um objeto DataTable.

Estado do registro – Dois métodos foram adicionados á classe DataRow que lhe permitem controlar explicitamente o estado dos registros de um objeto DataSet e DataTable. São eles SetAdded() e SetModified().

Suporte ao tipo XML – Sql Server 2005 adicionou suporte nativo as colunas do tipo XML. As classes DataSet e DataAdapter suportam a transferência de dados XML vindos do banco de dados e utilizam a classe XPathDocument como o componente para armazenamento local (off line cache).

Suporte à UDT – Outra funcionalidade adicionada em Sql Server 2005 são os user-defined types, ou UDTs. Além de suportar as UDTs como tipos de colunas num objeto DataTable, foram disponibilizadas interfaces para o controle de versão dos objetos armazenados, possibilitando a atualização destes objetos automaticamente.

 

Conclusão

Nesta série de artigos eu apresentei a maioria das novidades em ADO.NET 2.0, com exceção das funcionalidades relacionadas com duas APIs novas: Schema e Provider-independent.  Eu acredito que você tenha motivos suficientes para justificar um teste detalhado do ADO.NET 2.0 em sua empresa, e verificar por si mesmo os benefícios de produtividade e desempenho que ele disponibiliza.

Todas as funcionalidades mencionadas nesta série, bem como as APIs Schema e Provider-independent estão ou serão detalhadas nos artigos de Pablo Castro, PM do time ADO.NET, e demais  escritores no Data Access Center (http://msdn.microsoft.com/data/DataAccess/Whidbey/default.aspx). Para finalizar, gostaria de agradecer ao Pablo Castro por disponibilizar as especificações internas do seu time, as quais utilizei como base de conteúdo para a elaboração desta série.