IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

[Silverlight + WCF] déploiement sur un serveur d'intégration


Sujet :

Silverlight

  1. #1
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut [Silverlight + WCF] déploiement sur un serveur d'intégration
    Bonjour,

    Je développe un projet Silverlight + WCF en mode intégration continue, donc à chaque mise en conf de code l'application est déployée sur un serveur d'intégration (CCNet), buildée et les tests unitaires passés.

    Je voudrais qu'à l'issue de cette étape on puisse faire des tests de validation plus poussés, donc hébergement des services WCF et de l'application Silverlight sur ce serveur d'intégration pour qu'on puisse y accéder et tester à distance.

    Gros problème : par défaut dans Visual Studio les services WCF tournent sur le serveur de développement Cassini en local (donc http://localhost:1828 par exemple). Les références à ces services ajoutées dans le projet Silverlight pointent donc vers http://localhost:1828.

    Il n'est pas envisageable que sur le serveur d'intégration les références continuent à pointer vers cette URL (un seul site Web sur le port 80, nécessité de ranger les services dans un répertoire précis, etc.). Malheureusement le fichier qui contient les références est zippé dans le .xap de l'application Silverlight, donc impossible de modifier les URL des services après build et déploiement sur le serveur d'intégration.

    Il pourrait exister 2 autres solutions. En effet dans les propriétés du projet WCF on peut mettre les paramètres serveur à :

    • Utiliser le serveur Web IIS local. Donc les services seront accessibles via http://localhost/myServices par exemple.
      Le souci, c'est qu'automatiquement Visual Studio va transformer ça en http://ma_machine_de_dev.mondomaine.fr/myServices dans les références Silverlight (fichier ServiceReferences.ClientConfig). Evidemment tout tombe à l'eau puisque l'adresse ne sera plus valable sur le serveur d'intégration.
    • Utiliser le serveur web personnalisé. Ici on peut utiliser l'URL http://mon_serveur_integration/myServices. Le problème c'est qu'il faudra forcément avoir déployé la dernière version des services WCF sur le serveur d'intégration pour pouvoir tester l'application en local.
      Adieu aussi le debug direct puisque les services WCF ne tournent plus sur Cassini. On en est réduit à analyser des messages d'erreur plus ou moins parlants renvoyés par le serveur d'intégration.


    (je passe sur les soucis de CrossDomainPolicy liés à chacune de ces options, qui ont été résolus par des bidouilles plus infâmes les unes que les autres ^^)

    Quelqu'un a-t-il déjà tenté la même expérience ? Comment garantir à la fois un bon niveau de débug des services WCF sur le poste du développeur et une automatisation du déploiement de ces services sur un serveur distant ?
    Pensez au bouton

  2. #2
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Points : 55
    Points
    55
    Par défaut
    Moi je fais de cette manière, je sais pas si c'est propre, mais au moins lorsque je deploie mon application, je n'ai pas besoin de me préocuper des endpoints des webservices:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    ServiceGPSClient remote;
     
    if (HtmlPage.Document.DocumentUri.Host.Contains("localhost"))
                        remote = new ServiceGPSClient("BasicHttpBinding_ServiceGPS1");
                    else
                        remote = new ServiceGPSClient("BasicHttpBinding_ServiceGPSProd");
    Puis dans le fichier ServiceReferences.ClientConfig qui est généré lors de l'ajout d'un webservice j'ai rajouté le endpoint qu'il faudra utiliser lors de la production:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <configuration>
      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_ServiceGPS" maxBufferSize="2147483647"
              maxReceivedMessageSize="2147483647">
              <security mode="None" />
            </binding>
            <binding name="BasicHttpBinding_ServiceGPS1" maxBufferSize="2147483647"
              maxReceivedMessageSize="2147483647">
              <security mode="None" />
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://www.machin.com/GPSSL/ServiceGPS.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ServiceGPS"
            contract="ServiceGPS.ServiceGPS" name="BasicHttpBinding_ServiceGPSProd" />
          <endpoint address="http://localhost:1799/ServiceGPS.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_ServiceGPS1" contract="ServiceGPS.ServiceGPS"
            name="BasicHttpBinding_ServiceGPS1" />
        </client>
      </system.serviceModel>
    </configuration>

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 118
    Points : 102
    Points
    102
    Par défaut
    J'ai pas vraiment bien compris la fin de ton post, mais je sais que pour changer l'URL du web service utilisé dans l'application Silverlight, j'utilise les InitParams (ou InitParameters je sais plus), dans ma page HTML, dans la balise qui inclut mon app SL,. Je lui passe ces initParams, que je récupère dans l'application SL (dans le code behind).

    Ainsi, je peux donner l'adresse de mon web Service que j'utilise quand j'instancie celui-ci.

    Si tu n'as pas vraiment compris, je peux essayer de retrouver un exemple.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2012, 13h42
  2. ASPNETDB problème suite au déploiement sur un serveur dédié
    Par vincedjs dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 17/03/2010, 00h18
  3. Service WCF introuvable sur un serveur IIS 7
    Par Bibichlala dans le forum Windows Communication Foundation
    Réponses: 8
    Dernier message: 01/12/2009, 15h09
  4. [Information] des retours sur un serveur d'intégration continues?
    Par trolldom dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 10/10/2008, 00h33
  5. problème de déploiement sur le serveur
    Par lesultan2007 dans le forum Développement
    Réponses: 3
    Dernier message: 29/09/2008, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo