Sobre WebServices asincronicos

04/04/2006 - 16:38 por Carlos Maggiotti | Informe spam
Hola Gente...

Molesto con lo siguiente

Alguien podria mandar un ejemplito HelloWorld de implementacion y consumo de
un WebService asincronico?

Saludos y gracias de antemano...

Carlos Maggiotti
Departamento de Sistemas
Fundicion San Cayetano

Preguntas similare

Leer las respuestas

#1 Jesús López
04/04/2006 - 20:07 | Informe spam
¿Con qué versión de Visual Studio ?
¿Desde qué tipo de aplicación llamas al servicio web? Aplicación Windows,
Servicio Windows, aplicación ASP.NET, de consola

Saludos:

Jesús López




"Carlos Maggiotti" <msnews.microsoft.com> escribió en el mensaje
news:%23rJ2CX$
Hola Gente...

Molesto con lo siguiente

Alguien podria mandar un ejemplito HelloWorld de implementacion y consumo
de un WebService asincronico?

Saludos y gracias de antemano...

Carlos Maggiotti
Departamento de Sistemas
Fundicion San Cayetano

Respuesta Responder a este mensaje
#2 Carlos Maggiotti
04/04/2006 - 20:08 | Informe spam
1 - VS 2005.
2 - Windows App.


"Jesús López" escribió en el mensaje
news:
¿Con qué versión de Visual Studio ?
¿Desde qué tipo de aplicación llamas al servicio web? Aplicación Windows,
Servicio Windows, aplicación ASP.NET, de consola

Saludos:

Jesús López




"Carlos Maggiotti" <msnews.microsoft.com> escribió en el mensaje
news:%23rJ2CX$
Hola Gente...

Molesto con lo siguiente

Alguien podria mandar un ejemplito HelloWorld de implementacion y consumo
de un WebService asincronico?

Saludos y gracias de antemano...

Carlos Maggiotti
Departamento de Sistemas
Fundicion San Cayetano





Respuesta Responder a este mensaje
#3 Carlos Maggiotti
05/04/2006 - 15:24 | Informe spam
Public Class Form1

Dim oWS As New TestAsyncWS.Service

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

oWS.HelloWorldAsync("Sarasa")

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

AddHandler oWS.HelloWorldCompleted, AddressOf HelloWorldCompleted

End Sub

Private Sub HelloWorldCompleted(ByVal sender As Object, ByVal args As
HelloWorldCompletedEventArgs)

'Display the return value

lblHello.Text = args.Result

End Sub

End Class
Respuesta Responder a este mensaje
#4 Jesús López
05/04/2006 - 16:32 | Informe spam
Vaya !! parece que he llegado tarde. Bueno, de todas maneras yo tenía
preparado un ejemplo que es algo más que un HelloWord ya que permite
cancelar la petición al servicio web y maneja la habilitación y
deshabilitación de los controles. Así que lo voy a poner ..

Supongamos que tenemos un servicio web en
http://localhost/WebServices/WebService.asmx con este código:

Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function GetCreditCards() As CreditCard()
Threading.Thread.Sleep(2000)
Return New CreditCard() { _
New CreditCard(1, "Visa"), _
New CreditCard(2, "American Express"), _
New CreditCard(3, "Master Card") _
}
End Function

End Class

<Serializable()> _
Public Class CreditCard

Private _CreditCardId As Integer
Public Property CreditCardId() As Integer
Get
Return _CreditCardId
End Get
Set(ByVal value As Integer)
_CreditCardId = value
End Set
End Property


Private _CreditCardName As String
Public Property CreditCardName() As String
Get
Return _CreditCardName
End Get
Set(ByVal value As String)
_CreditCardName = value
End Set
End Property

Public Sub New(ByVal CreditCardId As Integer, ByVal CreditCardName As
String)
Me.CreditCardId = CreditCardId
Me.CreditCardName = CreditCardName
End Sub

Public Sub New()
End Sub


End Class

Como ves, el servicio web tiene un método GetCretitCards que devuelve un
array de CreditCard con las targetas de crédito más usuales. Este método
"duerme" durante un par de segundos para que luego desde el cliente Windows
veamos claramente el efecto de la llamada asíncrona. En realidad los
servicios web no son asíncronos, lo que puede ser asíncrona es la llamada al
servicio web.

Supongamos también que tenemos una aplicación Windows llamada WinWebServices
con un formulario en el que tenemos:

(1) El botón LoadCreditCardsButton que cuando se pulsa se inicia la llamada
asíncrona al servicio web. Al pulsarse, el botón se desactiva para evitar
que el usuario lo pulse mientras está en curso la petición al servicio web y
así se evita que se hagan peticiones innecesarias. Asímismo, al pulsarse
este botón, se activa el botón CancelLoadCreditCardsButton para permitir al
usuario cancelar la petición. También, al pulsarse este botón, se cambia el
texto del mismo a "Cargando las tarjetas de crédito.." para indicar al
usuario que la operación está en curso. Habría sido más bonito sacar un gif
animado dando vueltecitas o quizá una barra de progreso, pero bueno, para
este ejemplo vale.

(2) El botón CancelLoadCreditCardsButton que inicialmente está desactivado,
pero que luego permite cancelar la petición en curso.

(3) El listbox CreditCardsListBox que mostrará las targetas de crédito
cuando se reciban los datos del servicio web.

Este es el código del formulario:

Public Class Form1

Dim WithEvents ws As New WebServices.WebService

Dim State As Object

Private Sub LoadCreditCardsButton_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles LoadCreditCardsButton.Click
Me.CreditCardsListBox.DataSource = Nothing
State = New Object()
ws.GetCreditCardsAsync(State)
Me.CancelLoadCreditCardsButton.Enabled = True
LoadCreditCardsButton.Text = "Cargando las tarjetas de crédito..."
LoadCreditCardsButton.Enabled = False
End Sub

Private Sub ws_GetCreditCardsCompleted(ByVal sender As Object, ByVal e
As WebServices.GetCreditCardsCompletedEventArgs) Handles
ws.GetCreditCardsCompleted
If e.Cancelled Then
MsgBox("Carga cancelada", MsgBoxStyle.Information)
ElseIf e.Error Is Nothing Then
Dim CreditCards() As WebServices.CreditCard = e.Result
Me.CreditCardsListBox.DataSource = CreditCards
Me.CreditCardsListBox.ValueMember = "CreditCardId"
Me.CreditCardsListBox.DisplayMember = "CreditCardName"
Else
MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Error obteniendo
las tarjetas de crédito")
End If
LoadCreditCardsButton.Enabled = True
LoadCreditCardsButton.Text = "Cargar tarjetas de crédito"
Me.CancelLoadCreditCardsButton.Enabled = False
Me.State = Nothing

End Sub

Private Sub CancelLoadCreditCardsButton_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
CancelLoadCreditCardsButton.Click
If Me.State IsNot Nothing Then
ws.CancelAsync(Me.State)
Me.State = Nothing
End If
Me.CancelLoadCreditCardsButton.Enabled = False
End Sub
End Class

Saludos:

Jesús López

"Carlos Maggiotti" <msnews.microsoft.com> escribió en el mensaje
news:
Public Class Form1

Dim oWS As New TestAsyncWS.Service

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

oWS.HelloWorldAsync("Sarasa")

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

AddHandler oWS.HelloWorldCompleted, AddressOf HelloWorldCompleted

End Sub

Private Sub HelloWorldCompleted(ByVal sender As Object, ByVal args As
HelloWorldCompletedEventArgs)

'Display the return value

lblHello.Text = args.Result

End Sub

End Class


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida