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

Delphi Discussion :

Communication entre application


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 197
    Points : 54
    Points
    54
    Par défaut Communication entre application
    Bonjour a tous,
    je suis entrain d'ecrire une appli en delphi. l'appl doit etre installer sur plusieurs machines.
    je veux que chaque instance en execution sur les differentes machines puissent s'envoyer des msg.
    ex: lorsque une istance fais un ajout dans la BD elle doit informer les autres instance sur le reseau.
    Merci de m'aider.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Allez le plus simple reste le TCP\IP

    D5 : Voir TClientSocket et TServerSocket
    D6 : Idem, voir composant Indy
    D7 : TTcpClient et TTcpServer, ou Indy
    ...

    Ensuite, qui sera le serveur, il en faut un pour qu'il sache sur qui se connecté, bon tu peux aussi, tester les IP d'une plage (192.168.1.1 à 192.168.1.253 par exemple), et dès que l'un fonctionne tu te connecte dessus, et celui te donnera les IP des autres programmes existants, l'absence de serveur peu rendre la gestion des communications compliqués ...

    Ensuite, si tu te débrouille bien en DB :
    InterBase, FireBird : voir TIBEvent, cela doit permettre de gérer ce genre de chose
    Oracle, SQL Server, Sybase : les Triggers (ou l'autre truc dans je n'ai pas le nom en mémoire) doivent aussi permettre de gérer ce genre de chose, comme rafraichir les vues

    Paradox, HyperFile, MySQL 4 : Bon, retour au TCP\IP
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    A priori c'est plus un système de notification sur le serveur SGBD qu'il te faut ,un peu comme Advanced Queuing sous Oracle.

    Ou développer une solution comme le dit ShaiLeTroll au sein d'un trigger mais sur le serveur SGBD.
    Ensuite il faut savoir si ton serveur est et sera tjr sous Windows ou pas (choix du langage) et si l'application utilisera tjr le même moteur de SGBDR (+ implémentations).

    Je suppose que seules les machines connectées au SGBD sont ciblées ?
    Existera-til un backup de la base ?
    etc.

    Mais pour le moment c'est plus de l'architecture que du dev.

    Ce genre de truc on sait où ça commence jamais où ça s'arrête

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    On pourrait passer par une appli centrale, mais ce n'est pas, d'après ce que j'ai compris, l'option choisie.

    Si toutes les appli sont au même niveau, elles peuvent écrire des messages horodatés dans une table de notification.
    Chaque appli doit alors consulter périodiquement cette table de notification pour lire les messages en instance et identifier ceux qui lui sont destiné et, par la même occasion, supprimer les messages qui lui sont exclusivement destinés ou les messages obsolètes (émis depuis plus de n minutes).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Graffito
    On pourrait passer par une appli centrale,
    Oui c'est une possibilité.
    Citation Envoyé par Graffito
    Si toutes les appli sont au même niveau, elles peuvent écrire des messages horodatés dans une table de notification.
    C'est en gros un des principes AQ d'Oracle.
    Citation Envoyé par Graffito
    Chaque appli doit alors consulter périodiquement cette table de notification pour lire les messages en instance
    Oui mais là c'est du pooling pas de l'événementiel. Bon c'est une solution mais ensuite il faut voir la charge et la volumétrie. De ce coté après 3 posts on est un peu court en informations.
    Citation Envoyé par Graffito
    ou les messages obsolètes (émis depuis plus de n minutes).
    Entre autres, il y a aussi les connexions fantômes.

    En reprenant AQ, et oui on se référe tjr à ce qu'ont connait le plus, c'est lors de la connexion à la base que l'utilisateur s'abonne au systéme de notification. Sa déconnexion supprime son abonnement.

    En même temps :
    Citation Envoyé par toure32
    ex: lorsque une instance fait un ajout dans la BD elle doit informer les autres instances sur le réseau.
    quel est l'objectif de cet événement ?

    Est-ce un ajout sur n'importe quelle table ?

  6. #6
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Etant donné que ta base doit se trouver sur un poste unique (vu qu'à priori, tes applis vont modifier une seule et même base), qui plus est sur une machine en permanence active (sinon tes applis ne pourrons pas modifier la base), je pencherais pour le développement d'une petite application qui ferait office de serveur et qui serait la seule à accéder à la base:

    Appli_1 <-----|
    Appli_2 <-----|
    Appli_3 <-----|----> Appli_serveur <---> Base de données
    Appli_4 <-----|
    Appli_n <-----|

    Ainsi, toutes les Appli_x sont des clients de Appli_serveur, et celle cette dernière est autorisée à consulter/modifier la DB.

    Les intérêts:
    1) D'une part, tu centralises tes opérations d'accès à la BD sur un seul poste, l'appli_serveur, et donc en cas de modif, tu n'as pas à redistribuer toutes les applications clientes.

    2) Ta base de données devant être toujours accessible, le programme appli_serveur le sera aussi, donc pas de problème d'échange de données.

    3) Une parties des informations sera disponible depuis appli_serveur, donc pourra être redistribuée sans accéder à la base de données.

    Les inconvénients:
    1) Il faut développer une nouvelle appli

    2) Ce n'est pas évident que tu puisses installer ce logiciel sur le poste de la BD, et dans ce cas c'est plutôt problématique car tu perds pas mal d'avantages sur cette solution.

Discussions similaires

  1. Communication entre applications
    Par StormimOn dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 04/06/2007, 14h27
  2. [C#] Communication entre applications ?
    Par fmichael dans le forum C#
    Réponses: 10
    Dernier message: 02/03/2007, 08h30
  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