Fala pessoal, hoje vou dar início à uma série de posts que mostrará como criar uma biblioteca de Conversão de Exceptions para Fault Exceptions, e estratégia de log de erros em um serviço WCF.
Está tarefa pode ser realizada de várias maneiras diferentes, hoje vou apresentar uma delas utilizando recursos do próprio Framework 4.0, utilizando o Assembly: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ServiceModel.dll".
Onde dentro deste vamos utilizar como foco deste post o seguinte contrato "System.ServiceModel.Dispatcher.IErrorHandler."
Estou iniciando por está, não por ser a melhor forma de se realizar essas duas coisas, na minha opinião não existe a melhor forma de se fazer, e sim a melhor forma de você adequar a implementação ao seu projeto.
1) Vamos precisar de um VS2010 trabalhando com Framework 4.0
2) No meu caso fiz a escolha do Log4Net para minha estratégia de log. (Não obrigatório)
Vamos lá, mãos a obra:
Primeiro criar um projeto a parte de seu WCF para poder ser aproveitado em vários serviços, o meu chamei de Lcj.Library.ErrorHandler
Dentro do projeto Lcj.Library.ErrorHandler vamos criar:
1) Um FaultContract (assunto discutido no post DataContracts) que no meu caso vou chamar de "ServiceFault" que deverá implentar a interface "IFaultDetail", conforme print abaixo:
Agora que já temos nosso FaultContract, vamos criar a classe que será responsável por converter todos exceptions em nosso FaultContract. A minha chamei de "ServiceFaultConverter" que deverá implementar a interface "IExceptionToFaultConverter", conforme print abaixo:
2) Uma classe (Dei o nome de "ErrorHandler") que implemente a interface "IErrorHandler", e também herde da classe "BehaviorExtensionElement". Como no exemplo abaixo:
Podemos perceber observando a imagem acima, que temos a primeira propriedade do tipo "ErrorHandlerBehaviourAttribute" que não existe ainda em nosso projeto, por enquanto deixaremos assim.
Veja detalhadamente a estrutura da classe ErrorHandler:
Exibições: 192
Tags: Error, Error Handler, Error Handling, Exceptions, Extensibility, Fault Contract, Fault Exceptions, Log, WCF, Windows Communication Foundation, Mais...boas praticas, error handling, example
© 2013 Criado por Alexandre Tarifa.
Ativado por
Você precisa ser um membro de Codificando .Net para adicionar comentários!
Entrar em Codificando .Net