29 septembre 2009

Silverlight 3: référence relative à un service WCF

Dans la plupart des développements client-serveur Silverlight, on travaille sur deux projets: le site Web ASP.NET et le projet Silverlight qui génère le XAP. Le site Web ASP.NET est vu comme http://localhost:xxxx/VotreService.svc, mais un jour il faudra le déployer sous un autre domaine. Comment faire pour ne rien avoir à changer ce jour là?

En fait, c’est assez simple, et je remercie Jeremy d’avoir donné l’idée ici. Mon exemple ci-dessous rend le code de Jeremy plus générique pour s’adapter à n’importe quel binding. Il suffit de modifier l’instanciation du proxy.

Supposez que vous instanciez le proxy ainsi:

MonServiceClient proxy = new MonServiceClient();

proxy.FaireLeBidule();

Eh bien il suffit de remplacer la première ligne par:

var addresse = Uri(Application.Current.Host.Source, "../VotreService.svc"))

MonServiceClient proxy = new MonServiceClient(“nom_endpoint”, addresse.AbsoluteUri);

Pour connaître ce qu’il faut mettre à la place de “nom_endpoint”, il suffit d’aller voir dans votre fichier “app.config” la valeur de l’attribut “name” qui est donné à la balise “endpoint”.

Et le tour est joué. Dommage que le SDK Silverlight ne fasse pas ça tout seul.

0 commentaires: