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.
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:
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
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.
Comments
Anonymous
May 16, 2009
Olá pessoal, tudo certo? Essa semana tive algumas reuniões com empresas e arquitetos, falando sobre ferramentasAnonymous
May 27, 2009
Olá pessoal, tudo certo? Aqui no blog tenho aproveitado para falar bastante sobre os vários cenários