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

WinDev Discussion :

Faire communiquer plusieurs applications Windev sur le même PC (IPC) [WD12]


Sujet :

WinDev

  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Faire communiquer plusieurs applications Windev sur le même PC (IPC)
    Bonjour,

    Voilà mon problème:

    Sur un même PC, plusieurs applications Windev sont exécutées simultanément.
    Il peut s'agir de plusieurs instances de la même application, mais aussi d'applications différentes.

    Je voudrais pouvoir établir un genre de session (conversation) entre 2 applications, dont l'une est en attente d'une demande d'ouverture de session (ce n'est pas vraiment un "serveur", mais c'est une application qui "écoute").

    Le protocole serait simple:
    * un début de session est initié par une des parties (vers une application qui "écoute")
    * une succession d'échanges bilatéraux a lieu
    * une fin de session est initiée par n'importe quelle des parties

    Pour autoriser de multiples sessions simultanées, chaque session est identifiée.
    Dans le contexte d'une session, un échange permet de transmettre une commande et plusieurs arguments sous forme de chaînes de caractères.

    Comme tout se passe localement, je ne pense pas utiliser de sockets.

    Avez-vous une quelconque expérience d'implémentation de ce type de communication inter-processus (IPC) avec Windev ?
    Quelle techniques utiliser ?
    Windev propose-t-il nativement des fonctionnalités qui conviendraient à mon besoin ?
    Sinon, existe-t-il des bibliothèques tierces qui offrent ce genre de fonctionnalités ?

    En plus des sockets, j'ai vu qu'il existe des fonctions RPC Windev (qui ne m'emballent pas vraiment), des fonctions DDE et aussi la gestion de messages Windows.
    Et les pipes nommés ? Les mailslots ?
    Et encore autre chose ?

    Merci pour vos réponses.
    _

  2. #2
    Membre confirmé
    Profil pro
    Freelance
    Inscrit en
    Avril 2003
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Avril 2003
    Messages : 393
    Points : 492
    Points
    492
    Par défaut
    Salut JBO,

    Pour la communication inter-processus, tu peux utiliser les sémaphores ou bien le partage mémoire (API CreateFileMapping/OpenFileMapping/MapViewOfFile).
    A+
    Vince

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour Vince et merci pour ta réponse.
    Citation Envoyé par VincentRoy Voir le message
    Pour la communication inter-processus, tu peux utiliser les sémaphores ou bien le partage mémoire (API CreateFileMapping/OpenFileMapping/MapViewOfFile).
    La programmation de la mémoire partagée (FileMapping) c'est vraiment de "bas niveau", et je vais sans doute "suer" pour gérer de multiples sessions simultanées et permettre de "tamponner" les commandes qui sont simultanément envoyées à une même application cible.
    (comme tout bon développeur "un peu usé", je préfèrerai ne pas avoir à trop coder )

    Les sémaphores, j'imagine que c'est plutôt pour gérer l'accès concurrent sur une ressource partagée (comme la mémoire partagée).

    Merci quand même pour ces pistes.

    Pour l'instant ma question reste non résolue.
    Je suis très intéressé par tous les retours d'expérience.
    N'hésitez pas et d'avance merci !
    _

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Windev et DDE ???
    Toujours à fureter...
    Citation Envoyé par =JBO= Voir le message
    En plus des sockets, j'ai vu qu'il existe des fonctions RPC Windev (qui ne m'emballent pas vraiment), des fonctions DDE et aussi la gestion de messages Windows.
    J'ai regardé d'un peu plus près les fonctions que WD12 propose pour communiquer via DDE.

    Apparemment c'est un enrobage de DDEML... mais les fonctionnalités de cette bibliothèque d'API ne sont que partiellement couvertes ! (ou alors je n'ai rien compris...)

    Par exemple, je ne vois pas comment déclarer qu'une application Windev est un serveur DDE ?
    Comment distinguer différentes instances de ce serveur ?
    Je ne comprends pas non plus comment un client désigne un serveur DDE Windev avec lequel il veut "converser".

    Suis-je lent à la détente... ??? Ou bien effectivement il y a des manques dans les fonctionnalités DDE de Windev ???

    [EDIT]
    Bon, ben je me suis trompé.
    Windev propose des fonctionnalités DDE et pas DDEML.

    Mais ce n'est qu'un sous-ensemble de DDE.

    Un serveur DDE Windev ne peut pas utiliser un nom différent de celui de l'exécutable (vrai ou faux !?).
    Normalement, pendant l'INITIATE de la conversation, le serveur DDE répond avec un message WM_DDE_ACK dans lequel il désigne un handle de la fenêtre qu'il va dédier à la conversation.
    Je ne vois pas comment réaliser celà avec les fonctions de Windev...
    Le serveur ne peut pas choisir le handle qui sera communiqué au client ???

    Pas de possibilité pour un client:
    - d'initier une conversation en broadcast vers un serveur "non désigné explicitement",
    - de récupérer la liste des Topics du serveur.

    Si vous avez des infos, je suis preneur. Merci
    [/EDIT]

    _

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Finalement, j'ai choisi de développer des classes pour gérer les Mailslots.
    Bonjour,

    Finalement je vais opter pour l'utilisation de Mailslots sous Windows.

    J'avais louché du côté d'une classe Windev (développée par Tanguy PRUVOT) permettant d'utiliser des Pipes nommés: cNamedPipe v1.0.

    Cette classe me semble vraiment excellente. Mais elle intègre de fait des fonctionnalités avancées de Windev (utilisation de thread, et référencement de la fenêtre en cours pour l'interception d'événement) et je voudrais pouvoir maîtriser ces aspects sans qu'ils soient de facto incorporés dans une classe.

    Après avoir regardé de près la classe cNamedPipe v1.0, j'ai un peu plus réfléchi à mon besoin:
    Je souhaite une communication orientée message (par opposition à flux d'octets), multi-sessions, avec possibilité d'accumuler les messages dans une file.
    Et en particulier je souhaite "sérialiser" le traitement des messages (au final, les messages seront traités un à un).
    Les Mailslots conviennent bien et ils sont assez faciles à programmer.

    Donc j'ai développé 2 classes: cMailslotWriter et cMailslotReader.
    Je suis encore en phase de tests, mais ça me semble un bon choix tant en termes de souplesse que de performance.

    Encore merci de m'avoir aidé !
    _

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/02/2012, 20h35
  2. Plusieurs serveurs d'application Jboss sur une même machine
    Par Empty_body dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 13/02/2007, 15h44
  3. Réponses: 12
    Dernier message: 14/08/2006, 12h55
  4. 2 Applications réseau sur le même poste
    Par lio33 dans le forum Développement
    Réponses: 4
    Dernier message: 23/05/2006, 08h45
  5. Faire communiquer deux applications
    Par thierrybatlle dans le forum Langage
    Réponses: 1
    Dernier message: 31/01/2006, 09h37

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