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

Visual C++ Discussion :

[RPC]D�velopper des applications RPC


Sujet :

Visual C++

  1. #1
    Lucas Panny
    Invit�(e)
    Par d�faut [RPC]D�velopper des applications RPC
    Bonjour,

    Nom : rpc.GIF
Affichages : 179
Taille : 3,6 Ko
    J'aimerais commencer � �crire des applications "Remote Procedure Call" sous Visual C++ 2003. Mais il semble qu'il y a du COM derri�re tout �a, faudra-t-il que j'apprends COM d'abord ??
    RPC n'est-il pas seulement qu'une sorte de programmation socket client-serveur sp�cifique mais aussi une technologie appliquant l'IPC (InterProcess Communication)??
    Pour bien imaginer ce qu'est une application RPC, pouvez-vous me citer quelques ex�cutables syst�me Windows qui sont RPC !!

    Merci d'avance !

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Tu as du bol, je viens justement de potasser le d�but de la section de MSDN sur RPC.

    Et en fait, tu n'as pas besoin d'�tudier COM pour utiliser RPC: RPC n'utilise pas COM, c'est COM qui peut utiliser RPC.
    Les deux utilisent des interfaces, mais une interface RPC n'est pas une interface COM.

    Si tu peux lire l'anglais, tu peux aller voir le lien que de t'ai pass�: J'ai lu du d�but au tutoriel inclus, et je pense que �a devrait te suffire � comprendre.

    Pour les applications de Windows, je ne sais pas vraiment des masses, mais beaucoup de services Windows communiquent entre eux par RPC (notamment sur la m�me machine, juste d'un processus � l'autre, voire d'un contexte COM � l'autre).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Lucas Panny
    Invit�(e)
    Par d�faut
    Merci pour le lien !
    Donc, RPC ne n�cessite pas de conna�tre COM mais pourquoi l'aide se trouve dans Win32 & COM > Networking > Networking protocols ?
    Avant de me plonger, je me demande si RPC n'est autre qu'un protocole comme HTTP, TCP, etc ????

    Les deux utilisent des interfaces, mais une interface RPC n'est pas une interface COM.
    Quand on dit interface en Visual C++, c'est le langage IDL ou quoi ?

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    RPC, c'est un peu un sur-protocole: En-dessous, �a peut utiliser divers moyens de communication (TCP, tubes nomm�s, HTTP...).

    Pour interface, c'est plus compliqu�.
    • Une interface n'est pas IDL: IDL est un langage servant � d�finir des interfaces. Notamment, le logiciel MIDL.exe fourni par microsoft peut prend un fichier IDL en entr�e et pond des d�clarations C et C++ d'interfaces en sortie.
    • Une interface RPC, ce n'est apparemment qu'un ensemble de fonctions, avec lesquelles on n'utilise pas de "pointeur d'interface". Je pense qu'on utilise toujours IDL pour les d�finir, puisqu'on a forc�ment besoin du code C g�n�r� (les "stubs").
    • Une interface COM, c'est ce qu'on utilise quand on manipule des objets COM, et �a s'utilise comme des classes C++ abstraites (des interfaces, quoi) En C et en C++, il existe deux fa�ons possibles de la d�clarer:
      • Faire g�n�rer un fichier par MIDL: Tu peux voir un exemple de ce que �a donne en regardant les fichiers unknwn.idl et unknwn.h de ton SDK. Avec �a, on a droit � toute la puissance d'IDL, permettant d'utiliser les interfaces pour DCOM, OLE Automation, etc.
      • utiliser des macros comme DECLARE_INTERFACE. Tu peux voir un exemple dans le fichier <objbase.h>. Par contre, en faisant �a, on n'a pas droit � pas mal de fonctionnalit�s donn�es par IDL. �a suffit g�n�ralement pour des interfaces "mineures" avec lesquelles on sait qu'on ne fera jamais de communication inter-processus, etc.
    • Avec l'arriv�e de .Net, il y a un nouveau type d'interfaces, les interfaces .Net. C'est sp�cifique � .Net, �a �quivaut aux interfaces java, et �a n'est pas utilisable directement en dehors de .Net. Par contre, Microsoft fournit des wrappers pour utiliser des interfaces COM depuis .Net ou inversement.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Lucas Panny
    Invit�(e)
    Par d�faut
    C'est gentil M�dinoc !
    Je pense que je dois d'abord conna�tre ce qu'est une classe abstraite puis une interface (Java et C++).
    RPC n'est pas seulement du Microsoft ?

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    � la base RPC est un standard. Microsoft y a apport� quelques extensions, notamment pour l'utilisation dans DCOM.

    Une classe abstraite, c'est une classe qui poss�de des fonctions virtuelles pures. En cons�quence, elle ne peut pas �tre instanci�e directement, on ne peut cr�er que des objets d'une classe d�riv�e impl�mentant toutes ces fonctions.
    Une interface .Net ou Java est plus ou moins une classe abstraite particuli�re: Toutes ses fonctions sont virtuelles pures, et elle ne peut contenir de donn�es. Ce dernier point est tr�s important, car c'est celui qui permet l'h�ritage multiple d'interfaces dans les syst�mes (comme .Net et Java) qui interdisent l'h�ritage multiple de classes.
    Une interface COM, c'est plus abstrait que �a, mais quand on l'utilise en C++, elle s'emploie comme une classe abstraite sans donn�es.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Lucas Panny
    Invit�(e)
    Par d�faut
    Encore merci pour les �claircissements sur les classes abstraites !! Si quelqu'un connait des ex�cutables windows qui utilisent RPC-DCOM, dis-le moi, c'est important pour le comprendre et le tester.

  8. #8
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je trouve que le tutoriel sur MSDN est un bon exemple.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Lucas Panny
    Invit�(e)
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    Tu as du bol, je viens justement de potasser le d�but de la section de MSDN sur RPC.
    Quel bol ? Merci M�dinoc !!

  10. #10
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Bon, j'exag�rais un peu en disans "je viens", en fait, je l'avais fait la veille.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Lucas Panny
    Invit�(e)
    Par d�faut
    Je reviens sur ce fil car je ne l'ai pas encore mis en r�solu !!

    Je r�sume: en gros, RPC est une couche au dessus du SOCKET, une technique permettant d'appeler une proc�dure sur une machine distante (peut aussi d'un m�me processus sur la m�me machine) comme une proc�dure locale. Mais comment en d�velopper? Il semble qu'il n'y a pas encore de tuto sur �a sur DEVELOPPEZ; en effet, MSDN explique un peu mais �a reste flou.
    With RPC a client can connect to a server running on another platform. For example: The server could be written for Linux and the client could be written for Win32.
    Est-ce vrai ? sous Windows ?
    Une petite curiosit�: en quoi RPC est-il un moyen utilis� par les VIRUS pour se propager surtout sous WINDOWS ??

  12. #12
    Lucas Panny
    Invit�(e)
    Par d�faut
    Une autre citation qui me tracasse
    Comme pour CORBA, les couches COM+ se situent au niveau 5-6-7 du mod�le OSI au dessus donc de la couche 4 de TCP/UDP
    On compare donc ici la technologie COM+ � une couche r�seau, pourquoi ? donc est-ce un truc au m�me titre que SOCKET, RPC, FTP, HTTP et les autres ?

  13. #13
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je ne connais pas assez COM+ pour r�pondre correctement � ta derni�re question, mais je sais que COM+ utilise RPC.

    Pour le fait de pouvoir l'utiliser avec Linux, tu ne peux pas �videmment utiliser les m�me stubs. Mais il me semble que le langage IDL est assez standard pourqu'un fichier IDL serve � la fois � g�n�rer les stubs Windows (quand on le traite sous Windows avec MIDL) et les stubs Linux (quand on le traite sous Linux avec je-ne-sais-pas-quoi).

    Pour le probl�me des virus, eh bien, soit c'est parce qu'il y a des failles de s�curit� dans l'impl�mentation Windows de RPC, soit parce que certaines choses sont mal r�gl�es, comme le mot de passe d'un utilisateur: DCOM (qui utilise RPC) implique de se connecter en transmettant (sous forme crypt�e) le mot de passe d'un utilisateur pour pouvoir faire diverses choses, donc si celui-ci est trop facile � deviner (attaque par dictionnaire, etc.), un virus peut se connecter avec ce mot de passe et faire un peu ce qu'il veut...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Lucas Panny
    Invit�(e)
    Par d�faut
    Et hop, voici un article sur l'impl�mentation de rpc en anglais: http://www.codeproject.com/KB/IP/rpcintro1.aspx

    Mais concernant:
    On compare donc ici la technologie COM+ � une couche r�seau, pourquoi ? donc est-ce un truc au m�me titre que SOCKET, RPC, FTP, HTTP et les autres ?
    Qu'en est-il de COM tout court alors ? de DCOM surtout ?

  15. #15
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    DCOM est l'extension de COM qui permet d'utiliser RPC vers une autre machine (COM normal n'utilisait RPC que d'un processus � l'autre sur la m�me machine).

    Tu peux utiliser RPC tout court sans avoir � conna�tre ni COM ni DCOM ni COM+.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Lucas Panny
    Invit�(e)
    Par d�faut
    Tu peux utiliser RPC tout court sans avoir � conna�tre ni COM ni DCOM ni COM+.


    Ma prochaine question ce serait faire du RPC avec Windows comme client et Linux comme serveur mais je pense que pour le titre de ce fil, c'est OK !! (r�solu)

Discussions similaires

  1. R�ponses: 3
    Dernier message: 28/09/2009, 17h35
  2. D�velopper des applications Windows sous Linux
    Par FunkyTech dans le forum Linux
    R�ponses: 2
    Dernier message: 13/02/2008, 09h31
  3. Nouvelle approche de d�veloppement des applications IHM
    Par yves.yang dans le forum SWT/JFace
    R�ponses: 2
    Dernier message: 24/10/2007, 09h56
  4. Configurer Eclipse pour d�velopper des applications SWT
    Par ghita269 dans le forum Interfaces Graphiques en Java
    R�ponses: 1
    Dernier message: 11/07/2007, 14h36

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