Brevet FR2762415A1 — publié le 19981023

I Gestion de la mort accidentelle d'un objet lors d'une communication entre objets distribués dans un environnement COM La présente invention concerne un procédé permettant à un objet ayant ouvert une communication avec un autre objet d'être informé de la mort accidentelle de ce dernier. L'invention s'inscrit dans un environnement objet utilisant la technologie COM de Microsoft Corporation. La présente invention trouve notamment une application dans le domaine des systèmes de supervision de processus industriels. De façon classique, un tel système acquiert en temps réel des données provenant de différents équipements supervisés, et présente des informations relatives à ces équipements sur un ou plusieurs terminaux. Entre autres contraintes, il est impératif que les informations affichées soient pertinentes de sorte que l'opérateur chargé de la surveillance du processus industriel soit à même de faire un bon diagnostic de son état. Ainsi, lorsqu'une connexion entre un équipement et le système de supervision est rompue à la suite d'une avarie quelconque, le système doit en informer l'opérateur dans un délai aussi bref que possible. Certains systèmes de supervision récents mettent en oeuvre des architectures orientées objet susceptibles d'être distribuées sur plusieurs unités d'exécution. La figure 1 représente une architecture typique d'un système de supervision. Un équipement E est supervisé par un objet OI placé dans une unité d'exécution U. située sur le même site que cet équipement. L'objet O, communique, au moyen d'un réseau, avec un objet 02 placé dans une unité d'exécution U2 située sur un site distant, dont le but est de faire un certain traitement, notamment d'afficher des informations à destination d'un opérateur. Afin d'aider le développement de telles applications orientées objet et distribuées, il existe différents outils que l'on regroupe sous l'acronyme général DPE (pour Distributed Processing Environment en anglais). Le but des DPE est d'exempter le développeur de la gestion de la localisation des objets dans une architecture distribuée, et des communications entre ceux-ci. Deux grandes familles de DPE existent: l'une est basée sur la spécification de l'OMG (Open Management Group) et est nommée CORBA (Common Object Request Broker Architecture), l'autre est constituée autour du produit COM (Component Object Model), conçu par la société Microsoft Corporation. Dans sa première version, COM ne gérait que la distribution des objets sur un ensemble de processus situés sur une unique unité d'exécution (sur un seul ordinateur par exemple). Une seconde version, appelée DCOM pour Distributed Component Object Model, permet d'atteindre un second niveau de distribution en gérant la distribution des objets au sein de plusieurs unités d'exécution. La présente invention s'applique à la fois à COM et à DCOM de sorte que dans la suite de la description, il ne sera fait référence qu'à l'acronyme COM pour recouvrir l'ensemble des deux versions. La figure 2 présente le mécanisme offert par COM pour la gestion de la mort accidentelle d'un objet. Comme nous allons le voir, ce mécanisme est insuffisant dans de nombreux cas de figure. A chaque fois qu'un objet client X ouvre une communication avec un objet serveur Y, il fait appel à une fonction spécifique offerte par COM qui s'appelle AddRef et dont le but est d'incrémenter un compteur associé à l'objet serveur Y. Lors de la fin normale de la communication, le client Y appelle une autre fonction offerte par COM qui s'appelle Release et dont le but est de décrémenter ce même compteur. Lorsque le compteur devient égal à zéro, cela signifie qu'il n'existe plus aucune communication ouverte vers l'objet serveur Y; autrement dit, il n'y a plus d'objet client qui nécessite les services de l'objet serveur Y. Aussi, il est possible de libérer les ressources occupées par l'objet serveur Y. Lorsque l'objet client X meurt de façon accidentelle, il n'est pas en mesure d'appeler la fonction Release pour décrémenter le compteur associé à l'objet serveur. Cependant, l'infrastructure COM détecte la mort accidentelle de l'objet client X et se charge d'appeler la fonction Release afin d'assurer une valeur pertinente à ce compteur. Pour plus de renseignement sur les mécanismes propres à COM, on pourra se référer au document The Component Object Model Specification, publié par Microsoft Corporation. Ce document est disponible auprès de Microsoft Corp.. notamment sur le site intemet dont l'adresse est la suivante: " relation entre les objets est inversée par rapport aux besoins. De plus, dans le cas o un objet possède des communications avec plusieurs autres objets, l'appel de la fonction Release par COM en cas de mort accidentelle d'un de ces objets, ne lui permet pas de savoir lequel de ces objets est mort de façon accidentelle. La seule information fournie est qu'il existe un objet venant de mourir parmi l'ensemble des objets serveurs. Comme nous l'avons mentionné précédemment, cela pose un problème dans le cas d'un système de supervision puisque les informations affichées ne sont plus à jour, sans que l'opérateur en soit averti, mais cette insuffisance a des répercussions dans d'autres domaines techniques comme, par exemple, la gestion de réseau. Par conséquent, l'invention ne saurait être comprise comme se limitant au domaine de la supervision de processus industriel. La présente invention est, au contraire, de portée très générale et son but est de proposer un procédé permettant à un premier objet ayant ouvert une communication avec un second objet d'être informé en cas de mort accidentelle de ce dernier. Ce procédé selon l'invention se caractérise en ce que * le premier objet crée un objet intermédiaire et envoie au second objet un message contenant une référence de cet objet intermédiaire, * le second objet appelle une méthode AddRef offerte par COM, avec comme paramètre une référence de l'objet intermédiaire (W), * lorsque COM appelle la méthode Release de l'objet intermédiaire, l'objet intermédiaire envoie au premier objet un message l'informant de la mort accidentelle du second objet. Les caractéristiques et les avantages de la présente invention apparaîtront de façon plus claire dans la description qui va suivre en liaison avec les figures jointes. La figure 1, déjà commentée, représente l'architecture générale d'une application de la présente invention. La figure 2, déjà commentée, présente le mécanisme basique offert par COM. La figure 3 présente un exemple de la phase d'initialisation d'une communication entre objets selon l'invention. La figure 4 illustre le mécanisme selon l'invention en cas de mort accidentelle d'un objet supervisé. Selon l'invention, lorsqu'un objet superviseur désire être informé de la mort accidentelle d'un objet supervisé, il crée tout d'abord un objet intermédiaire. Il envoie ensuite à destination de l'objet supervisé un message M contenant une référence de l'objet intermédiaire. Cet objet intermédiaire est propre à une unique relation entre deux objets. Aussi, si l'objet superviseur nécessite d'être informé de la mort accidentelle de plusieurs objets supervisés, il lui est nécessaire de créer autant d'objets intermédiaires qu'il y a d'objets supervisé. Par exemple, sur la figure 3, l'objet superviseur X désire être informé de la mort accidentelle des deux objets supervisés Yl et Y2. Pour cela il crée deux objets intermédiaires Wl et W2. Il envoie ensuite un message à chacun des deux objets supervisés, contenant la référence de l'objet intermédiaire correspondant (WI pour Y, et W2 pour Y). En réponse à ce message, chaque objet supervisé (Y, ou Y2) fait appel à la fonction AddRef avec comme paramètre une référence de l'objet intermédiaire (respectivement Wl, W2) qui lui est associé (c'est-à-dire dont il a reçu la référence par le message M envoyé par l'objet superviseur). De la sorte, chaque objet intermédiaire (WI, W2) devient l'unique serveur d'un unique objet client (respectivement Y,, Y2) et la relation induite par COM est inversée et rendue adéquate aux besoins. Lors de la mort accidentelle d'un objet supervisé, par exemple Y, comme illustré sur la figure 4, le système COM en informe l'objet intermédiaire associe (W1) par l'appel 1 5 de la fonction Release. Cet objet intermédiaire n'ayant qu'un seul objet supervisé associé, l'ambiguïfté inhérente à la sémantique de COM est levé. Il est donc à même d'envoyer à son objet superviseur associé (X) un message D contenant une référence de l'objet supervisé (Y,) qui vient de mourir accidentellement. REVENDICATION UNIQUE Procédé permettant à un premier objet (X) ouvrant une communication avec un second objet (Y) d'être informé lors de la mort accidentelle dudit second objet (Y). dans un environnement COM, caractérisé en ce que: ledit premier objet (X) crée un objet intermédiaire (W) et envoie audit second objet (Y) un message (M) contenant une référence dudit objet intermédiaire (W), * ledit second objet (Y) appelle une méthode AddRef offerte par COM, avec comme paramètre une référence dudit objet intermédiaire (W), * et en ce que lorsque COM appelle la méthode Release dudit objet intermédiaire (W), ledit objet intermédiaire (W) envoie audit premier objet (X) un message (D) l'informant de la mort accidentelle dudit second objet (Y).