Compartir a través de


Cómo: Implementar un cliente de servicios web asincrónico orientado a eventos con ASP.NET 2.0

Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.

En la versión 2.0 de .NET Framework, el código proxy generado por Herramienta Lenguaje de descripción de servicios web (Wsdl.exe) es compatible con el nuevo event-driven asynchronous programming model. Combinando el modelo de programación asincrónica orientado a eventos y la generación del proxy automática de clientes web de ASP.NET 2.0, puede generar rápidamente las aplicaciones web basadas en servicios Web de alto rendimiento.

Multithreaded Programming with the Event-based Asynchronous Pattern introduce un nuevo modelo de programación asincrónica que usa eventos para administrar las devoluciones de llamadas, lo que facilita la generación de aplicaciones multiproceso sin tener que implementar complejo código multiproceso. Para obtener información general del nuevo modelo asincrónico orientado a eventos, consulte Event-based Asynchronous Pattern Overview. Para obtener detalles sobre las implementaciones de cliente con el nuevo modelo, consulte How to: Implement a Client of the Event-based Asynchronous Pattern.

Los clientes de servicios Web que están generados utilizando la aplicación ASP.NET en la versión 2.0 de .NET Framework se pueden aprovechar del nuevo subdirectorio de App_WebReferences, que puede compilar dinámicamente un archivo WSDL en código proxy cuando la aplicación ASP.NET del cliente llama a un servicio Web XML que admite el contrato del WSDL.

Para obtener el ejemplo completo, vea el tutorial rápido de RADAsync en ASP.NET Web Services QuickStarts.

Implementar un Cliente de servicios Web Orientado a eventos

  1. Crear un servicio Web XML con un método Web sincrónico que realiza algún comportamiento que consume mucho tiempo y se hace mejor de forma asincrónica.

    [WebMethod]
    public string HelloWorld() {
      Thread.Sleep(5000);
      return "Hello World";
    }
    
    <WebMethod()> _
    Public Function HelloWorld() As String 
      Thread.Sleep(5000)
    ..Return "Hello World"
    End Function
    
  2. En la aplicación ASP.NET del cliente, agregue el atributo Async a su directiva @ Page y establézcalo en true y utilice la directiva @ Import para importar el espacio de nombres System.Threading.

    <%@ Page Language="C#" Debug="true" Async="true" %>
    <%@ Import Namespace="System.Threading" %>
    
    <%@ Page Language="VB" Debug="true" Async="true" %>
    <%@ Import Namespace="System.Threading" %>
    
  3. Para utilizar la generación del proxy automática, genere un archivo WSDL (utilizando el Herramienta Lenguaje de descripción de servicios web (Wsdl.exe)) y coloque el archivo en el subdirectorio del App_WebReferences cliente. Para obtener información detallada, vea ASP.NET Web Site Layout.

  4. Genere normalmente la aplicación de cliente de servicios Web creando un nuevo objeto utilizando el nombre de clase del servicio más la cadenaWaitService y asigne la dirección URL del Servicio Web a la propiedad Url. Por ejemplo, si el nombre de clase del servicio es HelloWorld, entonces su cliente crea un objeto HelloWorldWaitService.

    HelloWorldWaitService service = new HelloWorldWaitService();
    service.Url = "https://localhost/QuickStartv20/webservices/Samples/RADAsync/cs/Server/HelloWorldWaitService.asmx";
    
    Dim service As New HelloWorldWaitService()
    service.Url = "https://localhost/QuickStartv20/webservices/Samples/RADAsync/vb/Server/HelloWorldWaitService.asmx"
    
  5. En el código de la aplicación cliente, asigne un controlador de eventos al evento Completed de su proxy. En el ejemplo de código siguiente, la página ASP.NET del cliente tiene un método HelloWorldCompleted al que se llama cuando el método de servicio Web devuelve un valor.

    //Add our callback function to the event handler. 
    service.HelloWorldCompleted += this.HelloWorldCompleted; 
    
    'Add our callback function to the event handler
    AddHandler service.HelloWorldCompleted, AddressOf Me.HelloWorldCompleted
    
  6. En el código de la aplicación cliente, llame al método Async en el proxy. (Este método es el mismo nombre que el del método Web pero con "Async" anexado a él. Para obtener información detallada, consulte How to: Implement a Client of the Event-based Asynchronous Pattern. Esta llamada de método aparece como una llamada sincrónica en la página ASP.NET del cliente, pero devuelve un valor inmediatamente. La página ASP.NET del cliente no es devuelta al explorador hasta que la llamada asincrónica concluya, se provoque el evento Completed del proxy y el método de controlador haya ejecutado.

    service.HelloWorldAsync("second call");
    
    service.HelloWorldAsync("second call")
    

Vea también

Otros recursos

ASP.NET Web Services QuickStarts