Histoire de chemin virtuel
Par amethyste le Déc 20, 2008 | Dans focus | 4 retours »
Le rythme de mes blogs s'en ressent, mais depuis bientôt un an je suis sur un projet sans doute le plus ambitieux de ma carrière.
Nous sommes arrivés à la dernière itération et je suis donc en train de rédiger la 3ème version de sa documentation technique. Ce qui me donne l'occasion de faire le point sur les dizaines de détails plus ou moins triviaux qu'il nous a fallu affronter. Je pense que certains prendront la forme d'un blog ou d'un article au cours des mois qui suivent. A commencer par cet article.
Le contexte technique
Le site est structuré autour d'un backoffice, de services Windows et de diverses versions du site Web (production, recette, prévisualisation) qui proposent ou non certaines fonctionnalités.
Tout cela est parfois complexe à tester depuis l'environnement Visual Studio. Nous avons donc écrit un script MSBUILD qui se charge de redéployer les 6 modules constituants le projet.
Le problème
Le site web est un site commercial multilingue.
On a décidé de détecter la langue en analysant l'url. Par exemple une url sera typiquement:
http://www. marque.be/nl/listeproduits.aspx
Cette url me renseigne sur le fait qu'il s'agit de la filiale belge et la langue demandée est le flamand. Ainsi il existe un code qui analyse à chaque requête l'url et en déduit que l'on doit afficher les informations en flamand.
Nous avons du résoudre deux problèmes:
1. Comment faire depuis Visual Studio (VS)
2. Comment faire depuis IIS
Par défaut, VS et IIS se contentent de reproduire le chemin physique dans les url. Ainsi une page située dans le répertoire /Pages apparaîtra comme:
http://localhost:2453/Pages/ListeProduits.aspx
Une première idée est donc de créer des répertoires physiques pour chaque langue concernée et faire autant de déploiement du site que de cas de figure.
Cela fonctionne, mais cela complique le déploiement inutilement et n'est pas simple à mettre en place si on lance le site depuis VS. Les chemins virtuels offrent une alternative plus intéressante.
Visual studio
VS propose un paramétrage pour contrôler le chemin virtuel utilisé. Il se trouve dans les paramètres du projet, onglet Web.

Si par exemple j'écris /fr, la page précédente apparaît dans le navigateur sous la forme:
http://localhost:2453/fr/Pages/ListeProduits.aspx
Ce qui suffit à notre bonheur.
IIS
Rappelons peut être ce qu'est au juste un répertoire virtuel par rapport au répertoire physique.
Le répertoire physique est un répertoire qui existe (au sens d'accessible depuis Windows Explorer) sous le répertoire de base d'un site.
Le répertoire virtuel est simplement un alias vers un autre répertoire qui existe ailleurs, éventuellement sur un autre serveur. Simplement du point de vue de IIS il est vu comme un sous répertoire du répertoire de base.
On peut donc créer un site comme l'agrégation de plusieurs répertoires virtuels correspondants à des répertoires distribués un peu partout sur votre serveur. C'est donc très pratique pour basculer rapidement un site d'une version à l'autre.
Première étape, on créée un répertoire local pour le site Web, par exemple:
C:\acme
Le répertoire est vide et va d'ailleurs le rester.
Le site proprement dit est présent dans un autre répertoire. Par exemple celui de la marque Marque1:
C:\SitesWeb\ marque1
Deuxième étape on créé un site Web dont le répertoire local est c:\acme.
Troisième étape, on crée des sous répertoires virtuels pour chaque langue. Eux par contre, pointent sur c:\SitesWeb\marque1. Pour cela:
On sélectionne le site web dans le gestionnaire IIS, clic droit et New/Virtual Directory.
On sélectionne fr comme alias pour le site français, nl pour le site flamand… Le chemin est bien sûr celui du site. On recommence pour chaque langue. Mais évidemment on pointe toujours au même endroit.

Après c'est très simple, pour accéder au site on entre l'url qui va bien:
http://localhost/fr/default.aspx
http://localhost/nl/default.aspx
On a donc bien construit un site multilingue. Bien sûr chaque langue utilise le même port puisque le site de base est le même.
La beauté des répertoires virtuels est que l'on a un seul répertoire à mettre à jour quelle que soit la langue.
En fait l'application existe avec plusieurs modes de fonctionnement et fonctionne pour plusieurs marques dans plusieurs pays. Le script est donc un peu plus compliqué que cela…
Conclusion
Bonne années à tout le monde!
Plus particulièrement à Guillaume, Grégory, Stéphane, Aymeric, François, Pascal, Damien, les Alex, Laure et les Christophe qui ont apportés leur pierre et leur enthousiasme à l'édifice. Des gens de qualité, merci beaucoup.
PS: ceci étant, s'il est arrivé quoi que ce soit à mon hippopotame en peluche, attention à la rentrée (si je suis en forme!!!)
4 commentaires
Merci pour tout ce que tu m'as appris cette année!
Repose toi bien pour être prêt à la rentrée pour la suite de l'aventure :-)
Merci aussi à tous les acteurs de ce beau projet.
Bonne année.
Guillaume
Merci pour ta contribution inestimable à la réussite de ce projet!
Et maintenant, bonnes vacance bien méritées!
Tous mes voeux pour 2009 et j'espère à un de ces jours,
Laure
Bonne vacances bien méritées...
Christophe G
Encore merci et bonne année !
Grégory
Laisser un commentaire
| « Tester l'existence d'une ressource avec une requête http | O Reilly, c'est fini » |