Artigo no estilo: Curso

Por que eu devo ler este artigo:Este artigo tem por objetivo apresentar o Enterprise Library que é um conjunto de componentes reutilizáveis disponibilizado pela Microsoft para a implementação de soluções em .NET.

Contando com diferentes recursos como persistência de dados, injeção de dependência, validação, tratamento de erros e logging, o Enterprise Library procura oferecer opções que tornem mais produtiva a codificação de novas funcionalidades, baseando-se em práticas e padrões com ampla aceitação dentro da área de desenvolvimento de software.

A fim de demonstrar o uso do Enterprise Library, iniciaremos neste artigo a construção de uma aplicação de exemplo, na qual serão utilizados os mecanismos de acesso a dados e injeção de dependência que integram essa coleção de componentes.

Considerando a construção de sistemas em uma organização, não será difícil que certos trechos de código sejam reutilizados ao longo do tempo na implementação de novas aplicações.

Um dos fatores que contribuem para este tipo de prática está na confiança que as equipes de desenvolvimento adquiriram no uso de tais recursos, uma vez que as diferentes funcionalidades providas pelos mesmos demonstraram eficácia e estabilidade na resolução de necessidades específicas.

A eterna busca por mais produtividade, qualidade e padronização é, sem sombra de dúvidas, outro fator que pode pesar para promover o reuso de determinados recursos já implementados anteriormente. Levando em conta as demandas crescentes de diferentes áreas de negócio em uma companhia, sempre existirão pressões por um melhor rendimento das equipes de desenvolvimento.

Essas preocupações ganham uma maior importância diante de exigências como a entrega de soluções dentro de prazos mais curtos, da quantidade reduzida de profissionais disponíveis para um projeto ou, mesmo, de mudanças de escopo quase certas ao longo da condução de tal projeto.

Muitos desses trechos de código reutilizados em vários projetos costumam englobar recursos para logging, classes que facilitam a manipulação de informações a partir de bancos de dados relacionais, mecanismos para injeção de dependência, rotinas para tratamento de falhas, dentre outras rotinas não ligadas diretamente a processos rotineiros de uma organização. Quando organizadas de uma forma que permita o seu reuso, estas funções genéricas correspondem à implementação da Engenharia de Software como “cross-cutting concerns” (BOX 1).

O desenvolvimento de funcionalidades deste tipo requer tempo e investimentos em recursos, principalmente desenvolvedores que ficarão alocados em atividades deste gênero. Isto é algo que não desperta grande interesse por parte de muitas organizações, já que o foco principal está em utilizar os profissionais da área de Tecnologia da Informação para a criação de soluções que resolvam problemas e demandas rotineiras.

Pensando nisto e procurando simplificar o trabalho de desenvolvedores em soluções baseadas na plataforma .NET, a Microsoft lançaria ainda em 2005 a primeira versão do Enterprise Library. Em termos práticos ele corresponde a diferentes conjuntos de componentes organizados em blocos de aplicações. Cada um destes agrupamentos provê meios para a utilização de uma funcionalidade genérica.

BOX 1. Cross-cutting concerns

O termo “cross-cutting concerns” (algo equivalente em português a “interesses transversais”) refere-se a funcionalidades genéricas, sem uma relação direta com aspectos de negócio e cuja utilização está disseminada ao longo do código de um sistema. Constituem bons exemplos disto mecanismos para autenticação / autorização de usuários, caching, tratamento de exceções, rotinas de acesso a dados, logging, dentre outras ações.

O recomendável é que estas funções de caráter genérico sejam centralizadas, sempre que possível, em algum ponto de uma aplicação. Com esta prática se evita possíveis trechos duplicados de código, algo que certamente aumentaria o trabalho diante da necessidade de alterações futuras no código de uma solução.

Microsoft Enterprise Library: uma visão geral

Cada application block que compõe o Enterprise Liberar (EL) pode ser definido como um conjunto plugável e reutilizável de componentes, os quais foram criados com o intuito de simplificar a implementação de rotinas de caráter geral que se repetem com frequência nos mais variados tipos de projetos (estando, por essa razão, em conformidade com o conceito de “cross-cutting concerns”).

O principal benefício deste caráter plugável dos application blocks está na possibilidade de utilizar individualmente cada bloco ou, até mesmo, combinar dois ou mais destes conjuntos de componentes numa única aplicação.

Por se basearem em mecanismos nativos do .NET Framework, as funcionalidades fornecidas pelo EL também facilitam a manipulação de tais recursos. Um bom exemplo disto está no uso dos recursos pertencentes ao Data Access Application Block: através das classes definidas neste bloco de aplicação é possível obter um código mais enxuto na codificação de instruções do que utilizando as classes que formam o ADO.NET (é importante ressaltar, neste último caso, que os próprios componentes do Data Access Application Block encapsulam os tipos definidos no ADO.NET).

Além das vantagens já mencionadas, o uso de recursos pertencentes ao EL pode resultar nos seguintes benefícios:

· A obtenção de um software com maior qualidade, já que os blocos que formam o EL foram concebidos seguindo boas práticas de desenvolvimento e design patterns;

· Como encapsulam uma série de funcionalidades prontas, previamente testadas e reutilizáveis, os application blocks representam uma alternativa interessante no que se refere à obtenção de uma maior produtividade durante o desenvolvimento de novas aplicações;

· Ainda considerando a questão do reuso, outro ponto positivo está na possibilidade de se evitarem trechos de código duplicados ao longo de diferentes aplicações (visto que as funcionalidades genéricas encontram-se centralizadas em assemblies, os quais foram adicionados como referências a diferentes projetos);

· Graças à forma padronizada como os application blocks foram elaborados, além de uma detalhada documentação, esta tecnologia pode ser assimilada rapidamente por desenvolvedores sem uma grande familiaridade com a mesma;

· Uma redução na quantidade de linhas de código necessárias para a implementação de uma solução, aspecto este que contribui inclusive para a entrega de funcionalidades em prazos mais curtos;

· A possibilidade de estender as funcionalidades oferecidas originalmente, com isso acontecendo através da criação de classes customizadas baseadas em recursos de algum application block;

· O uso do Enterprise Library também favorece a obtenção de componentes de software mais coesos em uma aplicação. Por não acumularem responsabilidades que vão além da manipulação de itens com algum valor de negócio, as classes resultantes contam assim com uma estrutura mais simples e de fácil manutenção.

No momento em que este artigo foi elaborado (Janeiro/2014) o Microsoft Enterprise Library se encontrava na versão 6.0 (a qual foi liberada ainda em Abril/2013). Como era de se esperar, este último release introduziu melhorias, além de descontinuar alguns recursos antigos.

Estão disponíveis no Enterprise Library 6.0 oito diferentes blocos:

· Data Access Application Block: possibilita a manipulação simplificada de dados a partir de bases relacionais, contando inclusive com mecanismos de ORM;

· Exception Handling Application Block: disponibiliza recursos para a criação de rotinas centralizadas para tratamento de exceções, auxiliando inclusive na implementação de rotinas de logging e na geração de mensagens de erro mais amigáveis;

· Logging Application Block: conta com mecanismos de logging, viabilizando assim o monitoramento de aplicações em questões envolvendo a verificação do comportamento destas últimas, performance ou, mesmo, a obtenção de informações detalhadas diante da ocorrência de erros;

· Unity Application Block: mecanismo de injeção de dependências do Enterprise Library, com suporte para a utilização deste recurso em propriedades, construtores e métodos de inicialização de uma classe;

· Validation Application Block: permite a criação de regras centralizadas de validação, fazendo uso de declarações em arquivos de configuração, atributos associados a propriedades e/ou parâmetros de um método ou ainda, através de instruções de código. Este bloco pode ser integrado a tecnologias como Windows Forms, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF) e ASP.NET;

· Transient Fault Handling Application Block: bloco com recursos que permitem o tratamento de falhas na comunicação com serviços remotos, podendo estar localizados numa rede convencional ou na nuvem. Devido ao seu caráter intermitente, tais falhas acontecem de forma esporádica, sendo motivadas por problemas na infraestrutura de uma rede, por uma sobrecarga na capacidade de processamento de um serviço (por conta de um grande número de requisições direcionadas ao mesmo num determinado instante), dentre outros fatores;

· Semantic Logging Application Block: utiliza a estrutura de logging do mecanismo conhecido como Event Tracing for Windows (BOX 2), baseando-se nas funcionalidades oferecidas pela classe EventLog (System.Diagnostics). Este bloco torna mais simples a gravação de mensagens de log quando comparado ao uso do Logging Application Block, podendo empregar como repositórios para a persistência de informações de variadas fontes de armazenamento (arquivos no formato XML, tabelas de uma base ...

Quer ler esse conteúdo completo? Tenha acesso completo