La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Concept et historique 2 Linterface IUnknown 3 Linterface IClassfactory 4 Linterface IDispatch 5 Un petit composant COM 6 Conclusion 7 Bibliographie.

Présentations similaires


Présentation au sujet: "1 Concept et historique 2 Linterface IUnknown 3 Linterface IClassfactory 4 Linterface IDispatch 5 Un petit composant COM 6 Conclusion 7 Bibliographie."— Transcription de la présentation:

1 1 Concept et historique 2 Linterface IUnknown 3 Linterface IClassfactory 4 Linterface IDispatch 5 Un petit composant COM 6 Conclusion 7 Bibliographie

2 1 Concept et Historique 80s début de linformatique répartie 1992 OSF RPC DCE 1985 Presse Papier DDE 1992 OLE COM 1996 DCOM 1.1 Historique

3 1.2 Concept Chaque composant COM/DCOM est représenté par un identifiant unique codé sur 128 bits. COM/DCOM, est un envirronement de programmation répartie. Un objet COM/DCOM est représenté par son interface aux yeux de lutilisateur. Un Objet COM/DCOM, peut être instancié de trois façons différentes - Intra processus - local - distant Lutilisateur peut préciser quelle type dintance il souhaite. Sil ne le fait pas, cest linstance par defaut qui est prise en compte (celle ci est définie par les enrgistrements dans la base de registre).

4 2 IUnknown IUnknown est linterface de base que doit implementer tout composant COM / DCOM Elle possède trois interfaces : - QueryInterface - AddRef - Release Cest par cette interface que lon peut instancier un composant COM/DCOM. Voici la definition en IDL de Iunknown [local, object, uuid( c ), pointer_ default(unique)] interface IUnknown { typedef [unique] IUnknown * LPUNKNOWN; HRESULT QueryInterface ( [in] REFIID riid, [out, iid_is(riid)] void ** ppvObject ); ULONG AddRef (); ULONG Release (); }

5 2.1 QueryInterface Cette méthode est celle qui nous permet dobtenir un pointeur dinterface vers lobjet COM/DCOM dont nous possédons lID. Le pointeur dinterface est retourné en second paramêtre. 2.2 AddRef Cette méthode permet dindiquer au système quand lutilisateur ajoute un pointeur sur linterface utilisée. 2.3 Release Cette méthode permet dindiquer au système quand lutilisateur enleve un pointeur sur linterface utilisée. Si le pointeur suprimé est le dernier, alors Release detruit lintance de lbojet instancié.

6 3 IClassFactory Cette interface contient deux méthodes destiné à traité avec des dobjets COM (leurs instances). Cette interface contient deux méthodes : - CreateInstance - LockServer CreateInstance a pour but dinstancier des Objets quils soient distants ou locaux. La fonction LockServer permet de mettre lObjet en mémoire afin de linstancier au plus vite.

7 4 IDispatch Linterface IDispatch est interessante car elle permet dutiliser un objet COM/DCOM dans des langages comme VB, ASP, JScript qui ne permettente pas de manipuler les pointeurs dinterface. Elle permet entre autre de dobtenir la position de la méthode dans la v-table. Pour ce faire, il faut utiliser deux méthodes définient par cette interface. - GetIDsOfNames, qui retourne le numéro correspondant à la fonction définie par la chaine de caractère passée en parmètre - Invoke qui permet de passer à la fonction dont on a obtenu le numéro

8 5 Un petit composant COM Après ces explications, nous allons créer notre composant COM. Celui ci nous permettra de réaliser la somme de deux entier x et y. Nous créons ce composant à laide de Visual C Voici linterface idl de notre composant : import unknwn.idl; [ object, uuid( ) ] interface Isum : IUnknown { HRESULT Sum([in] int x, [in] int y, [out, retval] int* retval); }; Pour le compiler, on clique droit sur le fichier puis sur compile Isum.idl le compilateur MIDL génère les fichier ISum.h, ISum_i.c et ISum_d.c

9 Une fois linterface COM/DCOM obtenue, il nous reste à implémenter un objet qui implémente cette interface. Nous appelons cet class CInsideDCom class CInsideDCom : public ISum { public: // IUnknown ULONG __stdcall AddRef ();//incrémente m_cRef ULONG __stdcall Release ();//decremente m_cRef sil est à 0 detruit lobjet HRESULT __stdcall QueryInterface ( REFIID riid, void** ppv ); // ISum HRESULT __stdcall Sum ( int x, int y, int* retval ); CInsideDCom(); virtual ~CInsideDCom(); private: ULONG m_cRef;//compte le nombre dintances };

10 6 Conclusion Les avantages de Com/Dcom - environnement abouti - permet un liaison avec de nombreux langages (C++, Java, Vb, VBScript, Jscript,...) - sécurité implémenté - Basé sur DCE Inconvénients - Propriétaire MicroSoft - ne troune que sur plateforme Win32 - Pas de soutien externe à MicroSoft - La seule tentative de portage (Solaris) fut un échec Comment se place Com/Dcom par rapport à Corba

11 7 Bibliographie Pour réaliser cette présentation, je me suis appuyé sur les ouvrages suivants : - Au coeur de DCOM de Guy et Henry Eddon aux editions Microsoft Press - Inside OLE de Kraig Brockschmidt aux editions Microsoft Press Je me suis également appuyée sur la documentation électronique fournie par microsoft : MSDN


Télécharger ppt "1 Concept et historique 2 Linterface IUnknown 3 Linterface IClassfactory 4 Linterface IDispatch 5 Un petit composant COM 6 Conclusion 7 Bibliographie."

Présentations similaires


Annonces Google