2010-09-11 6 views
0

Les services Web peuvent-ils être utilisés dans un modèle d'usine étant donné que le code est généré automatiquement et que je ne souhaite pas le modifier (pour ajouter une classe de base par exemple)? Une raison à cela serait si vous aviez 2 services Web identiques, l'un pour les données de test et l'autre pour les données en direct, et vous vouliez basculer entre les services en fonction de l'environnement dans lequel le code était exécuté.Modèle d'usine pour les services Web test et en direct

[Modifier]
J'utilise C# 3.

Répondre

1

Si vous utilisez C# et SOAP, vous pouvez changer la destination lors de l'exécution:

var webSvc = new WebServerObjectName(); 
webSvc.Url = "http://examples/com/foo.asmx"; 

//or pull from .config, etc. 
webSvc.Url = ConfigurationManager.AppSettings["WebServiceUri"].ToString(); 

//make the call to the web method 
var custs = webSvc.GetCustomerList(); 

le flux serait:

  • au moment de la conception, créez la référence Web. Établissez le contrat et codez-le (entrée & paramètres de sortie). Vous aurez seulement besoin de le faire une fois, tant que le contrat reste le même.
  • lors de l'exécution, modifiez l'URL/l'URI/la cible du service Web. Évidemment, il faudrait avoir la même signature contract/params/method, sinon l'appel échouerait à l'exécution.
  • faire l'appel
+0

Merci d'avoir répondu, je ne suis pas clair sur la façon dont cela fonctionnerait en utilisant une référence Web. Est-ce que je crée une référence Web et que je change simplement l'URL lors de l'exécution? – DaveC

+0

@DaveC: oui, il suffirait de créer une référence Web une seule fois. Si nous parlons de .NET, cela ne fait que rendre les classes proxy pour abstraire les détails HTTP. Alors oui, juste une fois, et changez le point de terminaison d'URL à l'exécution avant l'appel webmethod. –

Questions connexes