ms enterprise library
DESCRIPTION
Apresentação feita na 7º reunião do grupo dotNetArchitects, 21 de Março de 2003TRANSCRIPT
MS Enterprise LibraryData Access e Validation Block
O que é, e o que não é a EntLib
É: Conjunto de soluções para problemas freqüentes do
desenvolvimento de software: técnicas conhecidas, para problemas conhecidos,
Baseada em Padrões e práticas comprovadas Projeto Open Source hospedado no Codeplex
Não é: Framework, Parte do .Net framework Um produto, pois é desenvolvida em parceria com a
comunidade, hoje mantida pelo grupo de Patterns & Pratices da MS
Histórico
Junto com parceiro a MS reuniu soluções para rotinas corriqueiras no desenvolvimento de software, criando Applications Blocks
Mais tarde através de sua joint venture Avanade, com a Accenture, dona do Avanade Connected Architect for .Net , reuniu essas boas práticas em um só pacote chamado MS Enterprise Library
Versões
1.0 •Jan de 2005
1.1 •Jun de 2005•Incorporados Caching e Cryptography Application blocks
2.0 •Jan de 2006•Migração para .Net 2.0, retirado ConfigurationApp Block, (System.Config)
3.0 •Abr de 2007•Software factory, Policy Injection, Validation Block
3.1 •Mai de 2007, correção de bugs
4.0 •Integração com Unity Application Block, suporte ao WMI 2.0
4.1 •Correção de bugs
Blocos (4.1)
Caching Application Block Cryptography Application Block Data Access Application Block Exception Handling Application Block Logging Application Block Policy Injection Application Block Security Application Block Unity Application Block Validation Application Block.
Enterprise Library 3.0 Application Blocks
Caching
Security
Data Access
Logging
ExceptionHandling
ConfigHelpers & Design
Instrumen-tation
ObjectBuilder
Cryptography
Core
Policy InjectionValidation
Por que um bloco de dados?
Acesso a dados é necessário em praticamente 100% das aplicações
Sempre lembrar de manter as boas práticas
Por que “fazer na mão” se pode ser feito automaticamente?
Cenário de acesso a dados
Conectar no BDEnviar comandoReceber respostaFechar conexão
Conexão ADO.Net
public void carregaDados() { SqlConnection cn = new SqlConnection(cnStr); SqlCommand cm = new SqlCommand(“proc_x", cn); cm.CommandType = CommandType.StoredProcedure; try{ cn.Open(); cm.ExecuteNonQuery(); } catch (Exception ex){ } finally{ cn.Close(); } }
Vantagens DAAB
Utiliza as melhores práticas de acesso a dados
Código multi-banco Facilidade no gerenciamento do pool de conexões
Diminui drasticamente linhas de código
Usando EntLib
public DataSet getFuncionarios(string strConexao, int departamento){
SqlDatabase db = new SqlDatabase(strConexao); return db.ExecuteDataSet("proc_get_funcionarios",
departamento); //Conexao fechada no término do método
ExecuteDataSet }
Demo
Por que um bloco de validação?
Validação é necessária em todas as aplicações
.Net provê classes para validação na camada GUI, portanto você tem que re-implementar as regras em outras camadas
Cenários mais comuns de validação são código “macarrônicos”
Cenário de validação de dados
Validar dados antes de processá-los
Facilidade na manutenção para manter a lógica
Integrando a validação em diferentes camadas: GUI, Domínio
Alterar a validação em produção (!!)
Validation Block
Especificar as regras apenas uma vez: arquivos de configuração, atributos ou programaticamente
Validar em qualquer ponto: programaticamente, integrado com WinForms, ASP.Net, WCF
Regras de validação primitivas, validação nos membros das classes, booleana
Regras de validação
Regras de validação Not Null (valor não pode ser nulo) Contains Characters (não contenha os caracteres: /\?
<>”:) Regular Expression (validar endereço de e-mail) Range (de 10-20 or 1/1/1950 até 12/31/1999) Relative DateTime (maior de 21 anos) String Length (maior que 8 caracteres) Domain (um elemento do grupo {Cartão, Cheque,
Dinheiro}) Enum Conversion (string pode ser convertida em
enum) Type Conversion (string pode ser convertida em
DateTime) Property Comparison (MaxDate > MinDate)
Todas as validações podem ser negadas Ex.: O comprimento de uma string não pode ser entre 5
e 10 caracteres
Demo
Validação usando Configuração
EntLib Contrib (codeplex) Data Access Application Block providers: MySql, SqLite
and SqlEx Exception Handling Application Block: SqlException
Wrap Handler Logging Application Block: LogParser Policy Injection Application Block: PostSharp4EntLib,
novas regras And, Or e Not; CursorCallHandler, OneWayCallHandler, SynchronizedCallHandler, ThreadSafeCallHandler, TransactionScopeCallHandler
Validation Application Block: CollectionCountValidator, TypeValidator<T>, ObjectValidator<T>, EnumDefinedValidator, Lightweight type picker, Test command; Default validators, Argument Validation, ExternallyConfigurableObjectValidator
Conclusão
EntLib é uma biblioteca com o propósito de solucionar problemas freqüentes do desenvolvimento de software, usando padrões e práticas comprovadas, encapsulando técnicas conhecidas para a solução de problemas conhecidos, em qualquer estilo arquitetônico, aumentando a produtividade.
Referências
Microsoft patterns & practices Developer Center: http://msdn.microsoft.com/en-us/practices/default.aspx
Microsoft Enterprise Library 4.1 – October 2008: http://msdn.microsoft.com/en-us/library/dd203099.aspx
Hands On Labs - Enterprise Library for .NET Framework 2.0 - January 2006: http://www.microsoft.com/downloads/details.aspx?FamilyId=C8CA14D0-05EA-4A44-AE78-F5E4DF6208AF&displaylang=en
Enterprise Library Contrib: http://www.codeplex.com/entlibcontrib