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.
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? –
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. –
Les espaces de noms ne doivent pas changer. C'est une erreur majeure. –