2009-10-15 11 views
0

Nous avons une série de services Web qui vivent dans des environnements différents (dev/qa/mise en scène/production) qui sont accessibles à partir d'une application Web, un site Web et d'autres services. Il y a aussi quelques zones de service différentes. Donc, pour la production, nous avons des services sur quatre boîtes différentes.Utilisation des services Web dans différents environnements

Nous conquirent la question de la chaîne de connexion db en vérifiant le nom d'hôte dans global.asax et fixer quelques applications larges paramètres en fonction de ce nom d'hôte. Il y a un fichier config.xml dans le contrôle de source qui liste les différents noms d'hôtes et les paramètres qu'ils devraient obtenir.

Cependant, on n'a pas trouvé une solution élégante pour les services Web. Jusqu'à présent, nous avons ajouté des références à tous les environnements des projets et ajouté plusieurs instructions using aux fichiers qui utilisent les services. Lorsque nous extraira le projet, nous décommenter la déclaration à l'aide appropriée pour l'environnement que nous sommes dans

Il ressemble à ceci:.

// Development 
// using com.tracking-services.dev 
// using com.upload-services.dev 

// QA 
// using com.tracking-services.qa 
// using com.upload-services.qa 

// Production 
// using com.tracking-services.www 
// using com.upload-services.www 

Il est évident que nous utilisons les services web de plus en plus cette technique se de plus en plus lourd.

J'ai envisagé de placer les espaces de noms dans web.config.dev, web.config.qa, etc et de les échanger au démarrage de l'application dans global.asax. Je ne pense pas que cela fonctionnera car au moment où global.asax est lancé, la compilation est déjà faite et les changements de web.config n'auront pas beaucoup d'effet.

Depuis les « meilleures pratiques » comprennent l'utilisation des services Web pour l'accès aux données, j'espère que ce n'est pas un problème unique et quelqu'un a déjà trouvé une solution.

Ou allons-nous à propos de tout cela?

Edit: Ce sont des services Web ASMX. Il n'y a pas d'URL référencée dans le fichier web.config que je peux trouver.

+0

Pourquoi avez-vous différents espaces de noms dans vos services Web pour différents environnements? Les mêmes binaires ne sont-ils pas déployés sur le dev et le qa et la production? –

+0

Les différents espaces de noms sont la manière dont les différentes URL sont spécifiées. Dev, QA et Production ont souvent des binaires différents car tout changement doit être développé dans Dev puis déplacé vers QA pour les tests et finalement poussé vers la production. Les trois binaires pourraient être différents. –

+0

Les espaces de noms ne doivent pas changer. C'est une erreur majeure. –

Répondre

1

Faire une configuration de référence et utiliser pour la mise urls cible selon le cas. Aucune raison d'avoir des procurations séparées du tout.

+1

Cela semble être une bonne idée. Umm ... comment je fais ça? –

+0

Exactement comment dépend de quels types de proxies (ASMX vs WCF) vous utilisez. Dans les deux cas, il doit y avoir des éléments dans la configuration de votre application générés lors de la création du proxy. Ajustez l'URL dans cela comme approprié. Vous devrez peut-être définir la propriété dynamique sur le proxy sur true et régénérer. Vous pouvez également généralement fournir les informations de configuration dans le code si vous voulez le faire de cette façon ou avoir votre propre infrastructure de configuration. –

Questions connexes