Bonjour à tous, voici mon probleme :
J'ai crée un Webservice que j'ai deploiyé sur 3 serveurs différents.
Dans mon application principal je souhaiterais appel un webservice de façon aléatoire.
Ma meilleur hypothèse est qu'il faut créer une interface MonInterface qui expose les methodes du webservice, puis après je pourrais faire cela :
Dim maVariable As MonInterface
Dim i As Integer = 2
Select Case i
Case 0 : maVariable = New monWebserviceServeur00()
Case 1 : maVariable = New monWebserviceServeur01()
Case 2 : maVariable = New monWebserviceServeur02()
End Select
maVariable.GetAccount()
Avez vous des idées pour que la solution fonctionne ?
Public WithEvents svc As MyNamespace.WebservSoapClient
Public URL1 As String = "http://mondomaine.com/monservice0.asmx"
Public URL1 As String = "http://mondomaine.com/monservice1.asmx"
Public URL1 As String = "http://mondomaine.com/monservice2.asmx"
'Dans une procédure :
svc = New MyNamespace.WebservSoapClient()
With svc.Endpoint
Select Case Choix
Case 1
.Address = New ServiceModel.EndpointAddress(URL1)
Case 2
.Address = New ServiceModel.EndpointAddress(URL2)
Case 3
.Address = New ServiceModel.EndpointAddress(URL3)
End Select
End With
Try
'
svc.Open()
'
'Ton code...
'
Catch wEx As Net.WebException
'
Catch Ex As Exception
'
End Try
Tu ne référence ton objet qu'une seule fois mais tu change d'url pour l'objet (bien sûr tu devras réinitialiser la liaison).
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Ajoute simplement les 3 références de service avec des espace de noms différent pour chacun...
Pourquoi te casse tu la tête ?
Ce n'est pas parce que les 3 services web ont les même méthodes que ca change quoi que ce soit, tant qu'il s'agit de 3 adresses différentes, c'est good
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
je comprends bien, cependant qu'en est-il si je souhaite qu'une variable puisse prendre en instanciation plusieur webservice. Meme si c'est le même code du webservice, sachant qu'il se trouve sur 3 serveurs différent, vb concidère que c'est 3 type différents. C'est pour cela que je souhaitais passer par une interface. Mais je ne sais pas si l'inferce doit etre directement implementer dans le webserice ou s'il faut créer une espece de wrapper pour interfacer les webservice.
Merci pour ton aide et pour tes explications trés clair.
J'allais sur le chemin de la création d'un interface, qui est une solution qui aurai fonctionné aussi, mais je ne savais pas qu'on pouvais changer l'uri d'un service.