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 :

Communication entre application Silverlight et appli Web


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut Communication entre application Silverlight et appli Web
    bonjour,

    voilà j'ai déjà posté un pb à peut prés similaire à celui ci mais je n'ai pas trouvé mon bonheur donc je vais essayer de mieux aborder mon problème.

    Déjà je suis sous SL3 avec VS2008.

    Je crée un projet de type application Web. Je l'appelle "test" admettons. j'ai donc deux projets de créés: "test" contenant le code xaml et "test.web" contenant une page asp avec une balise <asp:silverlight ...> qui référence mon fichier xap.. jusque là tout va bien.

    Mon problème est le suivant: utilisant une architecture en couches, j'ai besoin de faire le lien entre "test" et "test.web", pour appeler des méthodes paramétrées lors de clic sur un bouton, de méthodes d'affichages qui me retournerons des valeurs de ma bdd... bref un accès complet avec des communication à double sens entre "test" et "test.web".

    C'est là que j'ai besoin de votre aide. Quel méthode est la mieux adaptée pour faire communiquer ces deux couches ? un service wcf? l'utilisation du pattern mvvm? ...

    j'ai besoin non pas d'un simple avis mais également d'exemples, de tutos ou autre qui pourront me permettre de mettre en place les solutions que vous me proposerez.
    NB: j'ai déjà trouvé des exemples avec mvvm, qui fonctionnent, mais le pb est que l'application complète est faite dans un seul et même projet de type silverlight, et que "view" "view model" et "model" sont de simples répertoires dans cette solution. Là mes couches sont des projets bien distincts, et non des répertoires dans un même projet.

    j'ai essayé de mettre en place mvvm, avec le notifications que je commençais à assimiler, mais si j'ajoute dans "test" une référence de dll à "test.web", j'ai une erreur me précisant que test.web n'a pas été compilé avec le runtime de silverlight et que cela était donc impossible..

    merci par avance pour votre aide !!!

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Utilise un service WCF, exposé sur ton Test.Web et appelé depuis ton application Silverlight.

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Le MVVM est un pattern de conception pour l'application Silverlight en elle même. Le site qui heberge l'appli ne fait pas partie de l'appli (bien qu'il puisse offrir des webservices pour l'appli).

    Note: Il me semble que l'objet asp:Silverlight n'est plus d'actualité.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    ok merci pour l'info.. mais est ce la seule solution possible pour mon pb?
    et la mise en place de mvvm est toujours possible avec ce canal de communication?

    enfin, y a t il de bon tuto expliquant depuis le début la mise en place d'un service wcf?

    merci en tout cas pour ta réponse rapide

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    en réponse à PitMaverick78, la balise asp silverlight est générée quand je crée une application web silverlight, c'est VS2008 qui s'en occupe, donc après je ne sais pas quelle autre méthode utiliser .. d'ou ce sujet. qu'est ce qui est "d'actualité" alors selon toi à la place de cette balise?

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Personellement, j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    		  <param name="source" value="MyApp.xap"/>
    		  <param name="background" value="white" />
    		  <param name="minRuntimeVersion" value="4.0.50303.0" />
    		  <param name="autoUpgrade" value="true" />
    		  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50303.0" style="text-decoration:none">
     			  <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
    		  </a>
    	    </object>
    Attention les paramètres minRuntimeVersion et autoUpgrade sont ceux de SL4

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    ah oui j'avais fait une VM pour tester VS2010 RC et silverlight 4 et en effet ça n'est plus avec la balise <asp:silverlight ...> .

    merci pour ce rappel.

    bon pour revenir plus sur le sujet, je vais tenter avec les services WCF. mais cela va t il changer quelque chose si par la suite je souhaite mettre en place le pattern mvvm ...? je verrai bien

    j'avais téléchargé le programme de brad abrams, voici le lien:
    http://blogs.msdn.com/brada/archive/...erlight-3.aspx
    dans ce projet, la couche silverlight communique avec la couche " ??? . web" (je ne sais plus le nom exact), et dans les xaml.cs on voit bien "using ??.web", et pourtant il n'y a pas de services web, je ne sais pas comment il a fait.. dans son article il est écrit:

    Now, let’s switch the client side. Be sure to build the solution so you can access it from the client directly. These project are linked because we selected the “ASP.NET enable” in the new project wizard.

    In HomePage.Xaml add

    <datagridataGrid x:Name="dataGrid1" Height="500">
    </datagridataGrid>And in the code behind add MyApp.Web… notice this is interesting as MyApp.Web is defined on the server… you can now access the client proxy for the server DomainServices locally
    sur le principe ok, mais je n'ai pas trouvé comment le faire.. si un de vous est déjà tombé sur cet article et qu'il connait la solution merci de m'en faire part ..

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Ah mais voila pourquoi!
    La réponse est dans RIA services.
    RIA services va te compiler tes entités qui sont du côté .web pour te fournir les même côté silverlight. Si tu déclares une classe côté Web et que tu l'actives pour être côté Silverlight alors il va en compiler une version Silverlight.
    Mais il ne faut pas oublier qu'entre les deux t'as un webservice wcf.

    Edit: Lorsque dans l'article il parle de domaindatasource ou qu'il utilise le NorthwindDomainContext c'est que derrière un webservice va chercher l'entité sur le site web puis la ramène pour silverlight.

    Grosso modo si tu veux utiliser du mvvm et bien séparer tes couches voilà comment tu peux faire:

    Base de données <=> Couche DAO <=> Couche Business <=> Couche Transport <=> Web services (via RIA services par exemple) <=> Model <=> ViewModel <=> View

    J'ai rajouté une couche Transport car personellement, je fait ma couche business avec les éléments metiers stockés en bdd mais je ne préfère pas les envoyer "bruts" par webservice car souvent ils ne sont pas adaptés pour le transport.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    ok je commence à mieux comprendre comment cela se passe. Mais as tu des exemples de la mise en place des RIA services..? pour que je puisse exploiter cette solution.

    Ensuite pour mvvm, je fait une refonte d'appli, qui, grossièrement, se présente comme cela:
    dal - métier - controleur - presentation

    dal, métier, et controleur sont des bibliothèques de classes c#
    présentation un projet asp que je doit refondre

    le but pour moi est de modifier la couche présentation en silverlight, sans toucher à la dal, au métier, et au controleur.

    je pensai donc que dal, métier, et controleur serait donc mon "model"
    presentation sera transformé par ces fameux "presentation.web" et "presentation":
    * presentation.web serait mon "view model"
    * presentation serait mon "view"

    sachant que "presentation.web" peut communiquer avec les assembly c# (à l'inverse de "presentation" compilé avec le runtime de silverlight), je fait:
    dal - metier - controleur - presentation.web - (services WCF) - presentation

    cela te semble la bonne méthode?

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    ahh j'ai trouvé mon erreur, tout simplement un manque d'outils.. pour l'appli que je t'ai proposé de brad abrams, j'ai remarqué que je ne pouvais pas cocher "link to asp.net server project" à la création de mon application silverlight tout simplement parceque je n'avais pas le RIA services.. un autre outil doit me manquer car je ne voit toujours pas cette coche mais ça va venir..

    enfin tout ça pour dire qu'avec les ria services le lien entre "monAppli.web" et "Mon appli" est faite avec des services WCF (les RIA services), mais de manière beaucoup plus transparente qu'avec les services WCF "standard' où il faut tout ajouter et configurer par soit même..

    dans le principe de mise en place ça va j'ai compris maintenant.. après reste à voir si mes éléments seront bien bindés, et si cela pourra permettre d'utiliser le pattern mvvm, mais cela est un autre problème.

    si vous avez des infos ou des conseils pour la mise en place de mvvm, merci de m'en faire part, sinon je met résolu car j'ai eu les réponses à mes question concernant le lien entre "appli.web" et "appli", au moins je sais vers quoi me tourner..

    merci !!

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Quelques threads plus bas sur ce forum, David Rousset a publié des tutos sur Ria Services et Silverlight 4, basée sur ce qu'il avait présenté au Tech Days.
    http://www.developpez.net/forums/d88...-0-ligne-code/
    Sinon tu peux essayer de regarder les webcasts de la Mix'10 et notamment la vidéo du fondateur du mvvm light toolkit qui explique très bien le pattern mvvm et un autre webcat sur Silverlight dans une appli business qui explique aussi la mise en place de WCF Ria Services.
    Même si c'est du Silverlight 4, les concepts sont les mêmes!

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    ok merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication entre applications silverlight distantes
    Par syntaxerror dans le forum Silverlight
    Réponses: 4
    Dernier message: 05/10/2009, 17h26
  2. Charger le contexte d'application dans une appli WEB
    Par nanou2002 dans le forum Spring Web
    Réponses: 3
    Dernier message: 13/10/2006, 10h44
  3. communication entre application.
    Par clucky dans le forum Langage
    Réponses: 1
    Dernier message: 10/10/2006, 10h10
  4. Réponses: 7
    Dernier message: 12/05/2006, 08h36
  5. [COM | VB] communication entre application hétérogène
    Par zlavock dans le forum Général Java
    Réponses: 8
    Dernier message: 21/11/2004, 10h51

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