Partager via


Opérations asynchrones (WCF Data Services)

Les applications Web doivent gérer une latence plus élevée entre le client et le serveur, comparé aux applications qui s'exécutent sur des réseaux internes. Pour optimiser la performance et l'expérience utilisateur de votre application, nous recommandons d'utiliser les méthodes asynchrones des classes DataServiceQuery<TElement> et DataServiceContext lors de l'accès aux serveurs Services de données WCF sur le Web.

Bien que les serveurs Services de données WCF traitent les requêtes HTTP de façon asynchrone, certaines méthodes des bibliothèques clientes Services de données WCF sont synchrones et attendent la fin de l'échange demande-réponse avant de poursuivre l'exécution. Les méthodes asynchrones des bibliothèques clientes Services de données WCF n'attendent pas la fin de cet échange et permettent que votre application maintienne une interface utilisateur réactive en même temps.

Vous pouvez effectuer des opérations asynchrones à l'aide d'une paire de méthodes sur les classes DataServiceQuery<TElement> et DataServiceContext qui commencent respectivement par Begin et End. Les méthodes Begin inscrivent un délégué appelé par le service lorsque l'opération est terminée. Les méthodes End doivent être appelées dans le délégué inscrit pour gérer le rappel des opérations terminées. Lorsque vous appelez la méthode End pour compléter une opération asynchrone, vous devez le faire à partir de la même instance DataServiceQuery<TElement> ou DataServiceContext utilisée pour commencer l'opération. Chaque méthode Begin prend un paramètre state qui peut passer un objet d'état au rappel. Cet objet d'état est récupéré de IAsyncResult qui est fourni avec le rappel et permet d'appeler la méthode End correspondante pour terminer l'opération asynchrone. Par exemple, lorsque vous fournissez l'instance DataServiceQuery<TElement> comme paramètre state lorsque vous appelez la méthode BeginExecute sur l'instance, la même instance DataServiceQuery<TElement> est retournée par IAsyncResult. Puis cette instance de DataServiceQuery<TElement> est utilisée pour appeler la méthode EndExecute pour compléter l'opération de requête. Pour plus d'informations, consultez Procédure : exécuter des requêtes asynchrones de service des données (WCF Data Services).

Notes

Seules les opérations asynchrones sont prises en charge par les bibliothèques clientes fournies dans le .NET Framework pour Silverlight.Pour plus d'informations, consultez WCF Data Services (Silverlight).

Les bibliothèques clientes .NET Framework prennent en charge les opérations asynchrones suivantes :

Opération

Méthodes

Exécution d'un DataServiceQuery<TElement>.

Exécution d'une requête du DataServiceContext.

Exécution d'une requête par lot du DataServiceContext.

Chargement d'une entité connexe dans DataServiceContext.

Enregistrement des modifications apportées aux objets dans DataServiceContext

Considérations sur le threading relatives aux opérations asynchrones

Dans une application multithread, le délégué inscrit comme un rappel pour l'opération asynchrone n'est pas nécessairement appelé sur le même thread que celui qui a été utilisé pour appeler la méthode Begin, qui crée la demande initiale. Dans une application où le rappel doit être appelé sur un thread spécifique, vous devez marshaler explicitement l'exécution de la méthode End, qui gère la réponse, pour le thread voulu. Par exemple, dans les applications WPF (Windows Presentation Foundation) et Silverlight, la réponse doit être remarshalée au thread de l'interface utilisateur en utilisant la méthode BeginInvoke sur l'objet Dispatcher. Pour plus d'informations, consultez Querying the Data Service (WCF Data Services/Silverlight).

Voir aussi

Autres ressources

Client de données (WCF Data Services)