Share via


Hands-On Labs for Enterprise Library 4.1 – March 2009

Olá pessoal, tudo certo?

Semana passada, tive um belo bate-papo com alguns colegas, falando sobre algumas ferramentas para a construção de serviços, aplicações e como resolver questões básicas de todo software.

EntLib

Aqui, vale lembrar que a biblioteca Enterprise Library ainda é uma grande solução para muitas dessas questões. Apenas como histórico, já passamos por várias versões da EntLib, veja:

  • Enterprise Library 4.1 - October 2008
  • Enterprise Library 4.0 - May 2008
  • Enterprise Library 3.1 - May 2007
  • Enterprise Library 2.0 - January 2006

Qual versão você está usando? A mais recente é a 4.1, que você encontra aqui:

Enterprise Library 4.1 - October 2008
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&displaylang=en

E o recentemente lançado Hands On Lab, de Março de 2009, você tem aqui:

Hands-On Labs for Enterprise Library 4.1 – March 2009
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&displaylang=en

A Enterprise Library 4.1 oferece um conjunto de blocos de aplicação e bibliotecas que atendem questões básicas da infra-estrutura de software, como:

  • Caching
  • Criptografia
  • Acesso a Dados
  • Tratamento de Exceção
  • Interceptação de chamadas
  • Logging, auditoria
  • Segurança
  • Validação, entre outros.

O Hands On Labs (HOL) da Enterprise Library 4.1 é um pacote obrigatório para quem está iniciando seus primeiros passos com a biblioteca. A partir da instalação, você tem uma série de pastas com exemplos, labs e documentação sobre cada um dos exercícios disponíveis, como vemos a seguir:

image

Entre os principais, gostaria de destacar o Validation Application Block, da pasta Validation. Esse bloco permite o tratamento da validação de entrada de dados, antes da execução de regras de negócio de uma aplicação. Ao todo, são 13 laboratórios apenas para validação, para WinForms, ASP.NET, WCF e outros.

O laboratório 13 do HOL (Lab 13: Integrating with WCF) é especialmente interessante pois trata os aspectos de validação de dados a partir de uma aplicação ASP.NET, disparando regras de negócio em serviços WCF – Windows Communication Foundation.

Usando o Validation Block, podemos definir as validações para o contrato de serviços e parâmetros recebidos pela interface, como vemos no exemplo de interface abaixo:

    1: using System.ServiceModel;
    2: using Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF;
    3: using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
    4: using ValidationHOL.BusinessLogic;
    5:  
    6: namespace ValidationHOL.Service
    7: {
    8:     [ServiceContract]
    9:     public interface ICustomerService
   10:     {
   11:         [OperationContract]
   12:         [FaultContract(typeof(ValidationFault))]
   13:         string ProcessCustomer(
   14:             Customer customer,
   15:             [StringLengthValidator(1, 100,
   16:                 MessageTemplate = "The notes must be 1 to 100 characters long.")]
   17:             string notes);
   18:     }
   19: }

Como parte do processo, podemos definir o comportamento de validação do serviço usando a ferramenta de configuração SvcConfigEditor.exe, que você encontra na pasta:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin

Nota: Essa ferramenta é parte do Windows SDK, que você tem no link abaixo:

Microsoft® Windows® Software Development Kit Update for Windows Vista™
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

Para uma documentação adicional, confira também o link:

Configuration Editor Tool (SvcConfigEditor.exe)
Ref.: https://msdn.microsoft.com/en-us/library/ms732009.aspx

image

Feita esta configuração, o arquivo Web.Config terá as definições de validação suportadas pelo serviço, como vemos abaixo na seção <system.serviceModel> da interface WCF:

    1: <system.serviceModel>
    2:   <client>
    3:     <remove contract="IMetadataExchange" name="sb" />
    4:     <endpoint address="" behaviorConfiguration="validation" binding="netTcpRelayBinding"
    5:       contract="IMetadataExchange" name="sb" />
    6:   </client>
    7:   <extensions>
    8:     <behaviorExtensions>
    9:       <add name="validation" type="Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationElement, Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
   10:     </behaviorExtensions>
   11:   </extensions>
   12:   <services>
   13:     <service behaviorConfiguration="ValidationHOL.Service.Service1Behavior" name="ValidationHOL.Service.CustomerService">
   14:       <endpoint address="" binding="wsHttpBinding" contract="ValidationHOL.Service.ICustomerService">
   15:         <identity>
   16:           <dns value="localhost"/>
   17:         </identity>
   18:       </endpoint>
   19:       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
   20:     </service>
   21:   </services>
   22:   <behaviors>
   23:     <endpointBehaviors>
   24:       <behavior name="validation">
   25:         <validation />
   26:       </behavior>
   27:     </endpointBehaviors>
   28:     <serviceBehaviors>
   29:       <behavior name="ValidationHOL.Service.Service1Behavior">
   30:         <serviceMetadata httpGetEnabled="true" />
   31:         <serviceDebug includeExceptionDetailInFaults="false" />
   32:       </behavior>
   33:     </serviceBehaviors>
   34:   </behaviors>
   35: </system.serviceModel>

O mesmo formato de configuração pelo Web.Config e definição de comportamento da aplicação é seguido pelos outros blocos de aplicação da EntLib, como caching, tratamento de exceção, logging, etc.

Recomendo fortemente que você experimente a EntLib 4.1 e seu Hands On. Sem dúvida, muito úteis no dia-a-dia de nossas soluções.

Por enquanto é só! Até o próximo post :)

Waldemir.