web-dev-qa-db-fra.com

Comment faire un appel à mon service WCF asynchrone?

J'ai un service WCF que j'appelle à partir d'un service Windows.

Le service WCF exécute un package SSIS, et ce package peut prendre un certain temps et je ne veux pas que mon service Windows doive attendre qu'il se termine.

Comment puis-je rendre mon appel de service WCF asynchrone? (ou est-ce asynchrone par défaut?)

25
Blankman
27
Perpetualcoder

Sur Visual Studio 2010, sur le Add Service Reference > click Advanced button > check the Generate Asynchronous Operations case à cocher.

Après cela, les opérations Async seront ajoutées et disponibles pour votre usage.

13
Bahamut

Côté service:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    bool DoWork(int i);
}

Côté client:

[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
    [OperationContract]
    Task<bool> DoWorkAsync(int i);
}
9
Stas BZ

le proxy WCF à l'intérieur de votre client (service Windows?) doit être spécifié lors de la création que vous souhaitez avoir des opérations asynchrones disponibles.

Vous pouvez modifier un proxy WCF existant en cliquant dessus avec le bouton droit de la souris et en choisissant "Configurer la référence de service". À partir d'ici, il vous suffit de cocher la case à côté de "Générer des opérations asynchrones"

Ok, c'est donc le côté proxy WCF des choses prises en charge. Vous devez maintenant utiliser APM (modèle de programmation asynchrone) avec le proxy à l'intérieur de votre client.

2
Andrew Harry