Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
29 juil. 2009 à 01:22
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
3 août 2009 à 11:14
Bonjour,
Voila j'ai quelques petits problème en ce qui concèrne la création de service web en mode asynchone.
En fait, déja j'y capte rien pour commencer (moi et le threading ca fé 2)
Pi en plus l'exemple de MSDN est trop cour, il ne disent même pas ou placer le code de la fonction en elle meme.
Et pour finir soit j'ai mal capté ou soit j'ai un souci avec mon VS car les codes trouvés un peu partout (les rares code), me demande de déclarer un objet qui, je pense doit être natif framework, car il n'est nullement fait allusion à une quelconque classe à créer ou référence externe, le problème c'est qu'après un F2 il n'existe pas dans ma solution ! Donc j'ai du raté une étape la...
Voici le code de ces messieurs de MS touvé sur cette page :
Imports System.Web.Services
<WebService(Namespace:="http://www.contoso.com/")> _
Public Class MyService
Inherits WebService
Public remoteService As RemoteService
Public Sub New()
MyBase.New()
' Create a new instance of proxy class for
' the Web service to be called.
remoteService = New RemoteService()
End Sub
' Define the Begin method.
<WebMethod()> _
Public Function BeginGetAuthorRoyalties(ByVal Author As String, _
ByVal callback As AsyncCallback, ByVal asyncState As Object) _
As IAsyncResult
' Begin asynchronous communictation with a different XML Web
' service.
Return remoteService.BeginReturnedStronglyTypedDS(Author, _
callback, asyncState)
End Function
' Define the End method.
<WebMethod()> _
Public Function EndGetAuthorRoyalties(ByVal asyncResult As _
IAsyncResult) As AuthorRoyalties
' Return the asynchronous result from the other Web service.
Return remoteService.EndReturnedStronglyTypedDS(asyncResult)
End Function
End Class
Public remoteService As RemoteService <== ce fameux remote service n'est présent dans aucune assembly du framework ! Alors allez savoir, j'ai bien tapé 'RemoteService' sur Google mais c'est comme taper 'String' vous ne tomberez pas que sur des site de développement
Pour ce qui est des autres exemples, il est fait allusion à Localhost:
localhost.UserInfoQuery() <= Mais Vs me dit:
- "Local quoi ?? jamais entendu parlé moi !"
Si quelqu'un a déja travailler avec des services web async un ptit coup de main serait pas du luxe , je seche completement !
Merci d'avance !
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 3 août 2009 à 11:10
J'ai enfin trouvé la solution, donc je vais la poster ici !
Je présise avant tout, que mon but était de créer un service web asynchrone pour consommer celui-ci de la même façon.
Et je me suis en faite cassé le tête pour rien, il existe plusieurs méthodes pour la gestion asynchrone des webmethode,
Ce pendant ce n'est pas parce qu'une webmethode est crée de façon asynchrone qu'elle sera forcément consommé de la même manière.
Je ne vais pas entrez dans les détails, mais le plus simple est de créer une méthode synchrone dans le web service, et de publier celui-ci. Dans un deuxième temps, il faut ajouter notre référence de service dans notre projet qui va consommer ce service web, et dans les propriétés avancés, cocher la case "Générer des opérations asynchrones", Visual Studio (wsdl.exe) va générer une classe proxy avec des méthodes et des événement afin de consommer toutes les webmethodes de ce service en mode asynchrone.
Voici à quoi ressemble ces méthodes :
Ici nous devons déclarer une instance de notre référence web avec une gestion des événements.
Private WithEvents svc As New MonService.MonServiceSoapClient
Pour chaque méthode, Visual Studio à générer un événement MaMethodeCompleted, retournant un MaMethodeCompletedEventArgs, retournant le résultat de la méthode, et les exception qui se sont éventuellement produites.
Private Sub HelloWordCompleted (ByVal sender As Object, _
ByVal e As MonService.HelloWordCompletedEventArgs) Handles svc.HelloWordCompleted
MessageBox.Show(e.Result, "Terminé")
End Sub
Pour faire appel à la méthode, Visual Studio génère un Sub MaFonctionAsync
Private Sub Button1_Click() Handles Button1.Click
Call HelloWordAsync
End Sub
Voilou ! Ca peut toujours servir
@+ Mayzz.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 29 juil. 2009 à 08:32
salut Mayzz,
euh.... j'suis comme tenté de croire que localhost est un namespace "perso", avec RemoteService une class perso de ce namespace, non des références au framework
on a
Function EndGetAuthorRoyalties(...) As localhost.AuthorRoyalties tout comme tu as
Function EndGetAuthorRoyalties(...) As AuthorRoyalties
enfin, c'est ce que j'en comprends ^^
et çà paraît logique ; ton webservice renvoie un objet (attendu) non?
NB : mais tout çà c'est pour un projet web
MSDN > MSDN Library > Langages et outils de développ... > (...) > Services Web XML avec ASP.NET > Comment : créer des méthodes de service Web asynchrones
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 29 juil. 2009 à 08:51
Effectivement PCPT ^^
' This imports the proxy class for the Web services
' that the sample communicates with.
Imports AsyncWS_VB.localhost
Mais il ne précise rien sur le sujet, en fait ils parlent d'une classe Proxy mais il disent pas comment l'obtenir, NameSpace perso ou pas ils pourraient le préciser, cela rend l'exemple incomplet
enfin, c'est ce que j'en comprends ^^
et çà paraît logique ; ton webservice renvoie un objet (attendu) non?
Bien en fait, non, pour mes fonctions je retourne une List(Of ClassMetierPerso) donc ca va. Le problème c'est que je ne peux déclarer le RemoteServive
et je but donc sur :
Etant donnée que je n'arrive pas à déclarer un remoteservice. Enfin bon, j'ai cherché un peu partout (fr et eng) mais rien trouvé de valable, ya plus sur la conso que sur la création.
NB : mais tout çà c'est pour un projet web
Effectivement ^^ Un sercvice web pour un site chargé de retourné une liste de contact (et leurs catégorie) pour les fournir à mon application winform (le fameux client mail), y'a bien d'autres moyens de procéder, en se connectant à la base via SQL, Server mais je souhaite quand même passer par un service web car celui-ci sera configurable depuis le panneau de config du site. Mais tu as raison, j'aurais peut être du poster sur aspfr.
Merci encore :)
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 3 août 2009 à 11:14
Pour chaque méthode, Visual Studio à générer un événement MaMethodeCompleted, retournant un MaMethodeCompletedEventArgs, retournant le résultat de la méthode, et les exception qui se sont éventuellement produites.
Oulala !!! Comment que j'me s'exprime pas très bien !
Je voulais dire :
Pour chaque méthode, Visual Studio à générer un événement MaMethodeCompleted, passant en paramètres une classe MaMethodeCompletedEventArgs, retournant le résultat de la méthode et les exceptions qui se sont éventuellement produites.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.