Compartir a través de


Cómo: Implementar una operación de servicios asincrónica

En aplicaciones de Windows Communication Foundation (WCF), se puede implementar una operación de servicio de forma asincrónica o sincrónica sin dictar al cliente cómo llamarla. Por ejemplo, las operaciones de servicio asincrónicas pueden realizar llamadas sincrónicamente y a las operaciones de servicio sincrónicas se las puede llamar de manera asincrónica. Para obtener un ejemplo que muestre cómo llamar a una operación de manera asíncrona en una aplicación de cliente, vea Cómo llamar a operaciones del servicio WCF de forma asincrónica. Para obtener más información acerca de operaciones sincrónicas y asincrónicas, vea Diseño de contratos de servicios y Operaciones sincrónicas y asincrónicas.

Implementación de una operación de servicio de manera asincrónica

  1. En su contrato de servicio, declare un par de métodos asincrónicos según las directrices de diseño asincrónico de .NET. El método Begin toma un parámetro, un objeto de devolución de llamada y un objeto de estado, y devuelve un System.IAsyncResult y un método End correspondiente que toma System.IAsyncResult y devuelven el valor devuelto. Para obtener más información sobre las llamadas asincrónicas, vea Asynchronous Programming Design Patterns.

  2. Marque el método Begin del par de métodos asincrónicos con el atributo System.ServiceModel.OperationContractAttribute y establezca la propiedad System.ServiceModel.OperationContractAttribute.AsyncPattern en true. Por ejemplo, el código siguiente realiza los pasos 1 y 2.

  3. Implemente el par de método Begin/End en su clase de servicio según las instrucciones de diseño asincrónicas. Por ejemplo, el siguiente ejemplo de código muestra una implementación en la que una cadena se escribe en la consola en porciones Begin y End de la operación de servicio asincrónica y el valor devuelto de la operación End se devuelve al cliente. Para obtener el ejemplo de código completo, consulte la sección Ejemplo.

Ejemplo

Los siguientes ejemplos de código muestran:

  1. Una interfaz del contrato de servicio con:
    1. Una operación SampleMethod sincrónica.
    2. Una operación BeginSampleMethod asincrónica.
    3. Un par de operaciones BeginServiceAsyncMethod/EndServiceAsyncMethod asincrónicas.
  2. Una implementación de servicio mediante un objeto System.IAsyncResult.

Consulte también

Conceptos

Diseño de contratos de servicios
Operaciones sincrónicas y asincrónicas