Operaciones asincrónicas (WCF Data Services)

Las aplicaciones web deben tolerar una latencia superior entre cliente y servidor que las aplicaciones que se ejecutan en redes internas. Para optimizar el rendimiento y la experiencia del usuario de la aplicación, se recomienda usar los métodos asincrónicos de las clases DataServiceContext y DataServiceQuery cuando se tenga acceso a los servidores de WCF Data Services en la web.

Aunque los servidores de WCF Data Services procesen solicitudes HTTP de forma sincrónica, algunos métodos de las bibliotecas de cliente de WCF Data Services son sincrónicas y esperan hasta que se complete el intercambio completo de solicitudes y respuestas antes de continuar con la ejecución. Los métodos asincrónicos de las bibliotecas de cliente de WCF Data Services no esperan a que se complete este intercambio y pueden permitir que la aplicación mantenga una interfaz de usuario que siga respondiendo mientras tanto.

Puede realizar operaciones asincrónicas usando un par de métodos de las clases DataServiceQuery y DataServiceContext cuyos nombres comienzan por Begin y End, respectivamente. Los métodos Begin registran un delegado al que llama el servicio cuando finaliza la operación. Se debería llamar a los métodos End en el delegado registrado para controlar la devolución de llamada desde las operaciones completadas. Cuando llame al método End para completar una operación asincrónica, debe hacer lo mismo desde la misma instancia de DataServiceQuery o DataServiceContext que usó para comenzar la operación. Cada método Begin toma un parámetro state que puede pasar un objeto de estado a la devolución de llamada. Este objeto de estado se recupera desde la interfaz IAsyncResult que se proporciona con la devolución de llamada y se usa para llamar al método End correspondiente para completar la operación asincrónica. Por ejemplo, cuando se proporciona la instancia de DataServiceQuery como parámetro state al llamar al método BeginExecute de la instancia, IAsyncResult devuelve la misma instancia de DataServiceQuery. A continuación, esta instancia de DataServiceQuery se usa para llamar al método EndExecute para completar la operación de consulta. Para obtener más información, vea Cómo: Ejecutar consultas de servicio de datos asincrónicos (WCF Data Services).

Dd756365.note(es-es,VS.100).gifNota:
Las bibliotecas de cliente que se proporcionan en .NET Framework para Silverlight solo admiten operaciones asincrónicas.Para obtener más información, vea WCF Data Services (Silverlight).

Las bibliotecas de cliente de .NET Framework admiten las siguientes operaciones asincrónicas:

Operación Métodos

Ejecutar una instancia de DataServiceQuery.

  • BeginExecute

  • EndExecute

Ejecutar una consulta desde la instancia de DataServiceContext.

Ejecutar una consulta por lotes desde la instancia de DataServiceContext.

Cargar una entidad relacionada en la instancia de DataServiceContext.

Guardar los cambios efectuados en los objetos en la instancia de DataServiceContext

Consideraciones sobre los subprocesos para las operaciones asincrónicas

En una aplicación multiproceso, al delegado que se registra como devolución de llamada para la operación asincrónica no se le invoca necesariamente en el mismo subproceso que se usó para llamar al método Begin, encargado de crear la solicitud inicial. En una aplicación cuya devolución de llamada se debe invocar en un subproceso concreto, debe calcular explícitamente las referencias a la ejecución del método End, que controla la respuesta, para el subproceso deseado. Por ejemplo, en las aplicaciones basadas en Windows Presentation Foundation (WPF) y en las aplicaciones basadas en Silverlight, se deben calcular las referencias a la respuesta para el subproceso de interfaz de usuario mediante el método BeginInvoke en el objeto Dispatcher. Para obtener más información, vea Querying the Data Service (WCF Data Services/Silverlight).

Vea también

Otros recursos

Biblioteca de cliente de WCF Data Services