DCOM - fil
Transcription
DCOM - fil
Plan Distributed Component Object Model 1. DCOM - DCE 2. DCOM & Co. DCOM / COM+ 3. Fonctionalités 4. Définitions Lionel Seinturier 5. MIDL Université Pierre & Marie Curie 6. Interface [email protected] 7. Serveur 11/7/02 1 Lionel Seinturier DCOM 2 1. DCOM - DCE Lionel Seinturier 1. DCOM - DCE DCE : Distributed Computing Environment Applications • modèle de système distribué • défini par le consortium Open Group (X11, Motif, CDE, ...) • 3 versions majeures (1992 : 1.0 / 1994 : 1.1 / 1996 : 1.2) • www.opengroup.org/tech/dce/ autres serv. à définir • même but (succès ? échec ?) que le modèle des couches réseaux ISO • organisation de l’environnement réparti en cellules • la cellule reflète au niv. inform. le schéma organisationnel de l’entr. Ex. : - 3 cellules : conception, production, marketing - ou 2 cellules : grille-pain (c. p. m.), moteur (c. p. m.) DCE Service de sécurité Serv. stations sans disque Service de fichiers distants Service de temps Service de noms aut. serv. à définir Service d’administration DCOM RPC Threads • chaque cellule contient au moins en 1 exempl. les types de serveurs définis par l’architecture DCE DCOM 3 Lionel Seinturier Système d’exploitation DCOM 4 Lionel Seinturier 1. DCOM - DCE 1. DCOM - DCE Architecture DCE DCE vs CORBA • Threads : gestion de processus légers ( règles priorité + ordonn. + synchro. ) • RPC : gestion d’invocations distantes ( ≠ sém. : au + 1, au - 1, diff. à tous ) • pas OO • plus proche du système d’exploitation • moins de services disponibles • néanmoins services + fondamentaux du pt de vue syst. (threads, sécurité) • Service de temps : assure la synchronisation d’horloges locales • Service de noms : correspondance entre identifiants logiques et localisations ϕ ( ≡ CORBA COSNaming, RMIRegistry) • Service de fichiers distants (DFS) : montage de partitions disques par rsx ( ≡ NFS ), basé sur AFS • Service de stations sans disque : serveur de démarrage pour des terminaux légers • Service de sécurité : crypte et authentifie les com. sur un rsx ( ≡ CORBA COSSecurity ), basé sur Kerberos • Service d’administration : permet d’administrer et de configurer à distance les les serveurs de l’env. DCE DCOM 5 Lionel Seinturier • pas vraiment d’implantations disponibles en accès libre (GPL, ...) • base logicielle installée nettement moins importante • techno. DCE essentiellement utilisée par de grandes applications indust. → non visible à l’utilisateur λ • techno. DCE trop en avance sur son temps ? DCOM 2. DCOM & Co. Format de données Bus de communication OLE 1.0 DDE OLE 2.0 16 bits COM OLE 32 bits NT 3.51 COM RPC DCE OCX OLE Network NT 4 DCOM ActiveX 7 Lionel Seinturier 2. DCOM & Co. Galaxie des technologies middleware de Microsoft DCOM 6 Modèle de composants graphiques OLE : Object Linking and Embedding définit un format d’échange de données entre applications 3 types d’informations : - données de présentations (méta-fichier graphique) - informations de classe (id. de l’application créatrice) - données brutes (ou réf. à un fichier les contenant) DDE : Dynamic Data Exchange basé sur le syst. d’évts de Windows permet à 2 applications d’échanger des données dynamiquement Lionel Seinturier COM : Component Object Model standard binaire de : - communication avec un objet - gestion du cycle de vie de l’objet - définit comment un obj. indique aux autres ce qu’il sait faire DCOM 8 Lionel Seinturier 2. DCOM & Co. 3. Fonctionalités • transparence à la localisation des objets • activation d’objets dynamique et à distance - SCM (Service Control Manager) : 1 par machine d’un env. DCOM • sécurité des communications - NTLM (NT Lan Manager authentification protocol) - SAM (Security Account Manager) • accès aux objets via des interfaces • support du cycle de vie des objets (création, destruction) • découverte dynamique des interfaces implantées par un objet • intéropérabilité binaire entre langages hétérogènes • détection des pannes de serveurs/rsx - mécanisme de ping géré par le OXID Resolver • isolation des ctx d’exéc. dans des apartments (MTA:multi-thr. / STA:single thr.) • réutilisation d’objets par contenance ou agrégation (pas d’héritage) • référentiel d’interfaces (type library) et d’implantations • invocation de méthode statique et dynamique (automation) • mécanisme de gestion d’événements distribués Evolution de DCOM COM+ intégration dans DCOM de • MTS (transaction) • MSMQ (mess. async.) DNA Distributed interNet applications Architecture Modèle DNA DCOM 9 Lionel Seinturier DCOM 10 4. Définitions 4. Définitions Exemple Objet COM ≈ objet au sens CORBA ou RMI - entité accessible à distance par rsx - possédant 1 ou +sieurs interfaces - répondant à des invocations de méthodes - construit à partir d’une classe MonComposantCOM (EXE) [machine 1] IUnknown ILoveCOM Composant COM - module binaire (DLL ou EXE) - contenant 1 ou +sieurs objets COM - comp. ActiveX = composant COM avec une interface graphique IUnknown IViewer CoPersonality CoViewer IHateCOM OCRServer (DLL) [machine 2] Légende graphique ORPC IUnknown Objet COM IOCR Composant COM CoOCREngine Objet COM Objet Interface DCOM Lionel Seinturier 11 Lionel Seinturier DCOM 12 DCOM RPC DCE ORPC RPC Lionel Seinturier 4. Définitions 5. MIDL Interface COM Langage de description des interfaces des objets COM • collection de fonctions • API binaire ≡ tableau de pointeurs ou vtable (virtual table) vers les méthodes d’un objet COM (écrits en C++, Java ou VB) • permet de définir des interfaces, constantes, types et opérations • pas de variables (au sens attributs de IDL CORBA) • supporte l’héritage d’interfaces • convention graph. : prises jacks dans des diag. dits bullet and stick • tout obj. COM doit au moins implanter l’interf. prédef. IUnknown • permet la def. de librairies = interf. implantées par les classes d’un composant • chaque interf. COM est associée à un IID (Interface IDentifier) - nombre sur 128 bits qui identifie de manière unique toute interface - déterminé par un algo. mis au point par l’OSF pour DCE qui utilise la date, l’heure, l’id. de la carte rsx et un compteur haute fréquence ( ≡ fonction de hachage ) - créable à l’aide de primitives syst. (CoCreateGuid) de l’API Windows • décrite dans le langage MIDL (Microsoft Interface Definition Language) DCOM 13 Lionel Seinturier librairie associée à ce composant - 1 classe avec 3 interfaces - 1 classe avec 2 interfaces • les librairies et les classes sont associées à des identifiants uniques (de même type que ceux des interf.) • les lib., classes et interf. ont des paramètres qui en précisent la sémantique • les méth. des interf. retournent tjrs un param. du type prédéf. HRESULT DCOM 5. MIDL 14 Lionel Seinturier 5. MIDL Structure d’un fichier MIDL Types de données MIDL Exemple [paramètres] <interface> <constantes> <types> <opérations> • boolean (1 octet) • byte (1) • char (1), wchar_t (2, Unicode) • float (4), double (8) • small (1) • short (2) • long (4) • hyper (8) typedef long age; [paramètres] <librairie> [paramètres] <classes> [paramètres] <interfaces> partie parfois désignée par l’acronyme ODL DCOM [ object, uuid(9372A220-B4BD-11d1-ABE1-00207810D5FE) ] interface IOcr : IUnknown { const char * chaine = «exemple»; typedef float reel; [message] HRESULT met( [in] boolean bool, [in,size_is(12)] byte * p ); HRESULT meth2( [out,string] wchar_t * ptr ); } [ uuid(9372A2B2-B4BD-11d1-ABE1-00207810D5FE), version(1.0) ] library OCREngineLib { enum couleur {rouge, vert, bleu}; union carre switch(couleur c) { case rouge: short num1; case vert : long num2; case bleu : hyper num3; }; • * (4 octets, pointeur) • [] (tableau) • enum (énumération) • struct (structures) • union (type discriminé) • VARIANT (type indifférencié) [ uuid(9372A2B3-B4BD-11d1-ABE1-00207810D5FE) ] coclass CoOcrEngine { [default] interface IOcr; interface ISpell; } } 15 struct personne { float taille; long age; }; Lionel Seinturier DCOM typedef long tab []; typedef short * ptr; 16 Lionel Seinturier 5. MIDL 5. MIDL Paramètres des interfaces • [object] : objet COM distant : objet COM local • [local] • [uuid] : l’identifiant de l’interf. : n° de version de l’interf. • [version] Valeur de retour des méthodes • pas d’exception (au sens CORBA IDL, Java ou C++) ! HRESULT : valeur sur 32 bits qui indique si l’op. a réussi ou échouée Paramètres des méthodes • [message] : appel de méthode asynchrone (seul. param. entrée) : idem mais sémantique de l’appel best effort • [maybe] Paramètres des arguments de méthodes • [in], [out] et [in,out] : entrée, sortie et entrée/sortie • [size_is(n)] : taille pour un pointeur ou un tableau • [string] : le pointeur est considéré comme une chaîne ≡ zone mémoire terminée par NULL S R Source Code • S : 1 bit ( 0 : succès / 1 : échec ) • R : 2 bits réservés (à une utilisation future ?) • Source : 13 bits indiquant qui a généré l’erreur (RPC, rsx, Windows, ...) • Code : 16 bits correspondant des codes d’erreur spécifiques à chaque source ≈ 50 paramètres ! complexe ! DCOM 17 Lionel Seinturier DCOM 6. Interface Interface IDispatch • définit les opérations - QueryInterface : retourne une liste des interf. implantées par l’obj. - AddRef : appelée chaque fois que l’on crée une réf. suppl. sur l’obj. - Release : appelée chaque fois que l’on libère une réf. sur l’obj. • doit être implantée par tout objet COM DCOM Lionel Seinturier 6. Interface Interface IUnknown ptr 18 vtbl Implantations pfnQueryInterface pfnAddRef pfnRelease pfnOcrImage pfnOcrZone CoOcrEngine::pfnQueryInterface CoOcrEngine::pfnAddRef CoOcrEngine::pfnRelease CoOcrEngine::pfnOcrImage CoOcrEngine::pfnOcrZone 19 Lionel Seinturier • permet l’invocation dynamique de méthode ( ≡ CORBA DII + DSI ) • invoc. dyn. : appelée Automation dans le vocabulaire Microsoft • principe : interrog. d’une interf. pour savoir si elle implante la méthode x • les interf. invoc. dyn. doivent hériter de IDispatch ou être déclarées en tant que dispinterface ≡ interface IOcrPanel: IDispatch dispinterface IOcrPanel { methods: [id(1)] HRESULT Status( [in] short status ); properties: [id(2)] short Age; } • possibilité de déf. des propriétés ( ≡ attributs d’une interf. CORBA IDL ) • meth. et prop. d’une interf. IDispatch sont associées à des identifiants • les interf. IDispatch def. 4 méth. spéc. à implanter (en + des 3 de IUnknown) • les interf. invoc. dyn. sont stockées dans une type library • les interf. invocables stat. et dyn. sont dites duales (prop. dual de l’interf.) DCOM 20 Lionel Seinturier 7. Serveur 7. Serveur Serveur COM = exécutable qui implante 1 ou +sieurs interf. COM Scénario de création d’un serveur COM • le serveur ne crée pas directement des obj. COM • il utilise une class factory = obj. chargé d’instancier d’autres objets 1. le serveur instancie une class factory et l’enregistre auprès de COM 2. le client demande un pointeur sur cette class factory 3. le client demande une instance de cette classe 4. la class factory crée l’instance et retourne un pointeur 5. le client interagit avec l’instance 6.7.8. le client libère les ptrs de l’inst. et de la cl. fact., le serv. est éteint objet COM objet COM objet COM Class & Co Objet client IClassFactory2 3 types de serveurs - in-process : DLL, même espace mémoire que le client (pb de sécurité ?) - out-of-process - locaux : EXE, communication par lightweigth RPC (optimisé) - distants : EXE, communication par ORPC - surrogate : encapsulateur de serv. in-process en serv. out-of-process ! permet à des in-process d’être accédés à dist. ! renforce leur sécurité DCOM 21 Lionel Seinturier Serveur API COM 1. CoRegisterClassObject 2. CoGetClassObject 4. Create 3. CreateInstanceLic 5. appels de méthodes 6. Release 7. Release 8. CoRevokeClassObject DCOM 22 7. Serveur Lionel Seinturier 7. Serveur Serveurs sources et puits Réutilisation de code dans les serveurs COM • permet de gérer des événements distribués ( ≡ CORBA COSEvent ) • les obj. sources spécifient (en IDL) les événements qu’ils produisent • les obj. puits spécifient (en IDL) les événements auxquels ils s’abonnent • pas d’héritage pour les objets COM • une réutilisation du code par contenance/délégation ou agrégation • les obj. sources sont dits connectables, leurs interf. sont dites sortantes • les obj. puits sont appelés sinks, leurs interf. sont dites entrantes • contenance = l’obj. encapsulateur délègue les appels aux obj. contenus • agrégation = les interf. des obj. contenus sont visibles directement de l’extérieur les obj. internes délègent leur interf. IUnknown à l’encapsulateur interf. entr. connectable obj. source DCOM IUnknown de A, B, C sink obj. puits interf. sort. 23 IUnknown de A, B, C A A A A sink obj. puits B B C B sink obj. puits C C C C Lionel Seinturier DCOM 24 Lionel Seinturier 7. Serveur Moniker • identificateur qui agit comme un alias persistant pour un obj. COM • doit implanter l’interf. IMoniker • fournit par ex. un accès transparent à un fichier distr., une req. d’une bd, un parag. dans un doc., les cellules d’un tab., une machine dist. Types de monikers • file moniker : alias pour un nom de fichier • item moniker : élément dans un fichier en liaison avec un file moniker ex : ligne dans une feuille de calcul Excel • generic composite moniker : collection d’autres monikers • anti moniker : «bidouille» pour les gc monikers permet de spécifier «ignore le moniker suivant dans la liste» cause : on ne peut pas retirer de moniker d’un gcm, seul. en ajouter un DCOM 25 Lionel Seinturier