Share via


Asynchrone Vorgänge (WCF Data Services)

Bei Webanwendungen muss die gegenüber Anwendungen, die in internen Netzwerken ausgeführt werden, höhere Latenz zwischen Client und Server berücksichtigt werden. Um die Leistung und das vom Benutzer wahrgenommene Verhalten der Anwendung zu optimieren, empfiehlt es sich, die asynchronen Methoden der DataServiceContext-Klasse und der DataServiceQuery-Klasse zu verwenden, wenn über das Internet auf WCF Data Services -Server zugegriffen wird.

Obwohl die WCF Data Services -Server HTTP-Anforderungen asynchron verarbeiten, sind einige Methoden der WCF Data Services -Clientbibliotheken synchron und warten, bis der gesamte Anforderung/Antwort-Austausch abgeschlossen wurde, bevor die Ausführung fortgesetzt wird. Die asynchronen Methoden der WCF Data Services -Clientbibliotheken warten nicht, bis dieser Austausch abgeschlossen wurde. Sie können es der Anwendung ermöglichen, während dieses Austauschs eine reagierende Benutzeroberfläche beizubehalten.

Sie können asynchrone Vorgänge mit einem Paar von Methoden für die DataServiceContext-Klasse und die DataServiceQuery-Klasse ausführen, die mit Begin bzw. End beginnen. Die Begin-Methoden registrieren einen Delegaten, den der Dienst aufruft, wenn der Vorgang abgeschlossen ist. Die End-Methoden sollten im Delegaten aufgerufen werden, der zum Behandeln des Rückrufs von den abgeschlossenen Vorgängen registriert ist. Wenn Sie die End-Methode aufrufen, um einen asynchronen Vorgang abzuschließen, müssen Sie dies aus der gleichen DataServiceQuery-Instanz oder DataServiceContext-Instanz tun, mit der Sie den Vorgang begonnen haben. Jede Begin-Methode akzeptiert einen state-Parameter, der ein Zustandsobjekt an den Rückruf übergeben kann. Dieses Zustandsobjekt wird aus dem IAsyncResult abgerufen, das mit dem Rückruf angegeben wird, und wird zum Aufrufen der entsprechenden End-Methode zum Abschließen des asynchronen Vorgangs verwendet. Wenn Sie beispielsweise die DataServiceQuery-Instanz als state-Parameter beim Aufrufen der BeginExecute-Methode für die Instanz angeben, wird die gleiche DataServiceQuery-Instanz vom IAsyncResult zurückgegeben. Diese Instanz von DataServiceQuery wird anschließend verwendet, um die EndExecute-Methode zum Abschließen des Abfragevorgangs aufzurufen. Weitere Informationen finden Sie unter Gewusst wie: Ausführen von asynchronen Datendienstabfragen (WCF Data Services).

Dd756365.note(de-de,VS.100).gifHinweis:
Von den Clientbibliotheken, die in .NET Framework für Silverlight enthalten sind, werden nur asynchrone Vorgänge unterstützt.Weitere Informationen finden Sie unter WCF Data Services (Silverlight).

Die .NET Framework-Clientbibliotheken unterstützen die folgenden asynchronen Vorgänge:

Vorgang Methoden

Ausführen einer DataServiceQuery.

  • BeginExecute

  • EndExecute

Ausführen einer Abfrage aus dem DataServiceContext.

Ausführen einer Batchabfrage aus dem DataServiceContext.

Laden einer verknüpften Entität in den DataServiceContext.

Speichern von Änderungen an Objekten im DataServiceContext

Überlegungen zum Threading für asynchrone Vorgänge

In einer Multithreadanwendung wird der als Rückruf für den asynchronen Vorgang registrierte Delegat nicht unbedingt auf dem gleichen Thread aufgerufen, der zum Aufrufen der Begin-Methode verwendet wurde, die die ursprüngliche Anforderung erstellt. In einer Anwendung, wo der Rückruf auf einem bestimmten Thread aufgerufen werden muss, müssen Sie explizites Marshalling der Ausführung der End-Methode, die die Antwort behandelt, zum gewünschten Thread durchführen. In WPF (Windows Presentation Foundation)-basierten Anwendungen und Silverlight-basierten Anwendungen muss z. B. das Marshalling der Antwort zurück zum Benutzeroberflächenthread mit der BeginInvoke-Methode für das Dispatcher-Objekt durchgeführt werden. Weitere Informationen finden Sie unter Querying the Data Service (WCF Data Services/Silverlight).

Siehe auch

Weitere Ressourcen

WCF Data Services-Clientbibliothek