| |||||||
|
|
Architecure com Avant propos Je ne suis pas l'auteur de cet
article. L'architecture COM Par Olivier Caussin
COM (Component Object Model) est une architecture logicielle créée par Microsoft. On y retrouve certains concepts de la programmation orientée objet comme lhéritage ou lencapsulation, mais son spectre dutilisation est autrement plus vaste. Rappelons en effet que COM est à lorigine des technologies OLE 1.0 et 2.0 dincorporation dobjets au sein de documents, dOLE Automation qui permet le pilotage dapplications, des composants ActiveX ou encore de DCOM. Microsoft sest attaché à résoudre quatre problèmes. Le premier est lutilisation de composants logiciels au sein dapplications. Le second est lindépendance du langage. En effet, le langage utilisé pour bâtir ces composants importe peu. COM gère également le problème des versions. Enfin, COM gère lintégration inter-process de ces composants (et donc sans étape de liaison lors de la compilation), éventuellement même à travers un réseau dans le cas de DCOM. Contrairement à lutilisation de classes C++, une application ne peut pas manipuler directement les données sous-jacentes à un composant COM. Ce dernier met à disposition de ses utilisateurs des groupes de fonctions (en fait des pointeurs vers des fonctions) appelées interfaces. Par exemple, pour quune application OLE supporte le Drag and Drop dobjets, il faut quelle implémente linterface IDragSource (par convention, les interfaces commencent par la lettre I). Microsoft utilise intensément ces interfaces dans ses nouvelles technologies et les documente officiellement, mais rien nempêche un développeur dimplémenter des interfaces qui lui sont propres, à des fins de communication entre ses composants. Chaque interface doit posséder au minimum trois méthodes QueryInterface, AddRef, et Release. Ces trois méthodes sont présentes dans linterface IUnknown. En fait, toutes les interfaces COM héritent de IUnknown. Chacune possède un numéro unique à léchelle de lunivers appelé GUID, évitant ainsi des erreurs humaines dappels dinterfaces aux noms identiques. Ce GUID est un entier de 128 bits. Par exemple {00024500-0000-0000-C000-000000000046} est le GUID dune des interfaces dExcel 97. Tous ces identifiants uniques sont inscrits dans la Base de registre du système. Attention, une interface nest pas une classe, elle nest pas instanciée par lapplication cliente. Cest une DLL système OLE32.DLL dans le cas de Windows NT qui soccupe lors de lappel dun client de lancer lEXE ou la DLL du serveur. COM existe pour Macintosh, Windows 16 bits et 32 bits, et divers Unix |