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

MFC Discussion :

[MFC] DCOM


Sujet :

MFC

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

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Par défaut [MFC] DCOM
    Bonjour,

    J'utilise une application C++ pour communiquer avec un oscilloscope numérique qui tourne sous windows 2000, j'utilise DCOM.

    Il y a deux façon de faire la liaison avec les fonctions DCOM disponible dans le software de mon oscilloscope:
    - Avec IDispatch, apparament sous forme de script (facile à faire)
    - Avec CoCreateInstance(...) et les numéros de CLSID (moins facile, surtout pour trouver les numèros d'entrées)

    Je suis limité par le temps d'execution dans mon programme et j'ai lu que l'utilisation de la prmière solution (script) et moins performantes.

    Je voulais donc savoir si je pouvais espèrer un gain de temps en utilisant la deuxièmes solution et sinon, quel sont les avantages et inconvenients des deux techniques d'accés.

    Merci,

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Je crains que tu parles 2 fois de la même chose. Sauf que en C++ comme c'est typé statiquement y'a beaucoup plus de ligne de codes. Mais le fonctionnement est le même.
    http://msdn.microsoft.com/library/en-us/automat/htm/chap3_76p4.asp
    Pour y voir un peu plus clair:
    http://www.developpez.com/windows/dcom/t1.html
    Si ton script ne fait qu'effectuer des appels (D)COM, je suis pas sûr que passer en C++ fasse gagner grand chose.

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

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Par défaut
    Merci,

    J'aurais une autre question:

    Peut-on travailer avec les DCOM de façon asynchrone, par exemple on envoie une réquete a un objet A et une fonction de type CallBack est applée dés que la réponse est envoyer par cette objet A.

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Je sais qu'on peut faire des appels asynchrones en COM mais j'ai jamais essayé. Il en parle dans la FAQ. Y'a un attribut spécial async à utiliser dans le MIDL. Le serveur doit être conçu pour je pense.
    Tu peux toujours faire l'appel bloquant dans un autre thread qui t'envera un event pour signaler que l'appel est fini.

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

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Par défaut
    Ok, je ne connais pas les appels bloquant, as-tu un lien, SVP.

    Sinon, j'ai pris la FAQ, elle est tres riche et j'ai vue qu'ils parlaient de ce type d'application asychrone. Merci pour les infos.

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Pour moi appel bloquant = appel synchrone.

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

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Par défaut
    Dans la FAQ il est également dit que avec l'utilisation des fonctions qui utilisent "IDispatch" il y a une intérprétation et que les fonctions ces types d'appels sont moins performant.

    Mais dans quel sans et jugé la performance?

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    En faisant ainsi tu interroges l'objet sur ce qu'il sait faire et puis tu l'utilises. Forcément c'est plus lent que de savoir tout de suite de quel type il est et de l'utiliser sans rien lui demander. La différence est en fait:
    - bonjour objet A donne moi ton nom
    - bonjour objet, je me doute que tu es un objet A est-ce bien le cas ? Oui, normalement tu sais me donner ton nom, alors pourais-tu répondre à ma question suivante "quel est ton nom" ?
    (bon c'est nul mais tu vois l'idée). Comment faire pour utiliser directement ton objet ? Ben il faut disposer d'un descriptif tout fait de lui, pour ne pas avoir à en créer un à l'exécution. De descriptif tout fait c'est le type library.
    http://www.developpez.com/windows/dcom/t1.html#AEN1241
    http://www.developpez.com/windows/dcom/t1.html#AEN2123
    http://www.developpez.com/windows/dcom/t1.html#AEN2396
    En C++ il va servir à un IDE genre VC++ à te générer tout un squelette de classes que tu pourras utiliser bcp bcp plus simplement qu'avec des Invoke dans tous les sens. En fait l'IDE va faire la même chose que VB : il va se servir du tbl pour tout savoir sur le composant COM sans même l'utiliser (et donc sans l'interroger directement), et donc générer une classe qui s'occupe de tout pour l'utiliser.
    Y'a aussi la possibilité d'utiliser #import (VC++ only).
    Une page riche d'informations:
    http://c.developpez.com/faq/vc/?page=Automation
    Mais en VB ça reste quand même plus simple.
    Il parle de différence de performance, c'est simplement la performance de l'appel. Je doute qu'à ton niveau elle soit significative, sauf si ton code ne fait que des appels très légers et très nombreux.

Discussions similaires

  1. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Réponses: 2
    Dernier message: 10/06/2002, 11h03
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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