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

Windows NT/2000/XP Enjeux et contraintes techniques Cinquième partie COM et OLE C. Casteyde Document diffusé sous licence GNU FDL.

Présentations similaires


Présentation au sujet: "Windows NT/2000/XP Enjeux et contraintes techniques Cinquième partie COM et OLE C. Casteyde Document diffusé sous licence GNU FDL."— Transcription de la présentation:

1 Windows NT/2000/XP Enjeux et contraintes techniques Cinquième partie COM et OLE C. Casteyde Document diffusé sous licence GNU FDL

2 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

3 Component Object Model ● La technologie Microsoft porte plusieurs noms : – (D)COM(+) (Distributed Component Object Model), – OLE (Object Linking and Embedding), – ActiveX. ● Initialement prévue pour l'intégration et la liaison de documents ● Étendue pour constituer un véritable ORB – Visual Basic, – base de nombreuses technologies.

4 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

5 Les composants ● Extension de la notion d'objet : – indépendance du langage (VB, C++, scripts), – réutilisation de code. ● Implémentation possible dans des serveurs : – in-process (DLL), – exécutables (EXE). ● Transparence réseau

6 Interfaces COM ● Les fonctionnalités sont basées sur les interfaces ● Les interfaces exposent les fonctionnalités des objets ● Les interfaces COM sont définies au niveau binaire ● Implémentation indépendante du langage ● Mais nécessite des langages compatibles ● Spécifique à la plate-forme

7 Interfaces COM ● Pointeur de tableau de pointeurs de fonctions ● Dérivent toutes de l'interface IUnknown ● Implémentées nativement en C++ par des classes abstraites (structure de V-table) ● Implémentées en Visual Basic en natif ● Passerelles pour les objets.Net (quasi natif)

8 Notion de Vtable &Méthode1 &Méthode2 &Méthode3... &Méthoden VTable &VTable Interface Code et données privés de l'objet/proxy Méthode 1 Méthode 2 Méthode n

9 L'interface IUnknown ● IUnknown est la base de toutes les interfaces ● Permet la gestion de la durée de vie : – utilisation d'un compte de références, – méthodes AddRef() et Release(). ● Point d'entrée pour les autres fonctionnalités : – méthode QueryInterface pour obtenir une autre interface, – détermination dynamique des fonctionnalités.

10 L'interface IUnknown AddRef Release QueryInterface IUnknown

11 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

12 Langage IDL ● Le langage IDL de Microsoft permet : – de décrire les interfaces, – de décrire les classes de composants. ● Permet de générer : – les en-têtes C/C++, – une bibliothèque de types, – le code C du proxy et du stub.

13 Exemple IDL // Interface : interface ICalc : IDispatch{ [id(1), helpstring("method Add")] HRESULT Add([in] LONG Operand1, [in] LONG Operand2, [out,retval] LONG* Result); [propget, id(2), helpstring("property Operand1")] HRESULT Operand1([out, retval] LONG* pVal); [propput, id(2), helpstring("property Operand1")] HRESULT Operand1([in] LONG newVal); }; // Bibliothèque de types : coclass Calc { [default] interface ICalc; [default, source] dispinterface _ICalcEvents; };

14 Notion de bibliothèque de types ● Représentation binaire de l'IDL ● Décrit les classes et les interfaces ● Utilisée pour le marshalling ● Utilisée pour la description dynamique des objets : – langages de scripts, – conteneurs génériques.

15 Proxies et Stubs ● Implémentés sous forme de composants in-process ● Chargés par le système dans les processus serveurs et clients : – le proxy est polymorphique avec l'objet géré, – le client communique avec le proxy, – le stub est invisible dans le serveur. ● Le proxy et le stub effectuent le transport

16 Marshalling COM Processus 1 Client Proxy IServer DLL Proxy/Stub Processus 2 Serveur IServer Stub DLL Proxy/Stub IDL Type Library

17 Conventions d'appel ● Le marshalling implique : – un respect absolu des conventions d'appel, – un allocateur mémoire dédié, – des règles de passage de paramètres. ● Les paramètres de sortie doivent être : – alloués par l'appelé, – libérés par l'appelant. ● L'appelé ne doit pas modifier les paramètres d'entrée

18 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

19 Création et identification ● Les objets sont créés avec CoCreateInstance ● Leurs classes sont identifiées par des CLSIDs ● Les interfaces sont identifiées par des IIDs ● CLSIDs et IIDs sont des GUIDs – « Globally Unique IDentifier », – nombres 128 bits globalement uniques, – générés avec uuidgen.exe (ou API).

20 Enregistrement des objets ● Les serveurs sont enregistrés en base de registres : – association (CLSID, binaire), – association (IID, Type Library), – associations (noms humains, GUID). ● Les serveurs in-process exportent des méthodes de création d'objets ● Les serveurs exécutables enregistrent leurs fabriques d'objets au démarrage

21 Création des objets CO M Base de registres CLSID Localisation CoCreateInstance Table des fabriques Client DLL Fabrique de classe Objet Serveur Fabrique de classe Objet 1 2 3 4 5 6 7

22 Distributed COM ● Les objets peuvent être utilisés à distance ● Le marshalling des interfaces est systématique ● Il faut enregistrer le proxy côté client et serveur ● Les serveurs exécutables sont déportables tels quels ● Les serveurs in-process nécessitent un processus hôte (DLLHost) ● Les droits sont définis par DcomCnfg

23 Distributed COM ● Les canaux de communication sont multiplexés ● Les protocoles UDP ou TCP sont utilisables ● Un mécanisme de ping permet de tracer les pertes de communication ● Il est quasi impossible de contrôler les timeouts réseau

24 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

25 Notifications COM ● Notion de point de connexion : – abonnement du client sur le point de connexion, – notification par callback sur une interface spécifique. ● Énumération dynamique des points de connexion (IConnectionPointContainer) ● Le serveur maintient la liste des clients ● Pas de mécanisme de boîte aux lettres (non fiable)

26 Notifications COM Client Interface 2 Point de connexion IConnectionPoint Liste des clients Point de connexion IConnectionPoint Serveur 3. Notification Client Interface 1 Client Interface 1 1. Recherche 2. Abonnement IConnectionPointContainer

27 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

28 Automation et late binding ● Fonctionnalité d'appel de méthodes dynamique : – la méthode est appelée via son nom, – les paramètres sont gérés de manière générique, – via l'interface IDispatch. ● Nécessite : – un jeu réduit de types de données, – des conventions d'appel plus contraignantes. ● Les valeurs sont passées via des VARIANTs : – union pouvant contenir tous les types Automation, – discriminant identifiant le type de la valeur.

29 L'interface IDispatch ● Méthode de précompilation « GetIDsOfNames » ● Méthode d'invocation « Invoke » ● Méthodes permettant de récupérer les informations de types ● Peut être « duale » : – dérive de IDispatch, – contient les méthodes natives pour optimisation.

30 L'interface IDispatch AddRef Release QueryInterface GetTypeInfoCount GetTypeInfo GetIDsOfNames Invoke IDispatch

31 OLE ● OLE définit un jeu d'interfaces dédiées à l'incrustation et à la liaison de documents ● Ces interfaces assurent : – les fonctionnalités de sauvegarde, visualisation, édition, – une intégration poussée et progressive entre les applications (selon les interfaces implémentées). ● Technologie complexe mais extensible : – documents OLE, – contrôles ActiveX...

32 Applications OLE Objet OLE IViewObject2 IPersistStorage IOleObject IDataObject IOleControl IOleInPlaceObject IOleInPlaceActive Object IDispatch IConnectionPoint Container Conteneur OLE IOleInPlaceFrame Document OLE Site IOleClientSite IOleInPlaceSite IOleControlSite IAdviseSink IDispatch IOleInPlace UIWindow

33 Plan ● Les origines de COM ● Les principes de base – Composants et interfaces COM – IDL et marshalling et IDL – Création et enregistrement ● Services complémentaires – Notifications et distribution – Automation et OLE ● Conclusion

34 Le choix stratégique DCOM ● C'est une technologie puissante : – réutilisation de composants, – déploiement réseau facile, – bus à objets répartis quasi-complet. ● Elle est omniprésente dans Windows : – documents OLE, – nouvelles fonctionnalités système (Shell, DirectX), – code Visual Basic omniprésent, – technologie Internet (ASP, fondement de.Net).

35 Conclusion ● COM est un véritable bus à objets ● C'est une technologie puissante et extensible ● Son implémentation est binaire et indépendante du langage ● COM est essentiel pour les documents OLE ● La suite : Une technologie complexe et difficile à maîtriser dans le détail


Télécharger ppt "Windows NT/2000/XP Enjeux et contraintes techniques Cinquième partie COM et OLE C. Casteyde Document diffusé sous licence GNU FDL."

Présentations similaires


Annonces Google