Windows NT/2000/XP Enjeux et contraintes techniques Quatrième partie Pré-requis à COM Notion de bus de composants logiciels (Object Request Broker) C. Casteyde Document diffusé sous licence GNU FDL
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Notion de composant Extension de la notion d'objet Les objets constituent des intervenants autonomes de l'application Ils peuvent être déployés localement (in-process ou out-of-process) ou sur le réseau simplement Le système fournit les services de base d'accès via un « gestionnaire de requêtes entre objets » (ORB) ORB = « Object Request Broker »
Notion de composant Les communications entre objets sont standardisées La notion d'interface est la base du système Le système prend complètement en charge les communications entre les objets Les appels de procédure et de méthodes à distance se font de manière transparente Système de « RPC objet » Le standard de communication est imposé par les méthodes d'invocation de l'ORB RPC = « Remote Procedure Call »
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Notion d'interface Une interface est un « contrat de service » exposé par un objet Il s'agit souvent d'une série de méthodes utilisables via l'ORB Les conventions d'appel et la signature sont parfaitement définies Utilisent les types de données de l'ORB
Notion d'interface Machine A Objet 2 Objet 1 Machine B Objet 3
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Services standards Les ORBs fournissent des services de base : localisation et création des objets répartis, gestion de la durée de vie des objets, gestion de la persistance, communication et acheminement des requêtes, découverte dynamique des fonctionnalités, description des interfaces, appels dynamiques de méthodes, sécurité.
Localisation et création des objets Les objets sont placés dans des processus serveurs Ces processus peuvent être : lancés à la demande, contactés par les clients. Nécessite un mécanisme de nommage des objets Nécessite un mécanisme d'enregistrement des serveurs Nommage pour retrouver les objets existants Enregistrement pour pouvoir retrouver les serveurs sur activation
Gestion de la durée de vie Les objets peuvent être persistants ou éphémères (« transient ») Les comptes de références sont souvent utilisés La libération des ressources est garantie par le système Pertes de liaison et chute des clients sont prises en compte
Gestion de la persistance Les objets doivent se sérialiser eux-mêmes Le système définit les mécanismes de sérialisation et de réinstanciation Les informations sur la classe sont stockées pour la réinstanciation La persistance est utile pour déplacer les objets
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Transport des requêtes Les appels distants sont transparents et portables Marshalling des requêtes effectué par le système : les appels sont interceptés automatiquement par des « Proxies », ils sont reproduits sur l'objet cible par des « Stubs », nécessite un mécanisme de description des requêtes (statique ou dynamique). Gestion des erreurs technique (perte de liaison)
Marshalling et proxies Machine A Client Proxy IServer Machine B Stub Serveur Canal privé
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Service de notifications Mécanisme de callbacks Abonnement et désabonnement dynamiques Détermination des événements disponibles Service de délivraison asynchrone ou non Multicasting possible Services de boîte aux lettres
Service de notifications Client Service de notifications Serveur Abonnement Diffusion
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Description des interfaces Les interfaces doivent pouvoir être décrites dynamiquement (hors compilation) Impératif pour interpréter les requêtes (Marshalling) Impératif pour construire les requêtes (cf. plus loin) Généralement implémenté par un IDL (Interface Description Language)
Découverte de fonctionnalités L'implémentation des interfaces peut être facultative pour un objet Nécessité de déterminer dynamiquement les fonctionnalités Fondamental pour le polymorphisme et l'intégration Plus un objet gère d'interfaces, meilleure est l'intégration
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Late binding Permet de construire des appels dynamiquement Permet l'intégration de composants inconnus à la compilation Permet de réaliser des conteneurs génériques Rend les objets scriptables Nécessite un mécanisme de description des requêtes
Plan Notion d'Object Request Broker Notion de composant Notion d'interface Services classiques Localisation, gestion du cycle de vie et persistance Marshalling et transport des requêtes Notifications IDL et introspection Liaison tardive et scripting Sécurité
Sécurité Le système doit assurer la sécurité Sécurité au niveau de la connexion Confidentialité et authenticité des appels Prise de l'identité des clients pendant les requêtes Requiert un mécanisme d'identification des clients
Conclusion Généralisation de la notion d'objet Souplesse de la répartition Transparence des appels réseau Réutilisation de code Scripts par Automation