Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VB.NET]aide silverlight & webservice

visualstudio 2010

Sujet résolu
    10 septembre 2019 à 11:20:21

    Bonjour,

    je suis actuellement sur la reprise d'un projet en silverlitgh avec un framework 3.5 et un Webservice.

    j'aimerais que l'on m'explique en vb.net comment récupérer une valeur dans silverlight d'un serviceweb en asynchrone.

    Solution du projet

    service web:

    ' REMARQUE : vous pouvez utiliser la commande Renommer du menu contextuel pour changer le nom de classe "Service1" dans le code, le fichier svc et le fichier de configuration.
    Public Class Service1
        Implements IService1
    
        Public Sub New()
        End Sub
    
        Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
            Return String.Format("You entered: {0}", value)
        End Function
    
        Public Function GetDataUsingDataContract(ByVal composite As CompositeType) As CompositeType Implements IService1.GetDataUsingDataContract
            If composite Is Nothing Then
                Throw New ArgumentNullException("composite")
            End If
            If composite.BoolValue Then
                composite.StringValue &= "Suffix"
            End If
            Return composite
        End Function
    
    End Class
    

    silverlight

    Imports System.Windows.Navigation
    Imports System.ServiceModel
    Partial Public Class MainPage
        Inherits UserControl
    
        Public test As ServiceReference1.Service1Client
    
        Public Sub New()
            InitializeComponent()
        End Sub
    
        Private Sub ContentFrame_Navigated(ByVal sender As Object, ByVal e As NavigationEventArgs) Handles ContentFrame.Navigated
            For Each child As UIElement In LinksStackPanel.Children
                Dim hb As HyperlinkButton = TryCast(child, HyperlinkButton)
                If hb IsNot Nothing AndAlso hb.NavigateUri IsNot Nothing Then
                    If hb.NavigateUri = e.Uri Then
                        VisualStateManager.GoToState(hb, "ActiveLink", True)
                    Else
                        VisualStateManager.GoToState(hb, "InactiveLink", True)
                    End If
                End If
            Next
        End Sub
    
        Private Sub ContentFrame_NavigationFailed(ByVal sender As Object, ByVal e As NavigationFailedEventArgs) Handles ContentFrame.NavigationFailed
            e.Handled = True
            Dim errorWindow As ChildWindow = New ErrorWindow(e.Uri)
            errorWindow.Show()
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
            test.GetDataAsync(1111)
        End Sub
    
    
    End Class


    ce que je veux est envoyer la valeur a Getdata en Asynchrone et qu'il me la retour dans un simple label, pour comprendre comment cela fonctionne.

    Merci de votre compression.

    PS: je n’ai pas le choix sur la techno a utiliser. Elle est imposer.

    Merci a vous

    -
    Edité par P3rs0nn3 10 septembre 2019 à 11:35:33

    • Partager sur Facebook
    • Partager sur Twitter
      10 septembre 2019 à 12:33:04

      J'ai pas de projet SilverLight sous la main mais dans un projet VB.NET  Winform, c'est juste "click droit sur le projet->Ajouter Référence de service..." et vous entrez l'URL du WSDL de votre WebService.

      Cela génèrera automatiquement une classe proxy d'accès à ce WebService.

      EDIT: en regardant votre copie d'écran, vous l'avez déjà fait : ServiceReference1, que reprochez-vous à la classe proxy générée ?

      -
      Edité par bacelar 10 septembre 2019 à 12:34:54

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        10 septembre 2019 à 12:42:41

        merci, ce que je ne comprend pas est la syntaxe a utiliser dans silverlight pour retourner la valeur de getdata()

        l'ajout d'un service de référence n'est pas le problème. Ce que je ne sais pas faire est la communication entre silverlight(IHM) et WCFservice.

        -
        Edité par P3rs0nn3 10 septembre 2019 à 12:52:17

        • Partager sur Facebook
        • Partager sur Twitter
          10 septembre 2019 à 16:06:00

          Vous devez avoir une classe qui est auto-générée dans le namespace ServiceReference1.

          Utilisez une instance et les méthodes associées. Si votre générateur de code depuis le WSDL n'est pas trop à la rue, il doit avoir générer les versions asynchrones des appels de méthodes.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            11 septembre 2019 à 11:03:14

            Bonjour, Désoler mais vous cherchez tros compliquer. Ce que je cherche est juste un code pour visualiser un Exemple en VB.net mais pas en windows FORM ou console, je le cherche en silverlight.

            -
            Edité par P3rs0nn3 11 septembre 2019 à 11:06:17

            • Partager sur Facebook
            • Partager sur Twitter
              11 septembre 2019 à 12:41:47

              >Désoler mais vous cherchez tros compliquer

              Là, je crois que c'est vous qui cherchez trop compliqué.

              Dans la classe auto-générée, " ServiceReference1.Service1" je suppose, ou un truc approchant, il doit avoir une méthode de nom "BeginGetData".

              https://www.codeproject.com/Articles/31018/Synchronous-Web-Service-Calls-with-Silverlight-Dis

              Qu'est-ce qui vous empêche de vous en servir ???

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                12 septembre 2019 à 17:57:04

                merci, pour le site web même si l'exemple est en C#, je pense pouvoir comprendre ce qu'il explique.

                Encore Merci de votre aide.

                • Partager sur Facebook
                • Partager sur Twitter
                  18 septembre 2019 à 13:43:57

                  Pour faire simple j'ai creer sur silverlight un class pour me connecter a mon service

                  Public Class CDynWebSrv
                      Public Function connect() As ServiceReference1.WebServiceClient
                          Try
                              Dim url As New Uri("http://localhost:52655/WebService.svc")
                              Dim endp As New System.ServiceModel.EndpointAddress(url)
                              Dim srv As New ServiceReference1.WebServiceClient("BasicHttpBinding_WebService", endp)
                              Return srv
                          Catch ex As Exception
                              Return Nothing
                          End Try
                      End Function
                  End Class
                  


                  ensuite j'ai créer un sub retourok et configurais mon bouton

                      Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
                              Dim cdy As New CDynWebSrv
                              Dim service = cdy.connect
                              AddHandler service.GetDataCompleted, AddressOf retourok
                              service.GetDataAsync()
                    End Sub Private Sub retourok(ByVal sender As Object, ByVal e As ServiceReference1.GetDataCompletedEventArgs) If e.Result = True Then Label1.Content = e.Result Else MessageBox.Show("Erreur récupération Hello") End If End Sub
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [VB.NET]aide silverlight & webservice

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown