Udostępnij za pośrednictwem


Operações One-Way com WCF

Olá pessoal,

Em alguns cenários, o processamento de um serviço pode ser demorado e pode ser necessário liberar o cliente para continuar o seu processamento enquanto o serviço trabalha as informações em background. Em outros cenários, o cliente simplesmente não necessita de um retorno do término do processamento, ele simplesmente precisa de uma garantia que a solicitação chegou no servidor e confia que este fará o seu papel.

Para criar uma operação One-Way com WCF, é necessário decorar a operação com IsOneWay = true no atributo OperationContract e também é necessário retornar void, afinal uma operação One-Way não tem retorno.

 [ServiceContract]
public interface IService
{
    [OperationContract(IsOneWay=true)]
    void ProcessarOneWay();
}
 O próximo passo é implementar o serviço e a operação One-Way, no exemplo abaixo simulo uma operação com 15 segundos de duração:
 public class Service : IService
{
    public void ProcessarOneWay()
    {
        Trace.WriteLine(string.Format("Início ProcessarOneWay - {0}", DateTime.Now));
        Thread.Sleep(15000);
        Trace.WriteLine(string.Format("Fim ProcessarOneWay - {0}", DateTime.Now));
    }
}
 O link para download está disponível aqui.