ms enterprise library

21
MS Enterprise Library Data Access e Validation Block

Upload: emmanuel-brandao

Post on 11-Jun-2015

1.051 views

Category:

Technology


0 download

DESCRIPTION

Apresentação feita na 7º reunião do grupo dotNetArchitects, 21 de Março de 2003

TRANSCRIPT

Page 1: MS Enterprise Library

MS Enterprise LibraryData Access e Validation Block

Page 2: MS Enterprise Library

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

Page 3: MS Enterprise Library

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

Page 4: 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

Page 5: MS Enterprise Library

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.

Page 6: MS Enterprise Library

Enterprise Library 3.0 Application Blocks

Caching

Security

Data Access

Logging

ExceptionHandling

ConfigHelpers & Design

Instrumen-tation

ObjectBuilder

Cryptography

Core

Policy InjectionValidation

Page 7: MS Enterprise Library

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?

Page 8: MS Enterprise Library

Cenário de acesso a dados

Conectar no BDEnviar comandoReceber respostaFechar conexão

Page 9: MS Enterprise Library

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(); } }

Page 10: MS Enterprise Library

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

Page 11: MS Enterprise Library

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   }

Page 12: MS Enterprise Library

Demo

Page 13: MS Enterprise Library

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”

Page 14: MS Enterprise Library

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 (!!)

Page 15: MS Enterprise Library

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 

Page 16: MS Enterprise Library

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

Page 17: MS Enterprise Library

Demo

Page 18: MS Enterprise Library

Validação usando Configuração

Page 19: MS Enterprise Library

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

Page 20: MS Enterprise Library

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.

Page 21: MS Enterprise Library

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