Desenvolvimento - ASP. NET
Produtividade e Desempenho com Microsoft Enterprise Library
Há muito tempo temos visto um grande esforço da Microsoft em "pregar" a boa utilização da sua tecnologia Microsoft .Net. Uma das decisões acertadas neste sentido tem sido o suporte e incentivo a criação de Application Blocks através do Patterns & Practices Group.
por Wallace Pinto de OliveiraHá muito tempo temos visto um grande esforço da Microsoft em "pregar" a boa utilização da sua tecnologia Microsoft .Net. Uma das decisões acertadas neste sentido tem sido o suporte e incentivo a criação de Application Blocks através do Patterns & Practices Group, uma espécie de "Apache Group" do mundo .NET. Muitos destes Application Blocks tem servido como importante ferramenta na resolução de problemas complexos, como segurança, acesso a banco de dados, configuração etc.
Microsoft Enterprise Library
Por se tratarem de bibliotecas desenvolvidas por equipes distintas, e muitas vezes isoladas, estes Application Blocks ao mesmo tempo que ajudam também introduzem novos problemas no ambientes de desenvolvimento como, por exemplo, falta de padronização nas técnicas de modelagem, duplicidade de funcionalidades, etc. Com o objetivo de por fim a estes problemas e oferecer a comunidade de desenvolvedores .Net uma solução completa e coerente de bibliotecas, a Microsoft disponibilizou um grande pacote de Application Blocks denominado Microsoft Enterprise Library, contendo os seguintes componentes:
- Configuration Application Block: oferece ferramentas para o gerenciamento de configurações em uma aplicação.
- Caching Application Block: permite melhor desempenho através da criação de cache de dados;
- Data Access Application Block: é com certeza um dos principais Application Blocks disponibilizados. Possui um conjunto de rotinas que facilitam muito a vida do desenvolvedor na hora de executar comandos SQL. Ao contrário do seu antecessor, possui acesso pronto a SQL Server e Oracle e grande flexibilidade para que o desenvolvedor incorpore outros SGBD.
- Cryptography Application Block: permite ao desenvolvedor incluir funcionalidades de criptografia e hashing em suas aplicações;
- Exception Handling Application Block: permite a criação de uma política consistente de tratamento de exceções;
- Logging and Instrumentation Application Block: permite ao desenvolvedor incorporar, de forma flexível, recursos de trace de mensagens em suas aplicações;
- Security Application Block: incorpora recursos de autenticação e autorização de usuários (controle de acesso). Este Application Block já vem com tabelas (scripts a serem executados em um banco SQL Server) e uma ferramenta visual prontas para implementação de um sistema de segurança. Também possui flexibilidade suficiente para obter usuários e perfis de acesso a partir de sistemas existentes.
Cada um destes Application Blocks utiliza padrões similares de projeto, codificação, configuração e instalação, o que torna o Enterprise Library uma biblioteca extremamente consistente e coerente.
Um aspecto importante do Enterprise Library é que você não é obrigado a utilizar todos os Application Blocks disponíveis. É possível, por exemplo, utilizar somente o Data Access Application Blocks e o Configuration Application Blocks e abrir mão de segurança ou cache de dados. Porém cada Application Block pode possuir dependências entre módulos. O Security Application Block, por exemplo, dependendo dos recursos utilizados pode exigir a distribuição conjunta do Data Access Application Block, Configuration Application Block e Cache Application Block.
Além dos Application Blocks mencionados anteriormente, o Enterprise Library também disponibiliza o Commom Library, que possui um conjunto de classes comum a todos os Application Blocks e, portanto, deve ser sempre distribuída com o seu aplicativo.
Muitos dos Application Blocks que compõem o Enterprise Library são na verdade evoluções de Application Blocks já existentes. O Exception Handling Application Block, por exemplo, é um sucessor do antigo Exception Management Application Block. Se você já utilizava algum destes Application Blocks procure documentação sobre o que fazer para migrar para nova biblioteca.
Uma das grandes evoluções notadas nestes Application Blocks é a forte adoção de testes de unidade através do NUnit. Ao navegar por cada biblioteca você encontrará em pastas denominadas Tests uma grande quantidade de testes prontos. A framework NUnit também é um pre-requisito para distribuição do Enterprise Library.
Todos estes Applications Blocks são distribuídos com código fonte em C# e VB.NET, help e aplicações de exemplo. O desenvolvedor pode efetuar modificações a bel prazer, porém deve exibir a seguinte mensagem: "Contains software or other content adapted from Microsoft Enterprise Library. Original Enterprise Library © 2005 Microsoft Corporation. All rights reserved."
Conclusão
Infelizmente a resistência de alguns desenvolvedores na utilização de Application Blocks ainda é muito grande. Muitos dizem que "se fosse tão bom já faria parte da biblioteca de classes do Microsoft .Net Framework", mas se fossemos distribuir na biblioteca de classes do .Net framework tudo o que existir de bom, então teríamos que distribuir um grande elefante. Sei que não é do agrado de muitos membros da comunidade .Net referencias e comparações com o mundo Java, mas gosto muito de utilizar o Apache Group como um exemplo de bons projetos de bibliotecas. Nesta entidade existem frameworks consagradas como o Struts que, mesmo se tratando de uma lenda entre os desenvolvedores Java, não foi incorporado a biblioteca padrão Java.
Nos próximos artigos descreverei em detalhes cada um dos Application Blocks que compõem o Microsoft Enterprise Library.