next up previous contents index
Next: Operações Explícitas versus Up: Distribuição Previous: Objectos e Mecanismos

Identificação de Objectos

Cada objecto distribuído, residente num contexto qualquer, possui um identificador global. A identificação é atribuída aos objectos quando são importados, no caso de se criar um envelope para um representante, e quando são exportados, partindo-se de um envelope previamente existente, esteja ele associado a uma carta ou a um representante.

A identificação de um par envelope/carta é constituída por um identificador que localiza o SIF correspondente à sua interface, no seu contexto, que se designará por GID, e por um identificador local, o LID, mantido pelo SIF. O par <GID:LID> é um identificador único porque se garante que o GID, o identificador de um SIF, é único. Este identificador identifica também o ponto de comunicação controlado pelo SIF, para uma dada interface.

A identificação do par envelope/representante pode passar por dois estádios. O primeiro, correspondente à importação de um objecto remoto possuidor de um identificador <GIDi:LIDi>, associa ao par o mesmo identificador. O segundo, corresponde à exportação do par. Neste caso, o identificador é expandido e, além da identificação que o par já possui, é-lhe associada a identificação correspondente ao facto de ele ser também um servidor: <GIDi:LIDi,GIDc:LIDc>.

Na realidade, todos os objectos possuem os quatro campos da identificação, embora em alguns casos possam não ser utilizados. No texto será utilizada a designação identificação interna, <GIDi:LIDi>, para referir a identificação do objecto real (envelope/carta) e correspondente ponto de comunicação. Será utilizada a designação identificador de comunicação, <GIDc:LIDc>, para referir a identificação do ponto de comunicação, quando esta for diferente da interna, como acontece com os pares envelope/representante.

Na figura 5.1 têm-se três contextos. O primeiro contexto exportou um objecto, sob o nome NOME1, tendo-lhe sido associado o identificador <GID1:LID1,?:?> -- a segunda parte do identificador não interessa neste caso, visto tratar-se de um par envelope/carta. A associação do identificador com o nome foi registada no serviço de nomes. O segundo contexto importou o objecto associado ao nome NOME1 (operação não mostrada na figura), tendo, como consequência, sido criado um par envelope/representante, ao qual começou por ser associado o identificador correspondente ao objecto representado, <GID1:LID1,?:?>. Mais tarde, o contexto 2 exporta o objecto sob o nome NOME2. Esta exportação vai provocar uma modificação no identificador do objecto, que vai agora ficar completo: <GID1:LID1,GID2:LID2>. A associação entre o identificador completo e o nome é registada no serviço de nomes. Quando o terceiro contexto importa o objecto denominado NOME2, vai obter como resultado um par envelope/representante associado ao ponto de comunicação <GID2:LID2>, mas correspondente ao objecto real <GID1:LID1>. O seu identificador, no contexto 3, é <GID1:LID1,?:?>, até que seja exportado, altura em que a segunda parte é preenchida.

  
Figure: Identificação de objectos.

O serviço de nomes não é visto em pormenor neste texto. Parte-se do princípio de que é global e capaz de armazenar informação que lhe permita traduzir um nome, e.g. sob a forma de uma cadeia de caracteres, para uma forma utilizável pelo mecanismo de comunicação, identificação de um ponto de comunicação.



next up previous contents index
Next: Operações Explícitas versus Up: Distribuição Previous: Objectos e Mecanismos



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995