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

Windows Forms Discussion :

Interaction instantanée C# MySQL


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut Interaction instantanée C# MySQL
    Bonjour bonsoir,

    Tout d'abord, veuillez m'excuser si ce n'est pas la bonne section pour mon sujet. Je vous remercie d'avance de le déplacer dans la bonne section si c'est le cas.

    Ensuite, voici mon "problème" :

    je suis actuellement en stage et je travaille sur une application client d'alerte instantanée pour un site de rencontre

    Pour ce qui est de l'existant, le site est en ASP et à chaque fois qu'une interaction a lieu entre les membres (visites, votes, message, ...) les alertes sont envoyées par mail et insérée dans une BD MySQL.

    Mon travail consiste à créer une application cliente en C# qui serait connectée au site et qui recevrait les alertes au lieu des e-mails si l'utilisateur est connecté.

    Mon problème est que j'ai un petit blocage sur comment transmettre l'alerte de facon instantanée à l'application cliente C#.

    J'ai pensé au principe du trigger, mais est-il possible qu'un trigger MySQL puisse appeler une application C# ?

    Je suppose qu'il est préférable voir complètement nécessaire de créer un serveur qui gérerait la transmission des alertes à l'application ?

    Pour débuter, j'ai créé un WebService qui contient les méthodes de mon application, est-ce une bonne facon de faire ou vaut-il mieux centraliser tout sur un serveur ?

    Je vous remercie d'avance pour vos informations.

    Cordialement.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    slt, sympatique le sujet de stage

    j'aurais quelque question avans tout(je promet pas d'avoir une solution)


    le serveur hebergant le serveur MySQL est il possèdè par l'entreprise ou est il louè? dans le cas ou il est louè il faut voir si l'hebergeur autorise les connection exterieure(très rare)

    dans ce cas la il faudras mettre un webservice sur le serveur, qui lui interrogeras MySQL en local et redistriburas les infos a tes application


    ensuite ton programme a toi c'est bien du C# + WindowsForm??? et non du C# + ASP.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Oui c'est bien du Winform C#.

    Et oui le serveur appartient bien à l'entreprise.

    dans ce cas la il faudras mettre un webservice sur le serveur, qui lui interrogeras MySQL en local et redistriburas les infos a tes application
    --> En faisant ca, il va falloir boucler sur un délai très court pour avoir une certaine instantanéité... Ca risque de saturer un peu la BD non?

    Petite question complémentaire :

    Comment peut-on mémoriser les identifiants de l'utilisateur sur sa machine de manière sécurisée afin qu'il puisse se connecter automatiquement?

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    c'est JAMAIS instantané. ton notifier doit faire comme tous les notifiers du monde, que ce soit pour gmail, outlook , warcraft ou pimpampoom. il a un timer (5s, 5min, 1h) et il appelle un webservice pour lui donne les informations.

    la base ne pourra JAMAIS contacter une appli. rien que les histoires de firewall ou autre.
    la solution simple et propre c'est la solution donnée avec un timer côté client que tu règles comme tu veux.
    mais attention, 10000 applis clientes avec un timer de 5min, ca veut dire, 10000requettes sur ton serveur toutes les 5minutes. si tu reduis ce temps, c'est encore pire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Ca va etre bcp trop lourd alors

    Comment est-ce que MSN faut pour afficher presque tout de suite quand quelqu'un se connecte?

    La solution serait donc que le client appelle le webservice tous les X temps et que le webservice interroge la BD?
    Une architecture client/serveur ne sert donc à rien dans ce cas-ci?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Bonjour,

    J'aurai voulu savoir comment on peut mémoriser les identifiants (comme la plupart des IM) sur le PC de l'utilisateur et de manière sécurisée?

    Merci d'avance.

  7. #7
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Il est possible de faire des push depuis un serveur d'application sur un client a travers une connexion par socket.
    Mais c'est impossible à mettre en marche sur une architecture stateless.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    C'est OK pour mémoriser les identifiants.
    Je passe par le base de registre.

    Par contre est-ce que je peux crypter pour le mettre dans la base?
    Si oui, où est-ce que je peux conserver la clé de cryptage de manière sécurisée?

    Comment est-ce que MSN faut pour afficher presque tout de suite quand quelqu'un se connecte?

    La solution serait donc que le client appelle le webservice tous les X temps et que le webservice interroge la BD?
    Une architecture client/serveur ne sert donc à rien dans ce cas-ci?
    Est-ce qu'il serait possible éventuellement, comme le site ASP envoie l'e-mail pour prévenir à chaque alerte, est-ce qu'il y aurait moyen que l'ASP prévienne l'application C#?
    Si oui, par quel moyen?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Bonjour bonjour,

    Je suis un peu perdu...

    Mon applic pour le moment suit une architecture de type :
    Une application cliente sur le PC de l'utilisateur et un web service se trouvant sur un serveur.
    A chaque requete que le client exécute (pour le moment login et récupération du mot de passe), il contacte directement le web service.

    Dans un avenir fort proche, il y aura un système de notification. (sujet à discussion quelques postes plus haut --> s'il y en a qui ont d'autres idées que d'interroger le webservice avec un timer)

    Ma question est : mon architecture vous semble-t-elle fiable?
    Serais-il plus judicieux de passer par une architecture client/serveur et que ce soit le serveur qui interroge le webservice?

    Je vous remercie d'avance pour votre aide.

    Bonne journée à tous.

  10. #10
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Ca a toujours été difficile de faire des push depuis le serveur vers le client dans une architecture de service.
    Un webservice, c'est unidirectionnel.

    Y'a quelques solutions mais dans tous les cas, je me demande quand même, comment tu comptes détecter qu'un client doit être prévenu?

  11. #11
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    c'est JAMAIS instantané. ton notifier doit faire comme tous les notifiers du monde, que ce soit pour gmail, outlook , warcraft ou pimpampoom. il a un timer (5s, 5min, 1h) et il appelle un webservice pour lui donne les informations.

    la solution simple et propre c'est la solution donnée avec un timer côté client que tu règles comme tu veux.
    mais attention, 10000 applis clientes avec un timer de 5min, ca veut dire, 10000requettes sur ton serveur toutes les 5minutes. si tu reduis ce temps, c'est encore pire.
    toi t'as pas lu mon nouveau tuto


    Citation Envoyé par _skip Voir le message
    Ca a toujours été difficile de faire des push depuis le serveur vers le client dans une architecture de service.
    Un webservice, c'est unidirectionnel.
    Avec WCF c'est un jeu d'enfant, même moi j'y suis arrivé, c'est pour dire...
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    toi t'as pas lu mon nouveau tuto
    Pourrai-je avoir le lien svp?


    comment tu comptes détecter qu'un client doit être prévenu?
    Justement, c'est là que je suis un peu perdu.
    Etant donné que pour le moment c'est le client qui accède directement au web-service, il n'y a pas besoin de détection étant donné que c'est le client qui prend l'initiative d'aller voir s'il y a de l'info via le webservice
    --> ce qui me semble de plus en plus une solution un peu bourrine.

    Puis-je te demander éventuellement des liens vers le push serveur-->client (si tu en as sous la main, sinon je chercherai).

    Merci d'avance.

  13. #13
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    Avec WCF c'est un jeu d'enfant, même moi j'y suis arrivé, c'est pour dire...
    Ah, bien comme quoi mes connaissances ne sont plus à jour! Pour ce faire, j'ai pensé à JMS en java mais je savais pas que WCF proposait quelque chose de ce genre. C'est à creuser donc.

    Justement, c'est là que je suis un peu perdu.
    Etant donné que pour le moment c'est le client qui accède directement au web-service, il n'y a pas besoin de détection étant donné que c'est le client qui prend l'initiative d'aller voir s'il y a de l'info via le webservice
    --> ce qui me semble de plus en plus une solution un peu bourrine.
    En ce qui concerne ce check, comment ton webservice sait-il que c'est nouveau ou pas pour l'utilisateur?
    Par ailleurs, quelles infos circulent de par et d'autre? Qu'est-ce que tu reçois par ce WebService et qu'est-ce que tu renvoies?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    En ce qui concerne ce check, comment ton webservice sait-il que c'est nouveau ou pas pour l'utilisateur?
    Par ailleurs, quelles infos circulent de par et d'autre? Qu'est-ce que tu reçois par ce WebService et qu'est-ce que tu renvoies?
    Euh... Il me semble que c'est un flag dans la DB sur le système existant.
    Il faudra que je vérifie ca...
    Tant que maintenant le webservice s'occupe d'interroger la BD pour le Login et la récupération d'identifiants par e-mail.
    Il renvoi respectivement true ou false, et un flag marquant l'état de l'opération pour le 2e.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            OdbcCommand oCmd = oCon.CreateCommand();
            oCmd.CommandType = System.Data.CommandType.Text;
     
            string SQL = "SELECT user_pseudo FROM tbl_user WHERE user_pseudo = @Login";// AND user_password = 'a'";
     
            oCmd.CommandText = SQL;
     
            OdbcParameter oParamLogin = oCmd.CreateParameter();
            oParamLogin.ParameterName = "@Login";
            oParamLogin.OdbcType = OdbcType.VarChar;
    //        oParamLogin.Direction = System.Data.ParameterDirection.Input;
            oParamLogin.Value = "a";
            oCmd.Parameters.Add(oParamLogin);
    Quelqu'un voit-il une erreur dans cette requete paramétrée?
    Il compile, mais ne me trouve aucun résultat.
    Alors que si je mets dans la requete SQL "...user_pseudo = 'a'...", ca fonctionne évidemment.

  15. #15
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Il me semble qu'en ODBC tu dois utiliser '?' comme placeholder pour les paramètres.

  16. #16
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Citation Envoyé par Gregs Voir le message
    Pourrai-je avoir le lien svp?
    heu...c'est à dire....il n'est pas officiellement encore sorti. Je viens de le proposer, faut qu'il soit approuvé et corrigé avant d'être annoncé.
    Mais si tu cliques ici il se pourrait que tu trouves quelque chose...
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Merci c'était bien les '?' qu'il fallait mettre...

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Merci pour ton lien the_badger_man...

    Je vais devoir "obligatoirement" me tourner vers une architecture client/serveur il me semble.

    Une petite question pour voir si j'ai bien compris l'idée générale...

    Le client appellerait le serveur qui à son tour appellerait le service WCF.
    Comment le service WCF sera au courant qu'il y a un changement dans la BD?

    Il doit de toutes facons la lire avec un timer tous les X temps c'est ca?
    Et l'idée c'est que quand il y a qqch qui a changé, le service WCF répond au serveur?

    La logique du timer est déplacé du serveur au service, c'est bien ca?

  19. #19
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    J'imagine que tu as pas une grande influence sur l'architecture du site et que celui-ci communique directement avec la base de donnée façon client lourd?

    Parce que sinon, vous pourriez concevoir un service qui gère la logique métier et l'interaction avec la base de données, et le site web deviendrait client de ce service.
    Et au moment ou le site utilise une fonction spécifique, tu pourrais réagir depuis le service.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Le problème c'est que le site est programmé en ASP simple, pas en ASP.NET...

    Est-ce faisable quand même?

Discussions similaires

  1. Interaction avec PHP/MySQL
    Par Invité dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/06/2013, 10h57
  2. Interaction R et MySQL : utilisation de rODBC
    Par popsmelove dans le forum R
    Réponses: 3
    Dernier message: 22/12/2011, 11h41
  3. [MySQL] interaction formulaire table mysql
    Par Herveg dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/12/2011, 10h20
  4. [FLASH 8] Interaction flash - Php/MySQL
    Par achos dans le forum Flash
    Réponses: 4
    Dernier message: 30/03/2007, 16h00

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