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.

Comments (0)