none
Consumir Web Services con metodos Asincronos desde una aplicacion Win form RRS feed

  • Debate general

  • Hola a todos,
    Buscando en la web encontre como crear metodos asincronos en un web Services y consumirlos desde una aplicacion web, ahora ( no podria decir si es diferente) como consumo desde una aplicacion win.
    Les paso el codigo que tengo en mi web services:

    public

     

    class wsTest : System.Web.Services.WebService

    {

     

    public delegate string ExcutePackageAsincrono(SSIS_PackageParameter packageParameter);

     

    public wsTest()

    {

     

    //Uncomment the following line if using designed components

     

    //InitializeComponent();

    }

     

    public class MyState

    {

     

    public object EstadoPrevio;

     

    public ExcutePackageAsincrono dlg;

    }

    [

    WebMethod()]

     

    public IAsyncResult BeginExecutePackageAsincrono(SSIS_PackageParameter packageParameter, AsyncCallback cb, object s)

    {

     

    ExcutePackageAsincrono dlg = new ExcutePackageAsincrono(ExecutePackageAsincrono);

     

    MyState ms = new MyState();

    ms.dlg = dlg;

    ms.EstadoPrevio = s;

     

    return dlg.BeginInvoke(packageParameter, cb, ms);

    }

    [

    WebMethod()]

     

    public string EndExecutePackageAsincrono(IAsyncResult call)

    {

     

    MyState ms = (MyState)call.AsyncState;

     

    return ms.dlg.EndInvoke(call);

    }

     

    public string ExecutePackageAsincrono(SSIS_PackageParameter packageParameter)

    {

     

    Thread.Sleep(5000);

     

    string str = packageParameter.PackagePath;

     

    return "Asincrono: " + packageParameter.PackageName;

    }

    [

    WebMethod()]

     

    public string ExecutePackageSincrono(SSIS_PackageParameter packageParameter)

    {

     

    string str = packageParameter.PackagePath;

     

    return "Sincrono: " + packageParameter.PackageName;

    }

    }

    Si algien tiene algun ejemplo de trabajo con web services con metodos asincronos, gracias.

    Slds,

    Fernando Rosas

    viernes, 16 de octubre de 2009 14:44

Todas las respuestas

  • hola

    pero lo que quieres es crear el servicio que soporte lo asincronico, o que la invocacion sea asincrona
    porque ha diferencia

    si necesitras que la invocacion sea asincrona no el servicio, simplemente crea un servicio web normal comuni y corriente
    es el proxy cuando creas la referencia desde tu la aplicacion winform, veras que si creas la isntnacia dle servicio pareceran metodo como

    Begin....

    en donde los... representan los metodos que has crrado en tu web service

    Working With Asynchronous .NET Web Service Clients


    sino peudes hacer una prueba crea un webservice de forma normal, (o sea no como lo que has posteado) y luego desde tu aplciacion winforma realiza un web reference, veras que si creas una instancia de este y accedes a lso webmethods para invocar tienes los nombres que empeizan con Begin

    a esto le deberas asignar un metodo de callback para que se redireccione cuando vuelva la llamada.


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 16 de octubre de 2009 15:08
  • hola

    me parece que igual entendi mal la pregunta, o sea els ervici ya lo tienes, lo que queires es invocarlo

    Creating Asynchronous XML Web Service Methods

    Communicating with XML Web Services Asynchronously

    el importante es el segundo link

    en dodne veras que hace

    // Begin the Async call to Factorize.
    IAsyncResult ar = pf.BeginFactorize(factorizableNum, null, null);

    // Wait for the asynchronous operation to complete.
    ar.AsyncWaitHandle.WaitOne();

    // Get the completed results.
    long[] results;    
    results = pf.EndFactorize(ar);

    como veras la invocacion el Begin lo asigna a un
    IAsyncResult  el cual espera el retorno

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 16 de octubre de 2009 15:40