Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 1
Distributed
COM
NB : ce fascicule fait partie dun travail de diplme sur le sujet Technologie ActiveX & Visual Basic 6 , paru en dcembre 2001 pour lobtention du diplme dIngnieur logiciel lEIVD (Suisse). Les autres fascicules sont disponibles ladresse http://activex.developpez.com. La reproduction - sous nimporte quelle forme que ce soit - est libre de droits. Veuillez tout de mme en informer lauteur. Critiques, remarques, questions ? frederic@youplaboum.ch.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 2
1 - Introduction
Lassociation des concepts dobjet et de rpartition a donn naissance un nombre impressionnant de langages, de systmes et de bibliothques dobjets rpartis. Tous les projets actuels darchitectures rparties sont bass sur le concept dobjet. Dune part, les chercheurs issus de la communaut langage de programmation objets tendent les environnements de programmation vers des architectures rparties, et dautre part, les chercheurs issus de la communaut systme adoptent le modle objet pour structurer les concepts de la rpartition.
Bien que certains dveloppeurs universitaires associent les objets et la rpartition suivants une approche particulire (intgre ou applique), la grande majorit des systmes objets rpartis, et en particulier, les produits commerciaux, font une synthse pragmatique des deux approches. Parmi les rejetons du couple objet et rpartition, les plus connus ont pour noms CORBA, DCOM, Java/RMI, ou encore ONE.
CORBA
Depuis 1989, une association internationale appele lOMG (Object Management Group), dfinit la spcification de larchitecture dun systme objets rpartis, appele CORBA (Common Object Request Broker Architecture). Prs de 700 socits sont actuellement membres de lOMG, dont aussi bien des socits informatiques comme HP, Sun, Microsoft, ou IBM, que des utilisateurs comme Boeing ou Alcatel. A linverse dODP (Open Distributed Processing) - un autre effort de standardisation darchitectures rparties - CORBA a t dfini dans un but trs pratique, et de nombreuses mises en oeuvre de la spcification CORBA sont actuellement sur le march, incluant SOM de IBM, Orbix de Iona, et Visibroker dInprise.
CORBA associe les concepts dobjet et de rpartition dans une approche la fois intgre et applique. Lintgration se fait travers la notion dinvocation distance dobjet (lobjet est lunit de rpartition), et lapplication se fait travers les services de rpartition qui sont organiss sous forme de bibliothques de classes.
CORBA sappuie sur le protocole IIOP (Internet Inter-ORB Protocol) pour les objets distants. Toute larchitecture de CORBA dpend dun ORB (Object Request Broker), qui agit comme un bus objets central sur lequel chaque objet CORBA interagit de manire transparente avec dautres objets CORBA, quils soient locaux ou distants. Chaque objet serveur CORBA a une interface (dcrite en IDL, Interface Description Langage), et expose un ensemble de mthodes. Pour appeler un service, un client acquiert une rfrence objet un objet serveur, puis il peut - au travers de cette rfrence - effectuer des appels de mthode comme si lobjet serveur rsidant dans lespace dadressage du client. LORB soccupe de trouver limplmentation des objets CORBA, de la prparer recevoir des requtes, de les lui communiquer, et de rpondre au client. Les objets CORBA interagissent avec ORB soit au travers de linterface de ce dernier, soit au travers dun adaptateur dobjet (Object Adapter), les plus frquents tant BOA (Basic Object Adapter), et POA (Portable Object Adapter).
Etant donn que CORBA nest quune spcification, elle peut tre porte sur diverses plates-formes comme UNIX ou Windows, aussi longtemps que limplmentation des ORB sur ces plates-formes existent.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 3 DCOM
Bien que membre de lOMG, Microsoft a dvelopp son propre standard dobjets rpartis, appel DCOM (Distributed Component Object Model). Le terme standard revt dans ce contexte un caractre particulier, car il signifie standard pour - et seulement pour - les produits Microsoft.
DCOM supporte les objets distants grce au protocole ORPC (Object Remote Procedure Call), qui lui, est bas sur RPC (Remote Protocol Call, de DCE : Distributed Computing Environment) et interagit avec les services run-time de COM. Un serveur DCOM est un code capable de servir des objets dun type particulier en cours dexcution. Chaque objet serveur DCOM peut supporter des interfaces multiples, chacune dentre elle reprsentant un comportement diffrent de lobjet. Un client DCOM appelle les mthodes exposes dun serveur DCOM en pointant une des interfaces de lobjet du serveur. Cet appel, au travers du pointeur vers linterface, seffectue comme si lobjet serveur rsidait dans lespace dadressage du client. Etant donn la spcification binaire de COM, les composants serveurs DCOM peuvent tre crits en C++, Java, Delphi, Visual Basic, voire mme COBOL. Aussi longtemps quune plate-forme supporte les services COM, DCOM lest aussi.
DCOM est le modle distribu de composants le plus utilis sur plate-forme Windows. Malgr son caractre standard , Microsoft fournit une implmentation aussi bien pour plate-forme Windows que pour plate-forme Solaris. Notons galement que dautres compagnies fournissent galement des implmentations : Software AG fournit une implmentation des services COM et DCOM pour UNIX et Linux avec le produit EntireX, et Digital permet doprer sur plate-forme OpenVMS.
Java/RMI et Java Beans
La bibliothque de classes RMI (Remote Method Invocation), dveloppe par la socit JavaSoft (filiale de Sun Microsystems) sappuie sur le protocole JRMP (Java Remote Method Protocol). Essentiellement bas sur la srialisation - qui permet aux objets dtre transmis (marshalling) comme un flux - spcifique Java (Java Object Serialization), les objets serveurs et clients doivent tous deux tre crits en Java. Chaque objet serveur dfinit une interface permettant daccder lobjet depuis la machine virtuelle Java dun ordinateur distant 1 . Linterface expose un ensemble de mthodes indiquant les services offerts par lobjet serveur. RMI dpend du mcanisme de nommage RMIRegistry (sexcutant sur la machine serveur) et permettant de contenir toutes les informations relatives au serveur objets. Le client RMI acquiert une rfrence un objet serveur en effectuant un lookup sur le serveur objets, et invoque ensuite les mthodes dsires de la mme manire que si lobjet serveur rsidait dans son espace dadressage. Les objets serveurs RMI sont nomms avec une URL (Uniform Resource Locator); ainsi, un client dsirant obtenir une rfrence sur un objet serveur spcifiera lURL de ce dernier de la mme manire quon adresse une page HTML.
1 Java, du moins dans les premires versions des bibliothques, ne permet pas linvocation dobjets distants. Java intgre les objets et la rpartition travers le mcanisme de migration : cest le code qui se dplace. Lorsquun navigateur comme Netscape charge une page web et rencontre dans un code HTML une tiquette dsignant une applet Java (soit un programme Java qui peut se tlcharger sur le web), il retrouve le code de lapplet et le fait migrer vers le site client (en tablissant une connexion TCP/IP). La machine virtuelle Java du navigateur permet ensuite dexcuter le code Java (en fait le byte code) migr chez le client. Puis le navigateur efface ensuite le code de la mmoire lorsquil quitte la page web en question. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 4 Java/RMI fonctionne sur toutes les plate-formes implmentant une machine virtuelle Java.
Lintroduction des Java Beans (puis des EJB 2 , Entreprise Java Beans) pour le dveloppement dapplications sous forme dun assemblage de composants sappuyant sur un canevas a dmontr la validit du concept, validit dj dmontre en partie par les ActiveX, malheureusement tributaires dune seule plate-forme. Java Beans est un modle de composants portables et multi-plate-forme crit en Java. Il permet aux dveloppeurs dcrire des composants selon le dogme write once - run everywhere en bnficiant de la portabilit et de la puissance de Java. Leur spcification a t dfinie par Sun et de nombreux autres acteurs, tel IBM, impliqus dans le monde Java, dans le but dinstaurer un vritable march des composants logiciels.
Les Beans peuvent tre manipuls dans des outils de dveloppement graphique (Jbuilder de Borland ou Visual Age dIBM par exemple). Un Bean est une classe Java classique qui adhre certaines conventions concernant ses proprits et sa gestion des vnements. Cest grce au respect de cette norme quil peut tre analys par lenvironnement qui laccueille.
1.1 Une comparaison entre Java Beans et ActiveX.
Facilits de maintenance
De ce ct, lavantage a longtemps t du ct des ActiveX : bien documents, rapidement intgrs aux outils de dveloppement leaders (Visual Basic, Visual C++, Delphi,.), dsormais ils font partie des meubles. Les Java Beans, pour leur part, profitent dun effet de mode, et bon nombre doutils (ceux qui supportent le JDK, ds sa version 1.1, Jbuilder, Power J, Visual Age, par exemple) permettent de dvelopper ceux- ci. Ils offrent gnralement des assistants de cration aux Java Beans aussi simples que ceux connus pour les ActiveX, voire souvent plus sophistiqus (selon le ct de la barrire o lon se place. ).
Performances
En ce qui concerne la performance du composant pris hors de son contexte, lavantage se situe du ct des ActiveX, qui sappuient sur du code vritablement compil. Les Java Beans, en revanche, se contentent des performances de Java, qui sont encore perfectibles.
Etendue du parc
La viabilit dune solution informatique dpend souvent du parc existant un instant donn. De ce point de vue, les composants ActiveX vendus dans le commerce ont t pendant longtemps plus nombreux que les bibliothques de Java Beans. Une tendance qui sinverse, dans la mesure o Java concerne les diteurs de toutes les plate-forme serveurs. Dautre part, les acteurs majeurs du march base de donnes (Oracle, Informix, Ingres, IBM) ont plutt jet leur dvolu sur Java quActiveX, tant il est vrai que le parc install des grands comptes se situe plutt sur des architectures base AS400 ou UNIX que Microsoft. Cette tendance, que lon croyait un temps devoir disparatre, semble au contraire se renforcer. Tant et si bien que larchitecture Entreprise Java Beans semble
2 Les EJB sont semblables aux composants MTS/COM+ de Microsoft. Ils rpondent principalement aux problmatiques de monte en charge et de transactionnel en distinguant les composants mtiers dits Session Beans, des composants persistants dits Entity Beans. Les serveurs EJB sont le cur des serveurs dapplications J2EE. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 5 en mesure de dfinit un nouveau standard dans la problmatique des mcanismes daccs linformation.
Portabilit et interoprabilit
A ce sujet, la comparaison est vite faite : hors de la plate-forme Wintel, peu de chances (mme si quelques diteurs indpendants proposent des possibilits de dploiement sur dautres plate-formes) de voir fleurir des ActiveX. Ces derniers ne sont pas portables, et ninteroprent quavec eux-mmes. Linteroprabilit est nanmoins techniquement possible par lutilisation de divers ponts permettant la communication avec des Java Beans ou des objets CORBA. Il reste nanmoins vrai que lajout dun pont est un pis-aller qui augmente la complexit et diminue les performances.
Cette caractristique rend douteuse, voire improbable la prsence des ActiveX avec les serveurs UNIX. Un atout de poids pour les Java Beans qui, au contraire, peuvent tre dploys sur toutes les plate-formes serveurs et qui, par lintermdiaire de CORBA, bnficient dune interoprabilit sans faille.
Monte en charge
Ct monte en charge, les technologies Java Beans et ActiveX se tiennent dans un mouchoir de poche : les Java Beans sappuient sur les mdiateurs dobjets de larchitecture de lOMG (Object Management Group), ces ORB CORBA tels que Visibroker (socit Inprise) mettent disposition des jeux de composants identiques facilement distribuables sur plusieurs machines.
De son ct, Microsoft intgre Windows 2000 son Transaction Server, dont lavantage principal est doffrir une interface dutilisation relativement simple. De cette manire, on obtient les avantages dun moniteur transactionnel dans les composants ActiveX, en quelques appels de fonctions. Le faible cot de cette approche permet de dmocratiser lutilisation des moniteurs transactionnels dans lentreprise.
Le pont Java Beans / ActiveX
Javasoft propose un outil permettant un Java Bean dtre vu comme un ActiveX par les applications Windows permettant de les visualiser. Il sagit du packager, qui produit, partir dun Java Bean un fichier destin la base de registres Windows, des fichiers amorces Java (constituant le pont entre le Java Bean et lActiveX qui lencapsule), et un fichier binaire OLE dcrivant les mthodes, vnements et proprits insrer dans le Type Library. Les classes ncessaires sont insres dans le fichier JAR original. Ce fichier JAR reste portable si les classes du paquetage sun.beans.ole sont disponibles.
Notons aussi que Microsoft propose sa propre version de cette passerelle, et que loutil de Taligent, WebRunner Toolkit, effectue lopration inverse : ActiveX en Java Bean. CORBA quand lui propose un modle permettant en principe dintgrer aussi bien des Java Beans que des composants ActiveX au sein dun mme environnement.
Alors : Java Beans ou ActiveX ?
Le choix dune architecture nest pas simple. Pour une solution centre sur UNIX, le choix des Java Beans semble invitable.
De mme, la slection des ActiveX en environnement exclusivement Windows semble tout aussi judicieuse. Lorsque les ressources serveurs se partagent les environnements Windows et UNIX. Une solution mixte peut constituer un bon choix. Le Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 6 dveloppement Web autorise - par le biais des adresses URL - laccs des ressources varies, et cela de manire compltement transparente pour le client. Autant en profiter, en rpartissant les traitements ct serveur entre les applications Javascript/Java Beans et ASP/ActiveX.
Une dmarche logique danalyse consiste, dans ce cas, dcouper fonctionnellement lapplicatif serveur, valider pour chacune des fonctions ladquation des Java Beans ou ActiveX (en termes de performances et de facilit daccs linformation souhaite) et implmenter la fonctionnalit avec larchitecture souhaite.
1.2 Le monde des composants distribus selon Microsoft
Faisons le point sur les multiples abrviations qui parsment le jargon qui caractrise Microsoft. Les 6 technologies fondamentales de DNA (Distributed interNet Applications 3 ) sont :
- COM, qui comme nous lavons vu, permet de dfinir des composants, - DCOM, qui permet de manipuler ceux-ci de manire distribue, - MTS (Microsoft Transaction Server), un environnement dexcution dans lequel les composants voluent, offrant un service de requtes-rponses en fournissant une scurit ainsi quune gestion des transactions 4 , - MSDTC (Microsoft Distributed Transaction Coordinator), un outil traitant de manire automatique les mises jour sur de grosses applications, - MSMQ (Microsoft Message Queue, nom de code The Falcon), similaire linterface dinvocation dynamique de CORBA, de manire asynchrone 5 , - Et MSCS (Microsoft Cluster Server, nom de code The Wolf Pack), permettant de regrouper plusieurs serveurs pour les faire travailler ensemble.
3 DNA a dsign de 1996 aujourdhui larchitecture de composants distribus de Microsoft. Avec larrive de .NET, il semblerait que cette appellation soit abandonne au profit dune nouvelle. 4 Les technologies middleware concurrentes de MTS sont les EJB (Entreprise Java Beans) et CCM (CORBA Component Model). 5 Les technologies MOM (Message Oriented Middleware) concurrentes de MSMQ sont JMS (Java Message Service) et MQSeries dIBM. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 7
2 - DCOM
2.1 Introduction
Le modle de composants distribus de Microsoft, DCOM, tend COM afin de supporter les communications inter-objets sur diffrents ordinateurs rpartis sur un rseau LAN (Local Area Network) ou WAN (Wide Area Network), ou sur Internet.
La distance qui spare COM de DCOM est trs courte : mme si COM permet de concevoir des objets sexcutant sur des machines distantes, il faudra utiliser loutil de configuration de DCOM pour permettre votre machine de supporter les objets COM de manire approprie. En termes de technologie, DCOM ne ncessite pas de programmation plus spcifique que COM (du moins sous VB), soit ce que ne nous avons vu jusque l. En fait, il ny a pas de diffrences entre le dveloppement dun serveur out- of-process COM du dveloppement dun serveur out-of-process DCOM : les programmes sont identiques.
2.2 Concept fondamentaux de DCOM
DCOM se base sur les couches DCE-RPC pour assurer la transparence au niveau du rseau et grer les appels distants de composants. Il facilite normment la gestion du rseau pour les programmeurs, en prenant en charge aussi bien les communications que le marshalling, soit lencapsulation du ct client des paramtres donns par le client la fonction appele, ainsi que la reconstitution de ces paramtres du ct serveur pour lappel de la fonction. DCOM reste galement ouvert et permet au programmeur (sil en a les comptences) de raliser son propre marshalling, ou de contrler son propre protocole de communication. La figure suivante montre schmatiquement la frontire entre le client et le serveur lors de lappel.
Il ny a pas de diffrences fondamentales entre COM et DCOM, puisque ce dernier ne sert finalement qu faire communiquer des composants distants relis par un rseau. Nous verrons par la suite comment configurer une machine pour quelle puisse utiliser DCOM.
C CO OM M DCE RPC C Cl li ie en nt t M Ma ac ch hi in ne e s se er rv ve eu ur r M Ma ac ch hi in ne e c cl li ie en nt t C CO OM M C Co om mp po os sa an nt t Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 8 2.3 DCOM dans les technologies de composant de Microsoft
Presse-papiers Windows (1987) OLE 1 (1991) Informatique rpartie (annes 1980) Open Software Foundation Distributed Computing Environment Appels de procdure distante (OSF DCE RPC 1992) DCOM, Windows NT 4.0, MTS 1.0 (1996) OLE 2 - premire sortie publique de COM dans le SDK OLE 2.0 (1993) ActiveX, COM Windows NT 3.51, Windows 95 (1995) Dbuts de rflexion sur COM (1988) Windows NT 3.5 Support 32 bits Interface Definition Language (IDL) (1994) Windows NT 4.0 Options Pack : MTS 2.0, MSMQ 1.0, IIS 4.0 (1998) Windows 2000, COM+, MSMQ 2.0, IIS 5.0 (1999 - 2000) Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 9 2.4 Considrations de conception propres aux objets DCOM
Bien quil soit possible de travailler avec des composants COM de manire distante (en utilisant DCOM), il vous faudra certainement repenser le design de votre composant avant de le mettre en production. Les compromis de conceptions qui taient acceptables avec un objet COM ne le sont plus ds que celui-ci est utilis sur un rseau.
Premirement, vous devez garder lesprit que vous aurez deux programmes qui communiqueront au travers dun rseau. La manire sont ils seront relis na que peu dimportance, il ne sera pas possible dchanger des donnes aussi vite quil est possible de le faire sur une machine. De plus, si votre rseau est de type 10BaseT ou 100BaseT, il faudra penser partager la bande passante entre toutes les machines connectes. Mme si le rseau est suffisamment rapide pour traiter les communications entre vos deux machines comme sur une seule, le fait que dautres ordinateurs soient prsents sur ce rseau narrangera rien laffaire. La premire rgle est donc de minimiser la quantit dinformations dplace dun ordinateur un autre.
La seconde rgle dcoule de la premire : chaque fois que vous envoyez un message dune machine une autre, une quantit non ngligeable dinformations - dont la taille est indpendante de la taille du message - est incluse automatiquement dans celui-ci. Il vaut donc mieux envoyer un gros message quune centaine de petits messages. Autrement dit, aprs avoir minimis la taille des messages, il faut les envoyer dans des paquets les plus gros possibles.
Relativement Visual Basic, voici quelques rgles qui aident raliser ces ides :
Minimisez la quantit de donnes envoye entre deux ordinateurs en transfrant uniquement ce qui est ncessaire.
Utilisez le mot-cl ByVal pour envoyer linformation dans un sens seulement. Sans ce mot-cl, DCOM devra retourner la valeur mme si elle na pas t modifie.
Utilisez des objets Recordset (dconnects) dADO 6 pour transfrer linformation entre machines. ADO met en place un marshalling spcial pour amliorer les performances de communications sur un rseau.
Utilisez des mthodes qui mettent jour les proprits de manire globale, plutt que de mettre jour les proprits une une.
6 ADO (ActiveX Data Object) : voir glossaire. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 10
3 - Utilitaire de configuration DCOM
Ce qui diffrencie COM de DCOM est son outil de configuration, qui permet de rgler comment et o les serveurs out-of-process sont crs en ditant les entres de la base de registres associes avec un serveur out-of-process COM normal . Techniquement, cela vite ainsi davoir a spcifier le nom dun ordinateur distant dans linstruction CreateObject, mais aussi de pouvoir utiliser le mot-cl New dans les instructions Set et Dim, afin de crer des objets distants. Cet outil de configuration permet galement de contrler comment lobjet est scuris. Il est possible de travailler en relation avec les rgles de scurit de Windows NT pour dcider de rgles trs prcises.
Il existe deux versions de lutilitaire de configurations : une pour Windows 2000 et NT, lautre pour Windows 95 et 98. Les diffrences entre ces deux versions se situe essentiellement dans les options de scurit. Comme les OS Windows 95 et 98 ne sont de loin pas complets en matire de scurit, les options scuritaires de DCOM se rsument autoriser ou non laccs un composant selon le nom dutilisateur. Nous dtaillerons donc lutilitaire pour Windows 2000 et NT, dans la mesure o le travail de lauteur a t effectu sur ces deux OS.
Lutilitaire se lance avec la commande DCOMCNFG dans la bote de dialogue Excuter (Menu Dmarrer Excuter).
La case Activer Distributed COM de longlet Proprits par dfaut est certainement la plus importante : elle soit tre coche afin de pouvoir excuter DCOM sur la machine. La case Activer les services permet le support du protocole de transport Tunnelling TCP, sur le port 80, afin de communiquer plus facilement travers les proxy et firewalls 7 .
7 Cependant, tant que les objets CIS (COM Internet Services) devront tre dvelopps sous Visual C++, cette possibilit ne pourra sappliquer Visual Basic. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 11 Le niveau didentification devrait tre plac sur Aucun lors du dveloppement et du test des composants, ce qui permettra dliminer la plupart des erreurs rencontres (on se penchera alors plus particulirement sur les erreurs de COM). Attention ne jamais laisser ce niveau Aucun en phase de production, pour des raisons videntes de scurit (infiltrations externes).
Les diffrentes valeurs du niveau didentification sont les suivantes :
Aucun Aucune vrification de scurit. Devrait tre utilis lorsque le niveau demprunt didentit est fix Anonyme.
Appel Une vrification est effectue lors de chaque appel.
Confidentialit du paquet Les donnes, lidentit et la signatures de lmetteur sont encrypts pour assurer une scurit maximale.
Intgrit du paquet Lidentit et la signature de lmetteur sont encrypts dans chaque paquet pour assurer que ceux-ci arrivent inchangs.
Paquet Lidentit de lmetteur est encrypte dans chaque paquet.
Par dfaut Pour Windows 2000 et NT, identique Se connecter.
Se Connecter Les vrifications de scurit sont effectues quand la connection est faite avec le serveur. Cette option ne fonctionne quavec des protocoles orients connections.
Le niveau demprunt didentit dcrit comment le nom dutilisateur sera consign sur le serveur. La valeur Anonyme ne devrait tre utilise uniquement que dans la phase de test.
Les valeurs sont les suivantes :
Anonyme Le serveur dapplications ne vrifie pas lidentit de lappelant.
Dlguer Le serveur dapplications accomplit certaines tches sur lordinateur du client. Cette valeur na jamais t implmente par lutilitaire.
Emprunter lidentit Le serveur dapplications emprunte lidentit du client. Cette valeur nest disponible que sur la machine qui fait office de serveur.
Identifier Le serveur dapplications vrifie le nom dutilisateur associ avec lapplication cliente.
La dernire case cocher (Fournit une scurit) demande au serveur de compter le nombre de clients connects en plus du nombre de rfrences faites sur lobjet COM. Cocher cette case permet dviter au programmeur dinitialiser le compteur de rfrences. Du point de vue de Visual Basic, cette case ne sert rien, puisquil nest pas possible de modifier ce compteur explicitement.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 12 Longlet Scurit par dfaut est utilis pour spcifier quel utilisateur ou groupe dutilisateur peut accder un objet, lexcuter, ou configurer ses permissions. Ces valeurs sont modifiables donc relativement un objet donn.
La gestion des utilisateurs tant presque identique celle de Windows 2000/NT, nous ne lexpliquerons pas ici.
Notons seulement que de manire gnrale, il est plus pratique (et sr) de grer des groupes dutilisateurs que des individus. Si aucun groupe dj cr nest appropri pour vos applications DCOM, vous pouvez en crer avec Active Directory (Menu Dmarrer Programmes Outils dadministration Active Directory, ou Gestion de lordinateur). Windows 2000/NT supporte les principaux protocoles rseau travaillant en collaboration avec DCOM. Depuis longlet Protocoles par dfaut, il est possible de les spcifier.
Lordre dans la liste est important, car DCOM essaiera dtablir une connexion avec le protocole list en premier. Si ce nest pas possible, il tentera chaque protocole jusqu ce quil en trouve un qui fonctionne.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 13 Voyons maintenant le contenu de longlet Applications. Slectionnez Fichier.VerifFichier 8 et cliquez sur Proprits.
Toutes les valeurs que vous saisirez dans cette bote de dialogue craseront celles dfinies par le systme. Il est ainsi possible dajouter des contraintes scuritaires sur un objet (par exemple limiter son accs seulement quelques personnes, ou supprimer toutes les scurit lors dune phase de test).
Depuis longlet Gnral, on ne peut modifier que le niveau dauthentification (les valeurs - qui sont identiques celles de longlet Proprits par dfaut - sont listes plus haut. Le reste des informations de cette fentre ne sont que des confirmations dinformations qui sont modifiable ailleurs dans lutilitaire. Par exemple, le type dapplication est contrl par les valeurs que vous aurez saisies sous longlet Emplacement, et le chemin daccs local est dfini lors de linscription (registration) de lobjet COM sur votre machine.
8 La prsence de cette application ncessite que vous ayez ralis lEXE ActiveX Fichier . Si ce nest pas le cas, slectionnez nimporte quelle autre application. Notez que si lutilitaire ne peut identifier le nom de lapplication, il listera son GUID la place. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 14
Longlet suivant vous propose 3 choix :
Le premier permet de travailler en relation avec la fonction GetObject 9 et de choisir dutiliser lordinateur spcifi par son nom.
Le second (coch par dfaut) excute lobjet localement.
Le troisime vous permet de spcifier lordinateur sur lequel excuter lobjet.
Imaginons que vous avez coch les trois cases. Si vos donnes sont situes sur un systme distant, DCOM va essayer de charger lobjet sur cette machine en question (cette option ne fonctionne que si vous avez cr un objet bas sur des donnes, comme une feuille Excel ou un document Word). Si lobjet nest pas prsent sur la machine, DCOM va essayer de charger lobjet localement. Sil ny parvient pas, il va essayer de charger lobjet sur lordinateur spcifi. Si cela ne donne rien, DCOM retournera un message derreur.
La case Excuter lapplication sur lordinateur suivant fait essentiellement la mme chose que de spcifier le nom de lordinateur dans linstruction CreateObject. Lintrt de le faire ici et non dans CreateObject est quil ny a ds lors plus besoin de se proccuper de ce que le code contient (codage dur !). Si vous dsirez dplacer lobjet dun ordinateur un autre, il suffit simplement de le signaler dans lutilitaire de configuration, et le code du programme reste inchang. Notez que la valeur indique dans le code crase toute autre valeur.
9 La fonction CreateObject est similaire aux instructions Set.New et Dim.New. Elle cre une nouvelle instance de lobjet spcifi et retourne une rfrence sur lobjet que lon peut assigner une variable objet avec Set. La syntaxe de cette fonction est Set varobjet = CreateObject (class [, serveur]) , dans laquelle varobjet est le nom de la variable objet qui contiendra un pointeur vers le nouvel objet ainsi cr, class est le nom de lobjet crer, et serveur le nom de la machine o lobjet sera cr (la machine locale par dfaut). Cette fonction est lunique moyen de crer un objet sur une autre machine, en utilisant les techniques standards de COM. Si lordinateur distant nexiste pas ou que la scurit empche daccder lobjet, une erreur dexcution sera gnre, et lobjet ne sera pas cr. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 15
Sous longlet Scurit, on trouve des options similaires celle de longlet Scurit par dfaut, si ce nest quici vous est offerte la possibilit dutiliser les autorisations par dfaut, ou de personnaliser les autorisations par individu ou par groupe dindividus qui peuvent accder lobjet.
Longlet Identit permet de spcifier quel profil utiliser pour excuter lobjet :
Utilisateur interactif Slectionne le nom (dutilisateur) de celui qui cre linstance de lobjet, ce qui signifie que le nom de lutilisateur qui ouvre une session sur la console du serveur sera exploit pour dterminer les rglages de scurit. Si aucun utilisateur nest logg sur la console, une erreur sera retourne et tout ordinateur distant essayant de crer une instance de lobjet recevra une erreur.
Utilisateur excutant Slectionne le nom de la personne qui a excut lobjet en premier. Si vous slectionnez cette option, le profil de scurit de cette personne sera appliqu.
Cet utilisateur Si vous slectionnez cette option, le nom dutilisateur spcifi dterminera les droits de scurit de lobjet COM. Attention : utiliser cette option peut devenir ennuyeux la longue si la politique de scurit de votre systme (ou de votre entreprise) ncessite de devoir changer priodiquement le mot de passe.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 16
Longlet Points terminaux vous permet de lister les protocoles de communications pouvant tre utiliss avec votre application COM. Il est galement possible de rgler des options spcifiques pour chaque protocole.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 17
4 - Erreurs de DCOM frquemment rencontres
La plupart des erreurs rencontres - et cest particulirement le cas sous un serveur Windows 2000/NT - sont en relation avec la scurit. Le meilleur moyen de rgler ce genre de problme est de fixer des rgles de scurit qui fonctionnent : certains auteurs recommandent de commencer par supprimer toute scurit, puis de spcifier une rgle aprs lautre, de tester et de continuer jusqu ce lerreur se produise. A ce moment l, il devient plus simple de comprendre pourquoi le problme apparat.
Les trois erreurs les plus frquentes sont les suivantes :
Erreur 70 : Permission refuse
Marche suivre (entre chaque point vous devrez ressayer daccder lobjet) :
1/ Vrifiez que DCOM est activ aussi bien sur le serveur que sur le client.
2/ Vrifiez que le nom dutilisateur associ la machine locale a les permissions pour accder lordinateur distant ainsi que lobjet distant.
3/ Utilisez lutilitaire de configuration de DCOM pour faire les changements suivants sur le serveur distant DCOM et ressayez :
a/ Modifiez les proprits de scurit de lobjet de telle manire que les utilisateurs tout le monde, systme et utilisateur interactif ait les autorisations de lancement de lobjet (pour laccs et pour lexcution).
b/ Sous le mme onglet (Scurit), rgler les autorisations de configuration de telle manire que les utilisateurs crateur propritaire, systme ainsi quutilisateur interactif aient le contrle total, et que lutilisateur tout le monde ait la permission en lecture seule.
c/ Sous longlet Identit, slectionnez lutilisateur interactif ou spcifiez un nom dutilisateur dun utilisateur appartenant au groupe des administrateurs. Vrifiez quun mot de passe nest pas requis.
4/ Si cela ne fonctionne toujours pas, rgler le niveau dauthentification par dfaut sur aucun, ainsi que le niveau demprunt didentit par dfaut sur emprunter lidentit.
5/ Si cela ne fonctionne toujours pas, redmarrer la machine cliente ainsi que le serveur : certaines modifications peuvent ncessiter le redmarrage de la machine.
Erreur 429 : Le composant ActiveX ne peut pas crer l'objet
Points vrifier :
- Vrifiez que DCOM est activ aussi bien sur le serveur que sur le client.
- Vrifier que le serveur DCOM est bien inscrit (registered) sur lordinateur client.
- Vrifier que lobjet distant existe sur la machine distante et quil est bien inscrit. Il est possible que quelquun ait dsinscrit (unregistered) le serveur DCOM. Il se Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 18 peut aussi que lors dune mise niveau du serveur DCOM, celui-ci ait acquis un nouveau GUID.
- Si le programme fonctionne, mais ne fait rien et ne rpond pas, vrifiez sur lordinateur serveur si le processeur ne tourne pas 100%. Ceci est caus par un problme de scurit lorsque lobjet distant essaie dcrire quelque chose dans la base de registres, mais que le nom dutilisateur na pas les permissions pour le faire. Pour y remdier, changez le nom dutilisateur associ lobjet distant, ou mettez jour ses permissions.
Erreur 462 : La machine serveur distante n'existe pas ou est indisponible
Points vrifier :
- Vrifiez que le nom de la machine distante est correctement orthographi.
- Vrifiez que vous pouvez vous connecter sur la machine distante. Il est possible que celle-ci soit dbranche ou quil y ait un problme sur le rseau impliquant les deux machines.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 19
5 - Exemple de composant DCOM
Nous allons raliser un exemple simple dapplication client/serveur utilisant DCOM. Il est ncessaire de travailler avec ldition Entreprise de Visual Basic 6 pour ce faire. Ce sera galement loccasion dutiliser lassistant dempaquetage et de dploiement. Notre application, lance depuis la machine cliente, affichera lheure de la machine sur laquelle sexcutera le serveur. Avant de commencer, il faut activer DCOM (avec lutilitaire Dcomcnfg que nous avons vu auparavant) sur les machines cliente et serveur.
Crez un rpertoire nomm DCOMDemo et logez-y deux rpertoires nomms Server et Client.
5.1 Cration du serveur
Lancez Visual Basic 6, et slectionnez un projet ActiveX EXE. Ajoutez le code suivant la classe cre :
Public Function ServerTime() As String ServerTime = Time End Function
Dans les proprits du projet, saisissez DCOMDemo_Svr dans le champ Nom du projet, ainsi que DCOMDemo_Svr - Server dans le champ Description du projet. Cochez loption Mode dexcution autonome. Cette option devrait toujours tre coche lorsque le serveur ne possde aucune interface utilisateur, car elle assure quaucune bote de dialogue ne saffichera dans le processus dexcution du serveur. Si le serveur est excut dans le mode Utilisateur Interactif (dans Dcomcnfg) et queffectivement il ny a aucune interaction de la part de lutilisateur sur le serveur, celui-ci pourrait utiliser lintgralit du temps CPU.
Sous longlet Composant des proprits du projet, cochez la case Fichier serveur distant, ce qui aura pour but de gnrer les fichier VBR et TLB requis pour lempaquetage du programme client sadressant au serveur. Ces fichiers contiennent des entres de la base de registres qui seront inscrites sur la machine cliente. Validez, sauvegardez le fichier et le projet, et compilez le serveur (Fichier Crer DCOMDemo_Svr.exe).
Retournez sous les proprits du projet, et sous longlet Composant, cochez loption Compatibilit binaire, en vrifiant que le programme spcifi dans le champ soit bien DCOMDemo_Svr.exe. Cette manuvre permet dassurer que tous les GUID seront les mmes lors des multiples compilations du serveur.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 20 5.2 Cration du client
Ouvrez un nouveau projet standard EXE, et allez dans les proprits du projet. Sous longlet Gnral, saisissez DCOMDemo_Cli comme nom de projet, et DCOMDemo_Cli - Client comme description du projet, et validez.
Dans les rfrences (Projet Rfrences), slectionnez DCOMDemo_Svr - Server (en cochant la case correspondante) et validez.
Placez un bouton sur la feuille, nomm Run, et ajoutez le code suivant dans son vnement Click :
Private Sub Command1_Click() Dim MonObjet As DCOMDemo_Svr.Class1 On Error GoTo Err
Set MonObjet = CreateObject("DCOMDemo_Svr.Class1") MsgBox "Heure du serveur =" & MonObjet.ServerTime & _ "Heure du client =" & Time
Exit Sub
Err: MsgBox " la connexion a chou : Erreur " & _ Err.Number & "-" & Err.Description
End Sub
Sauvegardez le fichier et le projet dans le rpertoire Client, puis lancer lexcution de celui-ci (F5). Les deux heures affiches sont identiques : cest normal puisque le client est excut sur la mme machine que le serveur.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 21 5.3 Empaquetage du serveur
Lancez lassistant dempaquetage et de dploiement (Menu Dmarrer Programmes Microsoft Visual Studio 6.0 Outils Microsoft Visual Studio 6.0 Assistant Empaquetage et dploiement).
Slectionnez le projet DCOMDemo_Svr.vbp, et cliquez sur Empaquetage. Choisissez le type dempaquetage Logiciel dinstallation standard, et validez. Le programme va ensuite afficher la bote de dialogue suivante :
Cliquez sur Non. DCOM nest pas Remote Automation, en fait cette dernire technologie a t remplace par DCOM.
Lcran suivant vous propose une liste de fichiers empaqueter avec le programme DCOMDemo_Svr. Il vaut mieux, moins que vous ne sachiez quel est le rle des fichiers, cliquer sur Suivant en acceptant cette configuration. Vous pouvez ensuite dfinir les groupes et les lments du menu Dmarrer qui seront crs par le processus dinstallation ( partir desquels le programme pourra tre lanc). Dans la fentre Fichiers partags, cliquez sur le fichier DCOMDemo_svr.exe si vous dsirez obtenir plusieurs instances dobjets depuis plusieurs machines diffrentes. Validez pour terminez lempaquetage.
Les fichiers gnrs sont stocks dans le rpertoire Package. Certes, ce rpertoire pse plus de 4 Mo, mais noubliez pas quil contient toutes les librairies requises pour son installation (il est donc possible dinstaller le serveur sur une machine sur laquelle ne figure pas Visual Studio ni Visual Basic).
5.4 Empaquetage du client
Lopration de lempaquetage du client est sensiblement diffrente de celle du serveur, dans la mesure o celui-ci ne tournera pas sur la mme machine que le client : ce changement concerne essentiellement linstallation de la librairie de type (fichier .tlb) ainsi que linscription de plusieurs entres dans la base de registres.
La marche suivre est la suivante : Aprs avoir slectionn le projet DCOMDemo_Cli.exe et cliqu sur Empaqueter, choisissez nouveau le type dempaquetage standard, puis lemplacement o vous dsirez enregistrer les fichiers.
La bote de dialogue suivante apparat :
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 22
Cliquez sur OK sans cocher la case, le serveur nayant aucune dpendances. Dans la fentre Fichiers Inclus, dslectionnez le programme DCOMDemo_Srv.exe, puisque vous ne voulez pas le distribuer avec DCOMDemo_Cli.exe. Cliquez ensuite sur le bouton Ajouter, et recherchez le fichier DCOMDemo_Svr.vbr dans le rpertoire du serveur (DCOMDemo\Server). Ce fichier contient les entres relatives au serveur ajouter dans la base de registres.
Validez. Vous constaterez que deux fichiers sont apparus dans la liste des fichiers inclus : DCOMDemo_Svr.VBR et DCOMDemo_Svr.TLB.
Dans la fentre Serveurs distants, il est possible de spcifier le nom de la machine sur laquelle sexcutera le serveur.
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 23 Gnralement, on laisse cette case vide, tant donn quon ne sait pas forcment lavance o le serveur sera install. Nous verrons plus loin que cest lors de linstallation que le programme nous demandera de spcifier cette adresse. Cliquez sur Suivant sur toutes les fentres suivantes afin de terminer le processus dempaquetage.
5.5 Installation du serveur
Installer le serveur sur la machine o vous voulez quil sexcute, en utilisant le package que vous venez de crer. Si vous dsirez le faire sur la machine utilise pour le dveloppement, ce nest pas ncessaire, puisque Visual Basic effectue linscription au moment o il a compil le serveur.
5.6 Installation du client
Installer le client sur la machine o vous voulez quil sexcute. Lors de linstallation, tant donn que le champ de ladresse de la machine distante a t laiss blanc, le programme vous demande la localisation de celle-ci.
Voil, il ne vous reste plus qu lancer le serveur, puis le client. A lexcution de celui-ci, la fentre indiquant lheure des deux machines nest plus la mme que lors de la premire excution (notez que dans lexemple concret - relativement la figure suivante - les horloges des deux machines taient particulirement mal rgles.).
Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 24 5.7 Rglage de la scurit du serveur
En utilisant Dcomcnfg, vous pouvez grer toutes les options de scurit que nous avons vu auparavant. En phase de test, il est conseill de dsactiver toute barrire qui pourrait rendre lexcution instable, puis de placer les scurits les unes aprs les autres, en prenant soin de tester lapplication aprs chaque manuvre. Cette phase peut tre trs longue en raison de la spcificit de chaque rseau.
6 - Cycle de vie d'un composant distant
NB. Attention ne pas confondre : une machine serveur (ou machine distante) est considre comme tant lordinateur qui fait office de serveur, alors quun serveur distant (ou serveur tout court) est considr comme un composant fournissant des services.
Comme nous lavons vu lors du cycle de vie dune EXE ActiveX, un composant distant est inscrit sur une machine cliente laide du programme CliReg32.exe. Pour ce faire, il faut tout dabord cocher la case Fichier serveur distant sous longlet Composant de la fentre de proprits du projet. Puis, recompiler le tout, et lancer CliReg32.exe la ligne de commande (qui doit normalement se situer dans le rpertoire Microsoft Visual Studio\Common\Tools\..).
La compilation du composant distant gnre un fichier dextension .VBR, qui contient des informations inscrire dans la base de registre. Le programme CliReg32 sen charge : il faut donc simplement dsigner le nom de fichier .VBR aprs CliReg32 , et le tour est jou 10 .
Au moment de linscription (Registration Time)
Bien que le concept thorique de DCOM (ou de Remote Automation) soit relativement simple, il peut savrer nettement plus compliqu en pratique. Lide vritablement importante retenir est quil faut inscrire le composant sur les deux (ou plus) machines impliques. Il doit tre inscrit sur la machine serveur afin que DCOM sache quel serveur EXE charger et comment grer le marshalling des donnes du ct du serveur. Mais il doit tre galement inscrit sur la machine cliente pour que DCOM puisse crer un objet proxy pour le composant et grer le marshalling des donnes du ct du client.
Au moment de la conception et de la compilation
Aprs avoir inscrit le composant distant, on peut lutiliser de la mme manire quun composant EXE ActiveX. En effet, Visual Basic ne soccupe pas de lemplacement de celui-ci.
Au moment de lexcution
Visual Basic, grce au CLSID de lobjet, recherche un serveur EXE implmentant lobjet. Si il ne trouve pas de serveur local, il cherche un serveur distant. Puis, les choses suivantes se mettent en place :
Lorsquil trouve un serveur distant, il contacte le serveur et lui envoie une requte pour crer lobjet spcifi. Si le serveur accepte sa requte, il lance lexcutable
10 Notons quune dizaine doptions sont possibles sur la ligne de commande, pour les connatre il suffit de lancer le programme, elles sont indiques (la MSDN, du moins la version de lauteur, ne donne aucune information a ce sujet). La faon encore plus simple dinscrire un composant sur la machine cliente est de lempaqueter et de lexcuter ainsi (toutes les manuvres sont automatises). Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 25 sur la machine distante. En mme temps, le sous-systme COM cre un objet proxy sur la machine locale.
Lobjet proxy peut reproduire toutes les interfaces de lobjet rel 11 . Les proprits et mthodes de linterface de lobjet sont excutes en appelant les fonctions dans linterface de lobjet proxy. Lobjet proxy utilise le mcanisme dappel de procdure distante de lOS pour empaqueter (marshal) les donnes travers le rseau vers la machine distante. Du ct du serveur, lOS appelle lobjet directement 12 .
Toutes les valeurs ou paramtres passes par rfrence sont empaquetes (marshalling) en retour vers le systme local, travers lobjet proxy, au client utilisant lobjet.
Lorsque le projet est ferm ou que lobjet est rfrence sur Nothing, le compteur de rfrences de lobjet passe zro et lobjet proxy est effac. Lorsque le serveur distant sait que tous les objets quils fournissait sont librs, il se dcharge.
11 Il est alors possible dutiliser la liaison prcoce, en dfinissant des variables objet dun type spcifique donn. Cependant, les bnfices de cette technique (liaison prcoce) dans ce genre de cas seront trs minces, tant donn la charge du rseau. 12 En utilisant Remote Automation en lieu et place de DCOM, on peut considrer une autre couche. Au lieu dappeler lobjet distant directement, Windows appelle une application nomme Remote Automation Manager, qui gre les objets Remote Automation. Cette application appelle lobjet en utilisant les techniques standards de marshalling sur un composant out-of-process. En dautres termes, il ny a plus un canal, mais deux canaux - ou couches - de marshalling. Le premier le fait au travers du rseau, et le second sur la machine serveur. Il sagit dune des raisons pour laquelle le protocole DCOM offre de meilleures performances que Remote Automation. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 26
7 - Des DLL distantes ?
Nous avons vu jusquici que lorsquon parlait dobjets distribus avec DCOM, on parlait dEXE ActiveX. Quand est-il des DLL ? Peut-on les dposer sur une machine distante ? Le problme est le suivant : une DLL ne peut sexcuter que dans un processus existant. Lorsquon cre un objet de manire distante, quel processus chargera le contenu de la DLL (ou les objets implments dans la DLL) ? Mme si un tel processus existait (et il doit certainement exister des solutions logicielles qui rsolvent le problme) et quil arrivait empaqueter les donnes pour les envoyer sur lOS de la machine cliente, au sein de quelle thread (processus lger) les objets sexcuteraient-ils ? En admettant le cas o tous les composants partagent un mme thread, des problmes tels quencombrement des appels, ou performance globale sont quasi assurs de se produire.
En fait, DCOM nest tout simplement pas assez sophistiqu pour rsoudre ce genre de situations, il se limite donc traiter les EXE ActiveX 13 .
13 Pour assurer quune solution base sur serveurs DLL fonctionne, il faudrait un outil qui sache allouer des threads aux objets, grer leur chargement et dchargement, contrler la scurit, etc. Il serait mme possible (pour autant que toutes ces techniques soient parfaitement matrises) de dvelopper un EXE ActiveX qui offrirait ce genre doutil. Ou alors utiliser MTS, dont un des buts est justement de travailler avec les DLL distantes. Travail de diplme Visual Basic 6 & technologie ActiveX Frdric Comte
Distributed COM Page Gnr le 22.03.2004 27 Bibliographie critique et liens Internet
- Developping COM/ActiveX components with Visual Basic 6, Dan Appleman, Sams 1999, 860 pages. Cet ouvrage sadresse avant tout aux dveloppeurs professionnels sur VB, et montre les meilleures techniques pour dvelopper des composants COM et DCOM. Dun niveau trs nettement plus lev que le titre prcdent, cette bible (presque 900 pages !) passe en revue la conception dobjets COM mais aussi et surtout les mcanismes internes lors de lexcution des composants. Cest laide de cet ouvrage que jai ralis une grande partie des explications techniques.
- Au cur de Distributed COM, Guy & Henry Eddon, Microsoft Press 1998, 560 pages. Ce livre permet au dveloppeur dutiliser efficacement le modle DCOM. Sadresse un public de connaisseur (Automation, Multithreading, Marshalling,.). Il est capital davoir une solide exprience en la matire pour se lancer dans cet ouvrage !
- http://msdn.microsoft.com, le lien INCONTOURNABLE pour dvelopper sous plate- forme Windows.
- http://www.microsoft.com/com/tech/com.asp, la page de Microsoft pour tout ce qui concerne la technologie COM.
- http://www.microsoft.com/com/tech/DCOM.asp, la page de Microsoft consacre DCOM, on y tlcharge entres autres des exemples, des SDK, ainsi que toute la spcification du modle.
- http://www.componentsource.com, le site dune entreprise qui vend des composants COM, Java, CORBA,. Cest une vraie mine dinformations, la rubrique consacre lvolution des composants ma servi dans la rdaction du rapport.