Objet distribué en direct - Live distributed object

Une illustration des concepts de base impliqués dans la définition d'un objet distribué vivant.

L'objet distribué en direct (également abrégé en objet en direct ) fait référence à une instance en cours d'exécution d'un protocole multipartite distribué (ou d' égal à égal ) , vu du point de vue orienté objet , comme une entité qui a une identité distincte , peut encapsuler état interne et threads d'exécution , et qui présente un comportement visible de l'extérieur bien défini.

Concepts clés

Les concepts clés du langage de programmation , appliqués aux objets distribués en direct, sont définis comme suit:

  • Identité . L' identité d'un objet distribué en direct est déterminée par les mêmes facteurs qui différencient les instances du même protocole distribué. L'objet consiste en un groupe de composants logiciels s'exécutant physiquement sur un ensemble de machines physiques et engagés dans une communication mutuelle, chacun exécutant le code de protocole distribué avec le même ensemble de paramètres essentiels, tels que le nom d'un groupe de multidiffusion, l'identifiant d'un sujet de publication-abonnement, identité d'un service d'adhésion, etc. Ainsi, par exemple, les canaux de publication-abonnement et les groupes de multidiffusion sont des exemples d'objets distribués en direct: pour chaque canal ou groupe, il existe une seule instance d'un protocole distribué fonctionnant entre tous les ordinateurs envoyant, transférant ou recevant les données publiées dans le canal ou en multidiffusion au sein du groupe. Dans ce cas, l'identité de l'objet est déterminée par l'identifiant du canal ou du groupe, qualifié par l'identité du système distribué qui fournit, contrôle et gère le canal ou le groupe donné. Dans le cas de la multidiffusion, l'identité du système peut être déterminée, par exemple, par l'adresse du service d'appartenance (l'entité qui gère l'appartenance au groupe de multidiffusion).
  • Proxies ( répliques ). Le proxy ou une réplique d'un objet actif est l'une des instances de composant logiciel impliquées dans l'exécution du protocole distribué de l'objet actif. L'objet peut ainsi être défini en variante comme un groupe de mandataires engagés dans la communication, maintenant conjointement un état distribué et coordonnant leurs opérations. Le terme proxy souligne le fait qu'un seul composant logiciel ne constitue pas en soi un objet; il sert plutôt de passerelle par laquelle une application peut accéder à une certaine fonctionnalité ou à un comportement qui s'étend sur un ensemble d'ordinateurs. En ce sens, le concept de proxy d' objet distribué en direct généralise la notion de stub de proxy côté client RPC , RMI ou .NET à distance .
  • Comportement . Le comportement d'un objet distribué en direct est caractérisé par l'ensemble des modèles possibles d'interactions externes dans lesquels ses mandataires peuvent s'engager avec leurs environnements d'exécution locaux. Ces interactions sont modélisées comme des échanges d'événements explicites (messages).
  • État . L' état d'un objet distribué actif est défini comme la somme de tous les états internes et locaux de ses mandataires. Par définition, il est distribué et répliqué. Les différentes répliques de l'état de l'objet peuvent être fortement ou seulement faiblement cohérentes, selon la sémantique du protocole: une instance d'un protocole de consensus aura l'état de ses répliques fortement cohérent, alors qu'une instance d'un protocole d' élection de leader aura un Etat. En ce sens, le terme objet distribué vivant généralise le concept d' objet répliqué ; ce dernier est un type spécifique d'objet distribué vivant qui utilise un protocole tel que Paxos, la synchronisation virtuelle ou la réplication de machine à états pour obtenir une forte cohérence entre les états internes de ses répliques. L'état d'un objet distribué vivant doit être compris comme une notion dynamique: comme un point (ou une coupe cohérente ) dans un flux de valeurs, plutôt que comme une valeur particulière située à un endroit donné à un instant donné. Par exemple, l'état visible de l'extérieur d'un objet d'élection de chef serait défini comme l'identité du chef actuellement élu. L'identité n'est stockée à aucun endroit particulier; il se matérialise plutôt comme un flux de messages de la forme élue (x) produits simultanément par les mandataires impliqués dans l'exécution de ce protocole, et consommés simultanément par des instances de l'application utilisant ce protocole, sur différentes machines réparties sur le réseau.
  • Interfaces ( points de terminaison ). L' interface d'un objet distribué en direct est définie par les types d'interfaces exposées par ses mandataires; ceux-ci peuvent inclure des canaux d'événements et divers types d'interfaces utilisateur graphiques. Les interfaces exposées par les proxies sont appelées points de terminaison de l'objet distribué en direct . Le terme instance de point de terminaison fait référence à un canal d'événement ou une interface utilisateur spécifique unique exposé par un seul proxy spécifique. Dire qu'un objet en direct expose un certain point de terminaison signifie que chacun de ses mandataires expose une instance de ce point de terminaison à son environnement local, et que chacune des instances de point de terminaison transporte des événements du même type (ou se lie au même type d'affichage graphique ).
  • Références . La référence à un objet en direct est un ensemble complet d' instructions sérialisées et portables pour la construction de son proxy. Pour déréférencer un moyen de référence pour analyser et suivre localement ces instructions sur un ordinateur particulier, pour produire une procuration en cours d' exécution de l'objet en direct. Selon cette définition, une référence d'objet direct joue le même rôle que Java référence , un de C / C pointeur , ou un service Web est WSDL Description; il contient une information complète suffisante pour localiser l'objet donné et interagir avec lui. Étant donné que les objets distribués en direct peuvent ne pas résider dans un endroit particulier (mais plutôt s'étendre sur un ensemble d'ordinateurs en évolution dynamique), les informations contenues dans la référence d'un objet distribué en direct ne peuvent pas être limitées à une seule adresse. Si l'objet est identifié par une sorte d'identificateur global unique (comme cela pourrait être le cas pour les sujets de publication-abonnement ou les groupes de multidiffusion), la référence doit spécifier comment cet identificateur est résolu, en incorporant de manière récursive une référence à l' objet de résolution de nom approprié .
  • Types . Le type d'un objet distribué vivant détermine les modèles d'interactions externes avec l'objet; il est déterminé par les types de points de terminaison et d'interfaces utilisateur graphiques exposés par les mandataires de l'objet, et les modèles d'événements qui peuvent se produire aux points de terminaison. Les contraintes que le type de l'objet place sur les modèles d'événements peuvent s'étendre sur le réseau. Par exemple, le type atomic multicast peut spécifier que si un événement de la forme délivrer (x) est généré par un proxy, un événement similaire doit finalement être généré par tous les proxies non défectueux (proxies qui s'exécutent sur des ordinateurs qui ne plantent jamais, et que ne cessent jamais d'exécuter ou sont exclus du protocole; la définition précise peut varier). Tout comme c'est le cas pour les types dans les langages de type Java , il peut exister de nombreuses implémentations très différentes du même type. Ainsi, par exemple, le comportement caractéristique de la multidiffusion atomique pourrait être présenté par des instances de protocoles distribués tels que la synchronisation virtuelle ou Paxos.

La sémantique et le comportement des objets distribués vivants peuvent être caractérisés en termes de flux de données distribués ; l'ensemble de messages ou d'événements qui apparaissent sur les instances du point de terminaison d'un objet en direct forme un flux de données distribué.

Histoire

Les premières idées sous-jacentes au concept d'objet distribué vivant ont été influencées par un riche corpus de recherche sur les environnements orientés objet, les incorporations de langage de programmation et les cadres de composition de protocoles, remontant au moins au modèle d'acteur développé au début des années 1970; une discussion complète des travaux antérieurs pertinents peut être trouvée dans le Ph.D. de Krzysztof Ostrowski. thèse.

Le terme objet distribué en direct a été utilisé pour la première fois de manière informelle dans une série de présentations données à l'automne 2006 lors d'une conférence ICWS , d' une conférence STC et dans les laboratoires MSR de Redmond, WA, puis formellement défini en 2007, dans un IEEE Internet Computing article. A l' origine, le terme a été utilisé pour faire référence aux types de dynamique, interactif Web contenu qui ne sont pas hébergés sur des serveurs dans les centres de données , mais plutôt stockées sur l' utilisateur final du client des ordinateurs, et alimenté en interne par des instances de fiables multicast protocoles . Le mot live exprime le fait que les informations affichées sont dynamiques, interactives et représentent un contenu actuel, frais et en direct qui reflète les mises à jour récentes effectuées par les utilisateurs (par opposition au contenu statique, en lecture seule et d' archivage qui a été pré-assemblé ). Le mot distribué exprime le fait que les informations ne sont pas hébergées, stockées sur un serveur dans un centre de données, mais plutôt répliquées parmi les ordinateurs des utilisateurs finaux et mises à jour de manière peer-to-peer via un flux de multidiffusion. les messages qui peuvent être produits directement par les utilisateurs finaux consommant le contenu; une discussion plus complète du concept d'objet vivant dans le contexte du développement Web peut être trouvée dans la thèse de Krzysztof Ostrowski . thèse.

La définition plus générale présentée ci-dessus a été proposée pour la première fois en 2008, dans un article publié à la conférence ECOOP . L'extension du terme a été motivée par la nécessité de modéliser des objets vivants comme des compositions d'autres objets; en ce sens, le concept a été inspiré par Smalltalk , qui a lancé la perspective uniforme selon laquelle tout est un objet , et Jini , qui a lancé l'idée que les services sont des objets . Lorsqu'elle est appliquée à des objets distribués vivants, la perspective dicte que leurs parties constituantes, qui incluent des instances de protocoles multipartites distribués utilisés en interne pour répliquer l'état, doivent également être modélisées comme des objets distribués vivants. Le besoin d'uniformité implique que la définition d'un objet distribué en direct doit unifier des concepts tels que le contenu Web en direct, les flux de messages et les instances de protocoles multipartites distribués.

La première implémentation du concept d'objet distribué en direct, tel que défini dans l'article ECOOP, a été la plate-forme d'objets distribués en direct développée par Krzysztof Ostrowski à l'Université Cornell. La plate-forme a fourni un ensemble d'outils visuels, glisser-déposer pour la composition de documents hiérarchiques ressemblant à des pages Web et contenant des références d'objet en direct sérialisées XML . Le contenu visuel tel que les fenêtres de discussion, les bureaux partagés et divers types de mashups peut être composé en faisant glisser et en déposant des composants représentant des interfaces utilisateur et des instances de protocole sur un formulaire de conception et en les connectant ensemble. Depuis le moment de sa création, un certain nombre d'extensions ont été développées pour intégrer des objets distribués en direct dans des documents Microsoft Office et pour prendre en charge divers types de contenu hébergé tels que Google Maps. Depuis mars 2009, la plateforme est activement développée par ses créateurs.

Voir également

Les références