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 :

Application multiple sur plusieurs aspx, passage de variable


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut Application multiple sur plusieurs aspx, passage de variable
    Bonjour à tous,

    je suis en train de développer un projet complexe en silverlight. Ce projet comporte 4 solution silverlight contenant chacun un projet silverlight ainsi qu'un projet web asp.net

    Je voudrais que les applications puisse communiquer entre elles via des viariables ou même des objects si possible.

    La structure du projet ainsi que sa structure IIS:
    * 4 applications dans IIS, donc 4 dossier de fichier.
    * un domaine globale redirigeant sur un sous dossier de celui du domaine), ainsi que 3 autre sous dossier au même endroit pour les autres applis

    Chaque projet doit absolument rester indépendant des autres. Cependant certaine donnée doivent être récupérable par chaque projet (projet potentiellement fermer)



    Exemple de fonctionnement :
    * mon appli A est en execution.
    * le click sur un lien dans l'appli A, set un variable, et ouvre mon appli B dans un autre onglet/navigateur
    * mon appli B test si la variable existe et la get si oui


    Voici ce que j'ai testé:
    * IsolatedSotrage
    * Cookie


    Pour le isolatedsotrage, tout fonctionnait parfaitement jusqu'à l'ajout d'un module faisant un set d'un variable plus en profondeur dans l'appli A qui ouvrais derrière l'appli B.
    Au début mon appli A, à son lancement, faisait un set de variable "V1" et point. Si je lançais mon appli B manuellement, "V1 pouvait être lu, si je lançais B à partir de A pas de soucis non plus.
    Puis j'ai du rajouté "V2" juste avant d'ouvrir l'appli B à partir de l'appli A.
    --> Résultat, l'appli B ne trouvais ni "V1", ni "V2"


    Du coup j'ai voulu testé les cookies, ça fonctionne correctement même s'il y a parfois des ratés à cause du cache, mais je n'aime pas trop cette méthode surtout qu'en plus j'ai quelque soucis avec firefox car je n'arrive pas à setter un cookie sur le domaine global plutot que le sous dossier


    Voici ma question:
    * Quelle solution vous parraît la meilleur pour ce genre de chose (IsolatedStorage, Cookies, Session variable ... ) ?
    * Si possible d'avoir quelque lien de mise en pratique pour le set sur le domaine global et le get.


    Merci d'avance pour votre aide.
    Si besoin d'information supplémentaire n'hésitez pas

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Les données sont "sensibles" ? Sinon tu peux toujours les passer en parametre Get de l'url de l'application B.
    Ensuite il n'y a plus qu'a récuperer les parametres.
    Je sais pas comment tu ouvres un nouvel onglet mais je suppose que tu peux également faire une méthode POST du coup si les donnés sont sensibles tu peux les rajouter en parametres d'initialisation de l'objet silverlight dans ta page aspx.

    Pour t'aider tu as le tuto de Benjamin Broux : http://blog.developpez.com/broux/p62...silverlight-2/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut
    merci pour cette réponse, je n'ai pas été lire le tuto encore j'y vais juste après.

    Donc voici les réponses pour vos questions:
    * oui certaine données sont sensible
    * pas d'utilisation de l'url et par conséquent du get (contrainte client)
    * éventuellement l'utilisation de passage d'objet pour une évolution prévu pour courant 2012 (donc autant chercher quelque chose qui n'aura pas à être change d'ici là, même si cette solution n'inclu pas le passage d'objet, nous trouvons un solution pour passer malgré cela les informations qui sera plus facile que de tout reconcevoir sur ce point la)

    J'appelle mes projets via leur url contenu dans un BDD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string _iHostName = "";
    if (!_icon.ActionInfo.Contains("http://"))
    {
        _iHostName = "http://" + Application.Current.Host.Source.Host;
        if (Application.Current.Host.Source.Port != 80)
            _iHostName += ":" + Application.Current.Host.Source.Port;
       _iHostName += "/";
    }
     
     
    HtmlPage.Window.Navigate(new Uri(_iHostName + _icon.ActionInfo), "_blank");

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 82
    Par défaut
    Bonjour,

    pour centraliser un echange d'information / traitement, web service ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut
    En fait je passe surtout des identifiant de base de données pour pouvoir récupérer ensuite les informations correspondante via un RIA service.

    Ainsi que d'autres variables non disponible dans la base comme des calculs

    Le tout permet à l'application recevante de setter certain champ ainsi que de faire par exemple un préfiltrage sur une datagrid, ouvrir un onglet spécifique, affiché des données par rapport à un id

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Pour la communication inter-appli silverlight sur la même machine il existe les LocalMessageSender et LocalMessageReceiver.
    Voir un exemple.

    Pour la communication avec l'appli asp, il y a pas assez de détails à mon gout. Les appli silverlight sont-elles embarquées dans des pages de ce site aspx?

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut
    les applis sont bien sur la même machine mais elle ne sont pas forcemment executé.

    Un lien commande l'ouverture d'un appli dans un nouvel onglet du navigateur et cette nouvelle appli doit se parametrer en fonction des variables passé

    Tout les appli sont dans un dossier différent avec la configuration d'application sur IIS pour chaque dossier mais dans le même site sur IIS.
    Chaque dossier a son propre aspx

    Merci pour l'exemple avec LocalMessageSender et Receiver mais je crois qu'il faut que les deux applis soit executé à l'instant où l'on utilise ces méthodes ce qui n'est pas mon cas actuellement. De plus ce ne sera pas forcement la page principale qui sera interesser par ces variables, et en fonction de l'utilisateur ce n'est pas la même View qui s'affiche

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Peut être un peu lourd:
    depuis A : appel à un webservice pour lui donner des données à mémoriser, attente d'un retour de token. Quand token recus on ouvre la page de B avec en parametre le token.
    La page de B initialise les parametres (au sens balise div HTML du plugin SL) qu'elle va chercher dans le serveurs gràce au token.

    Avantage il n'y a qu'un Token qu'est passé en parametre.
    Inconveniant on rajoute une 3eme partie ( le webservice avec un stockage des parametres liées au token).
    Apres il est toujours possible d'ouvrir le code source de la page pour voir les parametres, mais c'est la même chose pour les cookies, et tout les appels webservice peuvent être sniffer (à moins d'utiliser le http:s) !

    Bref on s'embeterai moins si l'on pouvait passer un POST grace à HtmlPage.Window.Navigate, mais ca semble pas être le cas.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut
    alors webservice et token sont complètement inconnu pour moi, je viens d'un monde applicatif (développeur d'application WPF ou Windows Form et depuis peux silverlight).

    L'aspect web m'est totalement inconnu d'où ma question.

    En surfant un peu j'ai trouvé quelque info concernant la variable IsolatedStorage.SiteInfo (celle qui serai interessante pour moi) malheureusement comme indiquer dans mon premier post je n'ai pas réussi à faire fonctionner comme je le voulais.
    Du coup pour avoir une première version fonctionnelle, je suis partie sur la lecture écriture de cookie.

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Un webservice, ben c'est un service mais par le web (en http).
    un token c'est juste une valeur aléaoitre ( un GUID par exemple) que l'on se trimballe pour savoir qui est qui.

    Le problème des cookies et de l'isolate storage c'est qu'il faut que les 2 pages silverlight soit hébergé sur le même site!
    Sinon personnellement je préfères utiliser l'isolate storage que les cookies ( on évite des problèmes de config restrictive du navigateur qui parfois bloque les cookies).
    Des petits articles rédigé par olivier dahan :http://www.e-naxos.com/Blog/post/201...-pratique.aspx

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Le problème des cookies et de l'isolate storage c'est qu'il faut que les 2 pages silverlight soit hébergé sur le même site!
    C'est mon cas, toutes les applications sont sur le même domaine
    Problème avec isolatedStorage concernant l'ajout d'une nouvelle valeur. Ce qui m'a orienté ensuite vers les cookies pour avoir quelques chose de fonctionnel

    Sinon les variable Sessions ?

  12. #12
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Les sessions sont probablement une bonne idée mais je ne connais pas.

    Sinon pour en revenir à l'isolate storage , dans cette article :
    http://www.e-naxos.com/Blog/post/201...ilisateur.aspx
    Olivier Dahan utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var iStorage = IsolatedStorageSettings.ApplicationSettings; // niveau application
    je pense que pour ton cas de figure tu peux reutiliser le même code en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var iStorage = IsolatedStorageSettings.SiteSettings; // niveau domaine

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 104
    Par défaut
    Oui Mika comme dit précédemment, j'ai tester cela tout fonctionnais avec deux variables passer.

    Puis à un moment j'ai eu besoin d'ajouter une troisième variable à un autre endroit d'un projet, mais ensuite une fois cette 3ème variable intégré, plus moyen d'avoir accès à l'isolated storage quelque soit le projet :s

    Enfin pas exactement, certain projet prennais en compte mes deux premières variable mais pas la troisième et vice versa.

  14. #14
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut Peut être une piste avec l'isolatedStorage
    J'ai le même problême. Si vous avez trouvé une solution, ça m'intéresse.

    J'ai mis le code dans un bloc try/catch et il a levé une exception : pas suffisamment de place dans l'isolatedStorage... donc je suis en train de chercher pour augmenter l'isolatedStorage.

  15. #15
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Si c'est un problème de place vous pouvez faire une requete à l'utilisateur pour augmenter la place dans L'isolatedStorage comme décrit dans MSDN :

    http://msdn.microsoft.com/en-us/libr...(v=vs.95).aspx

    Attention tout de même, si ce sont des données sensibles il ne vaut mieux pas les stocker dans l'isolatedstorage car elles sont lisibles assez simplement (ou alors les crypter avant enregistrement).

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/06/2014, 13h57
  2. [XL-2010] Macro Modification multiple sur plusieurs fichiers
    Par tbuhagiar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/10/2013, 12h58
  3. passage de variable sur plusieurs lignes
    Par kaking dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/06/2008, 09h00
  4. select multiple sur plusieurs tables
    Par syl2095 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2004, 15h48
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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