Services web asynchrones [Résolu]

Signaler
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
-
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
-
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.

4 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
28
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.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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

si on prend cet exemple :
http://msdn.microsoft.com/fr-fr/library/dwba7yy7(VS.80).aspx

remoteService = New localhost.RemoteService()
(attention à la casse??)

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


le forum ASP serait plus approprié

[hr]
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
28
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 :

Return remoteService.BeginReturnedStronglyTypedDS(Author, _
            callback, asyncState)


et :

Return remoteService.EndReturnedStronglyTypedDS(asyncResult)


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.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
28
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.