Enterprise Library para desenvolvedores




                Luciano Condé
            Arquiteto de Soluções
        http://blogs.msdn.com/conde
         http://twitter.com/luconde
Motivação
Típica situação



                                     bl                         bl
         bl
                                               bl
                        bl         App3
bl    App1                                                 bl
               bl                         bl
        bl
                              bl                                     bl
                                               bl       App4
                bl      App2
 bl                                 bl                    bl
        bl
                             bl
                                                    Domínio de aplicação
Objetivos da Enterprise Library


• A Enterprise Library é um conjunto de blocos de
  aplicações extensíveis que ajudam na construção de
  aplicações.
• História
Versão               Data                   Destaques
1.0                  Janeiro 2005           Integração dos Blocos
1.1                  Junho 2005
2.0                  Janeiro 2006           .NET 2.0 Update
3.0                  Abril 2007
3.1                  Maio 2007              Validation, PIAB
4.0                  Maio 2008              Unity, suporte ao WMI
                                            2.0
4.1                  Outubro 2008
Enterprise Library como um acelerador




  Não posso ter um conjunto
  de blocos únicos e
  reutilizá-los?
Enterprise
Library

  Enterprise Library é…          Enterprise Library não é…
  • Um conjunto de blocos para   • Parte do .Net Framework
    resolver certos desafios
                                 • Um framework que
  • Um conjunto de classes         estabelece um estilo de
    helper para atuar em           arquitetura
    qualquer estilo de
    arquitetura
                                 • Um produto MS com
  • De graça                       suporte

                                 • À venda
Objetivos da Enterprise Library


• Consistente
   – Blocos são escritos e baseados em patterns comuns
• Extensível
   – Plugável
   – Customizável
• Fácil para uso
   – Integrado com Visual Studio,
     interfaces simples
Contexto


• Reuso de componentes é importante
  – Trata os principais desafios de desenvolvimento
• Blocos de aplicação
  – Reuso, testabilidade, extensível e código-fonte
    modifcável
  – + Docs, quickstarts, hands-on labs
• Enterprise Library é uma conjunto genérico de
  blocos de aplicação
  – Não é específico para nenhum tipo de aplicação ou estilo de
    arquitetura
• Pode ser usado da maneira que está entregue
  ou é possível customizar
Biblioteca Customer Y

                                                    Biblioteca Partner X




                                     p&p
                               Enterprise Library

                   Biblioteca Customer Z




p&p blocks


Partner blocks


Customer blocks


Community blocks
2.0
            3.x

4.x
Os blocos


•   Caching
•   Data access
•   Security
•   Cryptograph
•   Logging
•   Exception handling
•   Validation
•   Policy Injector
•   Unity (Dependency Injection)
Data Access
  Caching                                        Logging




                          Core

                Config
                                 Instrumen-
               Helpers                          Exception
Cryptography                        tation
               & Design                         Handling


                          Object
                          Builder



  Security                                    Policy Injection


                      Validation
container.Resolve<Database>(“Foo”);
…
Usando Enterprise Library
Logging Application Block


• O que é?
  – Bloco de aplicação destinado a simplificar as tarefas de
    manipulação de logging da aplicação
• Quando usar
  – Gerar logging das atividades da minha aplicação para um
    ou vários repositórios
  – Formatar mensagens de logging
  – Alterar o destino das mensagens somente via configuração
• Ações comuns:
  –   Armazenar as atividades
  –   Filtrar as mensagens antes de armazenamento
  –   Redirecionar as atividades para mútiplos destinos
  –   Configurar filtros
Demo do Logging
Calculadora do Elvis com Logging




           Windows                  WCF
            Forms                  Service


                                         Usa


                                   Logger
Exception Handling Application Block


• O que é?
  – Bloco de aplicação para simplificação no tratamento e
    gerenciamento de exceções
• Quando usar
  – Um tratamento uniforme das minhas exceções
    independentemente da quantidade de camadas da minha
    aplicação
• Ações comuns:
  –   Armazenas exceções
  –   Trocar exceções
  –   Filtrar exceções
  –   Apresentar mensagens user-friendly
  –   Fornecer informações para a operação
Demo do Exception
Handling
Calculadora do Elvis com Exception
Handling




           Windows                          WCF
            Forms                          Service

                                   Nova               Usa
                                Exceção

                                          Exception
                                          Handling
Validation Application Block


• O que é?
  – Bloco de aplicação para simplificar as validações de dados
    (formulários, serviços e classes)
• Quando usar
  – Quero boas práticas de validação de dados
  – Transferir a validação para o nível do compilador ou
    engine de validação
• Ações comuns:
  –   Usar atributos para validação
  –   Usar uma própria validação
  –   Validar objetos
  –   Integração com WCF, Windows Forms, ASP.NET
Demo do Validation
Calculadora do Elvis com Validação




           Windows                             WCF
            Forms                             Service

                                     Falha               Usa


                                             Validação
Unity Application Block

• O que é?
   – Bloco de aplicação para gerenciar o desacoplamento entre
     classes e objetos
• Quando usar
   – Aplicação dos patterns
       • Inversão de Controle (IoC)
       • Injeção de dependência (DI)
       • Interceptação
   – Gerar independência entre os meus objetos ou classes
   – Redução da complexidade de dependência entre os meus
     objetos e classes
• Ações comuns:
   – Configuração de um container
   – Configurar as dependências
   – “Resolver” um objeto pelo tipo ou nome de registro
Injeção de dependência




Componente                                         Dependency
                                      Componente    Injection
Demo do Unity
Calculadora do Elvis com Unity




           Windows                WCF
            Forms                Service


                                       Usa


                                 Logger
Outros blocos
Data access Application Block


• O que é?
  – Bloco de Aplicação para simplificar o acesso a banco de
    dados
  – Abstração de alto nível do ADO.Net
• Quando usar
  – Uso de métodos padronizados
  – Uso com múltiplos bancos
• Ações comuns:
  – Criação do objeto abstrato de banco de dados
  – Chamada de stored procedures
Factory
Possíveis bancos




Propriedades
Security Application Block


• O que é?
  – Bloco de aplicação para tratamento das atividades de
    autorização
• Quando usar
  – Autorização em cima de algum repositório de segurança
    (Active Directory, Authorization Manager, ADAM ou outros)
  – Caching das credenciais de acesso
• Ações comuns:
  – Obter um token para um usuário autenticado
  – Expirar um token
  – Verificar se o usuário autenticado tem permissão para
    executar alguma tarefa específica.
Definindo o provider de
     autorização que será usado
40
Usando Authorization
         Rule Provider




     Definindo rules de usuários
       e métodos autorizados
41
Usando Authorization
          Rule Provider




     Exemplo de autorização de
          usuário e rules
42
Caching Application Block


• O que é?
  – Bloco de aplicação para tratamento de caching de dados
    (cliente e servidor)
• Quando usar
  – Leitura dados estáticos repetidamente
  – Dados que são “caros” na criação, acesso ou transporte
  – Dados que precisam estar sempre disponíveis
• Ações comuns:
  –   Adicionar itens ao cache
  –   Retornar itens do cache
  –   Remover itens do cache
  –   Limpar o cache
  –   Carregar um caching
Chamada para o
      CacheFactory




45
EntLib 5.0
O que está sendo pensado?


• Foco em simplicidade
• Intellisense do
  configuration manager
  com o Visual Studio
• Refactoring de
  Arquitetura
• Não é esperado nenhuma
  quebra das APIs existentes

Acompanhar o blog:
http://blogs.msdn.com/agile/
Prioritized Backlog
Conclusão
Resumo


     Blocos funcionais                             Core
   Data                                                Instrumen-
                            Logging       Config
   Access                                                 tation



                            Exception
  Caching
                            Handling
                                        Blocos estruturais

                                                   Unity

Cryptography                Security
                                                Policy
                                              Injection
               Validation
Mais informações

•   Entrevista sobre EntLib 5.0
    – http://channel9.msdn.com/posts/akMSFT/Whats-coming-in-
       EntLib-50-and-a-sneak-peek-into-the-new-EntLib-Developer-
       Notes/
•   Blog do Grigori
    – http://blogs.msdn.com/agile/
•   Enterprise Library
    – msdn.microsoft.com/entlib
•   Comunidade da Enterprise Library
    – codeplex.com/entlib
•   Unity:
    – msdn.microsoft.com/unity
•   Time do Microsoft patterns & practices
    – msdn.microsoft.com/practices
•© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
 •The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it
should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES,
                                                                    EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Webcast MSDN - Enterprise Library

  • 1.
    Enterprise Library paradesenvolvedores Luciano Condé Arquiteto de Soluções http://blogs.msdn.com/conde http://twitter.com/luconde
  • 2.
  • 3.
    Típica situação bl bl bl bl bl App3 bl App1 bl bl bl bl bl bl bl App4 bl App2 bl bl bl bl bl Domínio de aplicação
  • 4.
    Objetivos da EnterpriseLibrary • A Enterprise Library é um conjunto de blocos de aplicações extensíveis que ajudam na construção de aplicações. • História Versão Data Destaques 1.0 Janeiro 2005 Integração dos Blocos 1.1 Junho 2005 2.0 Janeiro 2006 .NET 2.0 Update 3.0 Abril 2007 3.1 Maio 2007 Validation, PIAB 4.0 Maio 2008 Unity, suporte ao WMI 2.0 4.1 Outubro 2008
  • 5.
    Enterprise Library comoum acelerador Não posso ter um conjunto de blocos únicos e reutilizá-los?
  • 6.
    Enterprise Library EnterpriseLibrary é… Enterprise Library não é… • Um conjunto de blocos para • Parte do .Net Framework resolver certos desafios • Um framework que • Um conjunto de classes estabelece um estilo de helper para atuar em arquitetura qualquer estilo de arquitetura • Um produto MS com • De graça suporte • À venda
  • 7.
    Objetivos da EnterpriseLibrary • Consistente – Blocos são escritos e baseados em patterns comuns • Extensível – Plugável – Customizável • Fácil para uso – Integrado com Visual Studio, interfaces simples
  • 8.
    Contexto • Reuso decomponentes é importante – Trata os principais desafios de desenvolvimento • Blocos de aplicação – Reuso, testabilidade, extensível e código-fonte modifcável – + Docs, quickstarts, hands-on labs • Enterprise Library é uma conjunto genérico de blocos de aplicação – Não é específico para nenhum tipo de aplicação ou estilo de arquitetura • Pode ser usado da maneira que está entregue ou é possível customizar
  • 9.
    Biblioteca Customer Y Biblioteca Partner X p&p Enterprise Library Biblioteca Customer Z p&p blocks Partner blocks Customer blocks Community blocks
  • 10.
    2.0 3.x 4.x
  • 11.
    Os blocos • Caching • Data access • Security • Cryptograph • Logging • Exception handling • Validation • Policy Injector • Unity (Dependency Injection)
  • 12.
    Data Access Caching Logging Core Config Instrumen- Helpers Exception Cryptography tation & Design Handling Object Builder Security Policy Injection Validation
  • 13.
  • 14.
  • 15.
    Logging Application Block •O que é? – Bloco de aplicação destinado a simplificar as tarefas de manipulação de logging da aplicação • Quando usar – Gerar logging das atividades da minha aplicação para um ou vários repositórios – Formatar mensagens de logging – Alterar o destino das mensagens somente via configuração • Ações comuns: – Armazenar as atividades – Filtrar as mensagens antes de armazenamento – Redirecionar as atividades para mútiplos destinos – Configurar filtros
  • 17.
  • 18.
    Calculadora do Elviscom Logging Windows WCF Forms Service Usa Logger
  • 19.
    Exception Handling ApplicationBlock • O que é? – Bloco de aplicação para simplificação no tratamento e gerenciamento de exceções • Quando usar – Um tratamento uniforme das minhas exceções independentemente da quantidade de camadas da minha aplicação • Ações comuns: – Armazenas exceções – Trocar exceções – Filtrar exceções – Apresentar mensagens user-friendly – Fornecer informações para a operação
  • 21.
  • 22.
    Calculadora do Elviscom Exception Handling Windows WCF Forms Service Nova Usa Exceção Exception Handling
  • 23.
    Validation Application Block •O que é? – Bloco de aplicação para simplificar as validações de dados (formulários, serviços e classes) • Quando usar – Quero boas práticas de validação de dados – Transferir a validação para o nível do compilador ou engine de validação • Ações comuns: – Usar atributos para validação – Usar uma própria validação – Validar objetos – Integração com WCF, Windows Forms, ASP.NET
  • 25.
  • 26.
    Calculadora do Elviscom Validação Windows WCF Forms Service Falha Usa Validação
  • 27.
    Unity Application Block •O que é? – Bloco de aplicação para gerenciar o desacoplamento entre classes e objetos • Quando usar – Aplicação dos patterns • Inversão de Controle (IoC) • Injeção de dependência (DI) • Interceptação – Gerar independência entre os meus objetos ou classes – Redução da complexidade de dependência entre os meus objetos e classes • Ações comuns: – Configuração de um container – Configurar as dependências – “Resolver” um objeto pelo tipo ou nome de registro
  • 28.
    Injeção de dependência Componente Dependency Componente Injection
  • 30.
  • 31.
    Calculadora do Elviscom Unity Windows WCF Forms Service Usa Logger
  • 33.
  • 34.
    Data access ApplicationBlock • O que é? – Bloco de Aplicação para simplificar o acesso a banco de dados – Abstração de alto nível do ADO.Net • Quando usar – Uso de métodos padronizados – Uso com múltiplos bancos • Ações comuns: – Criação do objeto abstrato de banco de dados – Chamada de stored procedures
  • 35.
  • 36.
  • 37.
    Security Application Block •O que é? – Bloco de aplicação para tratamento das atividades de autorização • Quando usar – Autorização em cima de algum repositório de segurança (Active Directory, Authorization Manager, ADAM ou outros) – Caching das credenciais de acesso • Ações comuns: – Obter um token para um usuário autenticado – Expirar um token – Verificar se o usuário autenticado tem permissão para executar alguma tarefa específica.
  • 39.
    Definindo o providerde autorização que será usado 40
  • 40.
    Usando Authorization Rule Provider Definindo rules de usuários e métodos autorizados 41
  • 41.
    Usando Authorization Rule Provider Exemplo de autorização de usuário e rules 42
  • 42.
    Caching Application Block •O que é? – Bloco de aplicação para tratamento de caching de dados (cliente e servidor) • Quando usar – Leitura dados estáticos repetidamente – Dados que são “caros” na criação, acesso ou transporte – Dados que precisam estar sempre disponíveis • Ações comuns: – Adicionar itens ao cache – Retornar itens do cache – Remover itens do cache – Limpar o cache – Carregar um caching
  • 44.
    Chamada para o CacheFactory 45
  • 45.
  • 46.
    O que estásendo pensado? • Foco em simplicidade • Intellisense do configuration manager com o Visual Studio • Refactoring de Arquitetura • Não é esperado nenhuma quebra das APIs existentes Acompanhar o blog: http://blogs.msdn.com/agile/
  • 47.
  • 48.
  • 49.
    Resumo Blocos funcionais Core Data Instrumen- Logging Config Access tation Exception Caching Handling Blocos estruturais Unity Cryptography Security Policy Injection Validation
  • 50.
    Mais informações • Entrevista sobre EntLib 5.0 – http://channel9.msdn.com/posts/akMSFT/Whats-coming-in- EntLib-50-and-a-sneak-peek-into-the-new-EntLib-Developer- Notes/ • Blog do Grigori – http://blogs.msdn.com/agile/ • Enterprise Library – msdn.microsoft.com/entlib • Comunidade da Enterprise Library – codeplex.com/entlib • Unity: – msdn.microsoft.com/unity • Time do Microsoft patterns & practices – msdn.microsoft.com/practices
  • 51.
    •© 2008 MicrosoftCorporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. •The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Notas do Editor

  • #50 Remember to keep Business Rules Application Block as P2.Vote counting methodology:Priority #1 = 40Priority #2 = 38…Priority #19 = 2Priority #20 = 1Expert’s votes 2xInternal votes – count separately
  • #51 Remember to keep Business Rules Application Block as P2.Vote counting methodology:Priority #1 = 40Priority #2 = 38…Priority #19 = 2Priority #20 = 1Expert’s votes 2xInternal votes – count separately