Entity Framework e os recursos solicitados…

Bem, não sou usuário do Entity Framework. Mas chamou-me a atenção um post que vi no InfoQ (leia mais), sobre alguns recursos que usuários tem pedido para a Microsoft. Alguns desses pedidos a Microsoft já está implementando, outros, vão pra lista de espera…  Alguns desses recursos recursos, pra mim, são tão óbvios que me deixaram surpresos, vejam:

Melhorar a geração de SQL– O pessoal reclamou o seguinte: “tenho visto sentenças SQL simples, com 4 ou 5 joins que resultam o retorno de quase 5000 registros, enquanto que uma sentença SQL equivalente, escrita manualmente, retorna cerca de 15”. Bem, pra mim isso é um problema sério, tanto que a MS vai liberar uma correção parcial no .NET 4.5. Aí fica a pergunta… seu cliente pode esperar até lá? Você vai ter que ficar fazendo “gambiarra” até lá?

Atualizações em lote – Pra quem não conhece, isso é o seguinte, é você poder alterar vários objetos, criando, alterando, excluindo, e isso tudo ir de uma vez pro banco de dados, como uma operação só. Bem, gente, isso é essencial em sistemas sérios, pois traz melhoria de desempenho, já que quanto menos você vai pro banco de dados, mais você tempo você ganha, então ir “de uma vez”, é desejável. Agora vem um detalhe, a Microsoft está “analisando” essa solicitação… Jesus…

Suporte a segundo nível de cache – Outra coisa que é importante para sistemas de alto desempenho, de muitos usuários. A ideia aqui é ter um servidor de cache, que minimiza novamente o acesso ao banco de dados… e mais uma vez a Microsoft está “analisando”. O EF possui o chamado primeiro nível de cache, que é o cache da sessão local da máquina, se um objeto já está na sessão que está aberta, ele não vai até o banco de dados… mas o melhor é ter um segundo nível, centralizado para todas as máquinas em uso.

Suporte para múltiplos bancos – A solução existente hoje no EF é uma gambiarra e a Microsoft também está “analisando”. A ideia do recurso é poder dividir seu modelo de classes em mais de um banco de dados, isso é necessário em grandes sistemas, para balancear carga…

Incluir no designer suporte ao formato GUID nas Entity Keys – Aqui vou mais longe… preciso mesmo de um designer????

Migração de Schemas – O básico já deveria ser feito, localmente na maquina de desenvolvimento, deveria ter alguma opção para atualização do banco de dados mediante alterações feitas no modelo de classes. Isso acho que já, a ideia aqui vai além, é que isso seja feito no usuário final também. Gostei dessa sugestão e a Microsoft está vendo como melhorar isso.

E ainda não tem suporte a Enums!!!!!

Meus comentários…

Apesar se já ter comentado algo, quero deixar aqui minha visão pessoal e geral disso. Parece que recursos que realmente fazem a diferença em um grande sistema, não estão presentes no EF. Não queria fazer isso, mas vou fazer, um pequeno comparativo com o NHibernate:

Melhorar a geração de SQL – Se você acha que o SQL não está otimizado, no NH podemos nós mesmo escrever o SQL pra ele executar 🙂 fácil não?! Esta é a  flexibilização que todo usuário de ORM quer!

Atualizações em lote – Temos isso no NH, e se você precisar fazer algo como um ETL, temos a StatelessSession 🙂

Suporte a segundo nível de cache – Disponível também, e não apenas para um provedor de cache, mas vários. Isso é muito utilizado em aplicativos WEB.

Suporte para múltiplos bancos – Também é possível com NH, inclusive existe uma implementação de Sharding, que permite um crescimento horizontal e não apenas vertical.

Incluir no designer suporte ao formato GUID nas Entity Keys – Bem, por padrão o NH não tem designer. Uso NH há bastante tempo (uns 4 anos) e nunca senti falta de um designer. Se preciso de designer, aí utilizo um pra modelar minhas classes, e como o NH agora tem um mapeamento “automático”, é bem produtivo.

Migração de Schemas – Temos o básico, que é a atualização do banco mediante a atualização da estrutura de classes, mas é um utilitário para o desenvolvedor, não para o cliente final. Se a Microsoft fizer algo que englobe mudar não somente a estrutura das tabelas (que é o básico), mas permitir meios para adequar o conteúdo das mesmas vai ser legal.

Suporte a mapeamento de Enums – Bem, sem comentários né… tão básico e está lá no NH, podendo ainda mapear um enum tanto para um int como para um string.

Abraço

Esse post foi publicado em Não categorizado e marcado , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s