Llamar de forma asincrona a servicios WCF - Blog de Oskar Alvarez

Llamar de forma asincrona a servicios WCF

A veces nos interesa llamar de forma asincrona a un servicio WCF que sabemos que va a tardar cierto tiempo en procesarse y queremos que nuestro proceso cliente siga haciendo cosas mientras el servicio se va ejecutando.

Es bastante sencillo utilizar llamadas asincronas en servicios WCF, solo tenemos que poner el parametro /async cuando ejecuto la herramienta svcutil para generar el proxy en el cliente

 

SvcUtil http://localhost:8000/ /async /out:ProxyAsync.cs /noConfig

 

De manera que me generara el proxy(ProxyAsync) . con mis metodos del ServiceContract pero me añadira un metodo BeginNombreMetodo como por ejemplo si mi servicio tiene el metodo suma

int Suma(int numer1,int number2)

Me generara una clase en el proxy con la firma

IAsyncResult BeginSuma(int number1,int number2,AsyncCallback callback,object asyncState)

Donde los dos  primeros parametros, son los parametros del metodo y luego tiene el metodo donde se llamara cuando haya finalizado el servicio WCF en el servidor y un objeto con el estado de la sincronización

EL metodo que llamara cuando se finalize el servicio debe de tener la firma OnCompletion(IAsyncResult result)

En el parametro result tengo el valor que devuelva el servicio WCF, que recogere a traves de un metodo que genera el proxy que se llamara siempre EndNombreMetodo

Un ejemplo sencillo seria

 

  private void Btn_Click(object sender, EventArgs e)
       {
           m_Proxy.BeginSuma(2, 3, OnCompletion, null);
       }
      void OnCompletion(IAsyncResult result)
      {
         int sum = m_Proxy.EndSuma(result);
         result.AsyncWaitHandle.Close();

         MessageBox.Show("Suma = " + sum)
      }
Published 1/5/2007 17:36 por Oskar Alvarez
Archivado en:
Comparte este post:
http://geeks.ms/blogs/oalvarez/archive/2007/05/01/llamar-de-forma-asincrona-a-servicios-wcf.aspx

Comentarios

# re: Llamar de forma asincrona a servicios WCF

Gracias señor, siga con sus artículos sobre WCF por favor !!!

Tuesday, January 20, 2009 8:19 PM por espinete

# re: Llamar de forma asincrona a servicios WCF

Buen articulo, cual seria la diferencia entre ajax q tambien llama a wcf de forma asincrona... y como seria de utilizarlo...

Tuesday, March 31, 2009 4:45 PM por Roberto

# re: Llamar de forma asincrona a servicios WCF

Hola Oskar.

Estoy haciendo una aplicación en Silverlight(SL) con un acceso a datos mediante un fichero WCF en el proyecto ASP.NET que le embebe.

Por defecto, al crear una referencia web desde el proyecto SL, se me genera una conexión asíncrona con todos los elementos que comentas en el post.

Debido a las necesidades de la APP, necesito que esa comunicación sea síncrona, en vez de asíncrona. ¿Sabrías decirme que es lo que debo de cambiar, o en el caso de que no se pudiese, como lo puedo hacer?

Muchas gracias y un saludo.

Monday, November 08, 2010 11:26 AM por SJ

# re: Llamar de forma asincrona a servicios WCF

Hola de nuevo.

Después de buscar un poco, he encontrado un proyecto en el que consigue hacer una llamada síncrona. Es una forma un poco rudimentaria, pero válida a fin de cuentas.

El link:

beta.codeproject.com/.../ArticleVersion.aspx

Un saludo y gracias de todas formas.

Tuesday, November 09, 2010 12:38 PM por SJ