SlideShare una empresa de Scribd logo
1 de 21
Data Access e Validation Block
É:

     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
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
• Jan de 2005
1.0

      • Jun de 2005
      • Incorporados Caching e Cryptography Application blocks
1.1

      • Jan de 2006
      • Migração para .Net 2.0, retirado ConfigurationApp Block, (System.Config)
2.0

      • Abr de 2007
      • Software factory, Policy Injection, Validation Block
3.0

      • Mai de 2007, correção de bugs
3.1

      • Integração com Unity Application Block, suporte ao WMI 2.0
4.0

      • Correção de bugs
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

                            Data
                                               Logging
   Caching
                           Access




                           Core
                 Config
                               Instrumen-     Exception
                Helpers
 Cryptography                     tation      Handling
                & Design


                       Object
                       Builder



   Security                                 Policy Injection
                       Validation
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?
 Conectar no BD
 Enviar comando
 Receber resposta
 Fechar conexão
public void carregaDados()

    {

       SqlConnection cn = new

       SqlConnection(cnStr);

       SqlCommand cm = new SqlCommand(“proc_xquot;, cn);

        cm.CommandType = CommandType.StoredProcedure;

      try{

         cn.Open();

         cm.ExecuteNonQuery();

      }

      catch (Exception ex){

      }

      finally{

         cn.Close();

      }

    }

 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
public DataSet getFuncionarios(string strConexao, int

  departamento){
      SqlDatabase db = new SqlDatabase(strConexao);


      return db.ExecuteDataSet(quot;proc_get_funcionariosquot;,

  departamento);
      //Conexao fechada no término do método

  ExecuteDataSet
}
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”
 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 (!!)
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

     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
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
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.
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?Family
  Id=C8CA14D0-05EA-4A44-AE78-
  F5E4DF6208AF&displaylang=en
 Enterprise Library Contrib:
  http://www.codeplex.com/entlibcontrib

Más contenido relacionado

Similar a MS Enterprise Library

Teste de Software - Especialização Univem
Teste de Software - Especialização UnivemTeste de Software - Especialização Univem
Teste de Software - Especialização UnivemAndré Abe Vicente
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016Fernando Santiago
 
Agile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAgile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAndré Abe Vicente
 
Resumo Do Inter 2008 2
Resumo Do Inter 2008 2Resumo Do Inter 2008 2
Resumo Do Inter 2008 2Raul Libório
 
Sunlit technologies portfolio produtos &amp; serviços agosto2016
Sunlit technologies   portfolio produtos &amp; serviços  agosto2016Sunlit technologies   portfolio produtos &amp; serviços  agosto2016
Sunlit technologies portfolio produtos &amp; serviços agosto2016Antonio Carlos Scola - MSc
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
TCC - Certificação Digital
TCC - Certificação DigitalTCC - Certificação Digital
TCC - Certificação DigitalMarcos Bezerra
 
Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?Everton Tavares
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em RailsJuan Maiz
 
Seguranca e Criptografia de Dados
Seguranca e Criptografia de DadosSeguranca e Criptografia de Dados
Seguranca e Criptografia de DadosFelipe Plattek
 
Evolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebEvolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebBreno Vitorino
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Javaelliando dias
 
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaDextra Sistemas / Etec Itu
 

Similar a MS Enterprise Library (20)

Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
Workshop05
Workshop05Workshop05
Workshop05
 
Teste de Software - Especialização Univem
Teste de Software - Especialização UnivemTeste de Software - Especialização Univem
Teste de Software - Especialização Univem
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
 
Agile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAgile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da Indústria
 
Resumo Do Inter 2008 2
Resumo Do Inter 2008 2Resumo Do Inter 2008 2
Resumo Do Inter 2008 2
 
Sunlit technologies portfolio produtos &amp; serviços agosto2016
Sunlit technologies   portfolio produtos &amp; serviços  agosto2016Sunlit technologies   portfolio produtos &amp; serviços  agosto2016
Sunlit technologies portfolio produtos &amp; serviços agosto2016
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 
TCC - Certificação Digital
TCC - Certificação DigitalTCC - Certificação Digital
TCC - Certificação Digital
 
Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
Segurança J2EE
Segurança J2EESegurança J2EE
Segurança J2EE
 
Seguranca e Criptografia de Dados
Seguranca e Criptografia de DadosSeguranca e Criptografia de Dados
Seguranca e Criptografia de Dados
 
Evolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebEvolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações Web
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
 
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
 

Más de Emmanuel Gomes Brandão

Más de Emmanuel Gomes Brandão (15)

3 way's a base do DevOps no Azure DevOps
3 way's a base do DevOps no Azure DevOps3 way's a base do DevOps no Azure DevOps
3 way's a base do DevOps no Azure DevOps
 
VS2019 Launch - VS com DevOps
VS2019 Launch - VS com DevOpsVS2019 Launch - VS com DevOps
VS2019 Launch - VS com DevOps
 
DevOps para Open Source com Azure DevOps
DevOps para Open Source com Azure DevOpsDevOps para Open Source com Azure DevOps
DevOps para Open Source com Azure DevOps
 
DevOps para Enterprises
DevOps para EnterprisesDevOps para Enterprises
DevOps para Enterprises
 
7Masters - Automação de testes
7Masters - Automação de testes7Masters - Automação de testes
7Masters - Automação de testes
 
DevOps em Enterprises: problemas
DevOps em Enterprises: problemasDevOps em Enterprises: problemas
DevOps em Enterprises: problemas
 
Jornada para o DevOps
Jornada para o DevOpsJornada para o DevOps
Jornada para o DevOps
 
Three ways a base do DevOps no VSTS
Three ways a base do DevOps no VSTSThree ways a base do DevOps no VSTS
Three ways a base do DevOps no VSTS
 
Saia do Brownfield com Refactoring
Saia do Brownfield com RefactoringSaia do Brownfield com Refactoring
Saia do Brownfield com Refactoring
 
Saia do Brownfield com Refactoring
Saia do Brownfield com RefactoringSaia do Brownfield com Refactoring
Saia do Brownfield com Refactoring
 
DevOps: Muito mais cultura do que ferramentas
DevOps: Muito mais cultura do que ferramentasDevOps: Muito mais cultura do que ferramentas
DevOps: Muito mais cultura do que ferramentas
 
DevOps Mitos, Cultura e Futuro
DevOps Mitos, Cultura e FuturoDevOps Mitos, Cultura e Futuro
DevOps Mitos, Cultura e Futuro
 
DevOps (Provocações)
DevOps (Provocações)DevOps (Provocações)
DevOps (Provocações)
 
Git Rebase, reescrevendo o seu histórico
Git Rebase, reescrevendo o seu históricoGit Rebase, reescrevendo o seu histórico
Git Rebase, reescrevendo o seu histórico
 
Integrando Jenkins em um pipeline com VSTS... e Azure
Integrando Jenkins em um pipeline com VSTS... e AzureIntegrando Jenkins em um pipeline com VSTS... e Azure
Integrando Jenkins em um pipeline com VSTS... e Azure
 

MS Enterprise Library

  • 1. Data Access e Validation Block
  • 2. É:   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
  • 3. 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
  • 4. • Jan de 2005 1.0 • Jun de 2005 • Incorporados Caching e Cryptography Application blocks 1.1 • Jan de 2006 • Migração para .Net 2.0, retirado ConfigurationApp Block, (System.Config) 2.0 • Abr de 2007 • Software factory, Policy Injection, Validation Block 3.0 • Mai de 2007, correção de bugs 3.1 • Integração com Unity Application Block, suporte ao WMI 2.0 4.0 • Correção de bugs 4.1
  • 5. 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. 
  • 6. Enterprise Library 3.0 Application Blocks Data Logging Caching Access Core Config Instrumen- Exception Helpers Cryptography tation Handling & Design Object Builder Security Policy Injection Validation
  • 7. 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?
  • 8.  Conectar no BD  Enviar comando  Receber resposta  Fechar conexão
  • 9. public void carregaDados()  {  SqlConnection cn = new  SqlConnection(cnStr);  SqlCommand cm = new SqlCommand(“proc_xquot;, cn);  cm.CommandType = CommandType.StoredProcedure;  try{  cn.Open();  cm.ExecuteNonQuery();  }  catch (Exception ex){  }  finally{  cn.Close();  }  } 
  • 10.  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
  • 11. public DataSet getFuncionarios(string strConexao, int  departamento){ SqlDatabase db = new SqlDatabase(strConexao);   return db.ExecuteDataSet(quot;proc_get_funcionariosquot;,  departamento); //Conexao fechada no término do método  ExecuteDataSet }
  • 12.
  • 13. 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”
  • 14.  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 (!!)
  • 15. 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
  • 16. 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
  • 17.
  • 18.
  • 19. 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
  • 20. 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.
  • 21. 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?Family Id=C8CA14D0-05EA-4A44-AE78- F5E4DF6208AF&displaylang=en  Enterprise Library Contrib: http://www.codeplex.com/entlibcontrib