segunda-feira, 28 de junho de 2010

EnterpriseLibrary5DataAccessBlock-parte1

Pessoal como havia prometido começo hoje uma série de artigos falando das principais novidades da Enterprise Library 5.

Para quem não conhece a Enterprise Library, também conhecida como EntLib, é uma biblioteca de blocos de código com fins bem específicos e comuns a maioria das aplicações.

Enter eles podemos citar o Data Access e seus recursosde conectividade e abstração no acesso a bancos de dados encapsulando diversos recursos do ADO.NET, o Exception |Handling e seus diversos tratamentos para as exceções, Logging e seus diversos listeners que determinam como e onde o logo é armazenado, e varios outros como SEgurança, Criptografia, Validação de Dados, Injeção de Dependencia, Orientação a Aspecto, entre outros.

Como trabalho muito com aplicações de banco de dados, e acho um dos blocos mais simples de se trabalhar, decidi começar falando do Data Access. Para quem ainda não oconhece recomendo realizar os Hands On Labs.

O que vou falar aqui são das novidades da versão 5 apenas. E são elas:

Data Accessors;

Chamadas Assincronas ao Banco de Dados;

Os Data Accessors nos dão a possibilidade de transformar um ResultSet diretamente em uma lista genérica de objetos.

O que ele faz é mapear os campos do ResultSet diretamente para as propriedades do objeto.

Isto é muito útil quando temos aplicações legadas e ainda não estamos preparados para migra-las para um ORM, mas precisamos de produtividade na criação das consultas.

Mas se é legado, normalmente os nomes das colunas não tem nada haver com o nome da propriedade ceto? A resposta normalmente será sim. Ai não vai funcionar né? Ai é que você se engana.

Junto com os Data Acessors existem classes sensacionais utilizadas para dar suporte ao mapeamento dinamico de propriedades, até mesmo de tipos complexos como classes, para colunas do resultset.

É possível se especificar uma coluna ou uma função que via lambda expression permite se construir mapeamentos altamente sofisticados e versáteis.

Alias elesforam idealizadosexatamente para que você traga os dados odo banco, mas faça querys mais complexas em sua aplicação, ja que os dados ja estarão em memória e suas consultas serão absursamente mais rápidas.

Já as chamadas assincronas, também usadas pelos Accessors, são um recurso interessante para aumentar a escalabilidade de suas aplicações, porincipalmente aplicações data centricas que trabalham com milhares de registros.

O que le faz, caso suportado pelo banco de dados, e fazer a transferência dos registros de forma assincrona, de acordo com a necessidade da aplicações, permitindo assim uma maior otimização dos recursos, principalmente quando por exemplo, existe muita concorrência, processamentos massissos sobre os dados ou mesmo para que o usuário tenha um feedback mais rápido na User Interface.

Duas novas propriedades foram adicionadas aos objetos Database:

SupportAsynchronousExecute;

SupportDynamicPArameterDiscovery;

Ambas definem se a conexão aceita os devidos recursos.

No próximo post colocarei exemplos práticos de cada recurso.

quinta-feira, 24 de junho de 2010

Services.Restart()

Depoisdeumalongatemporadaforaretomoaquiminahsatividadesnestblog.

Durante os últimos meses venho estudando muito as novidades do Visual Studio 2010, .NET Framework 4, e atualmente a Enterprise Library 5.

Tentarei nas próximas semanas mante uma certa regularidade nas postagens para que não percamos o fio da miada ok?

Aproveitando este post quero falar de um recurso muito interessante do novo Data Access Block da EntLib 5, os Data Accessors.

Apesar de termos diversos Frameworks ORM, como o próprio Entity e o NHibernate, a Microsoft nos proveu uma ferramenta muito interessante para adiconarmos este recurso em aplicações mais simples, legados e casos emque o modelo relacional é tão complexo que nem Jesus nos ajudaria.

O que ele faz é praticamente mapear um resultset, IDataReader ou IDataSet, para uma lista de objetos.

Por default ele faz o mapeamento pelo nome das colunas, mas é possível se criar mecanismos custom de mapeamento e com isso preencher estruturas complexas de maneira relativamente simples.

Tenho utilizado este recurso em meu último projeto e o ganho de produtividade é absurda.

No próximo post coloco um passo-a-passo de por onde começar e algumas dicas de boas práticas quando trabalhamos com este bichinho.

Pra quem está curioso, recomendo a leitura do arquivo .CHM disponível no site da Enterprise Library, os Hands On e é lógico os blogs dos desenvolvedores.

Abraço!