11.04.2013 Views

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

42 CAPÍTULO 3. APRESENTAÇÃO DO SISTEMA DOORS<br />

3.3.7 Cápsula<br />

A cápsula <strong>de</strong>fine a composição <strong>de</strong> um coobjecto e controla o seu funcionamento, <strong>de</strong>finindo a forma como<br />

são processadas localmente as invocações executadas pelas aplicações (e que o componente <strong>de</strong> adaptação<br />

<strong>de</strong>ci<strong>de</strong> executar localmente). Adicionalmente, impl<strong>em</strong>enta as operações <strong>de</strong>finidas na interface <strong>de</strong> sist<strong>em</strong>a<br />

do coobjecto, <strong>de</strong>finindo o modo como são processadas as operações executadas pelo núcleo do sist<strong>em</strong>a.<br />

O processamento comum no cliente e no servidor foi <strong>de</strong>scrito, respectivamente, nas secções 3.2.2.2<br />

e 3.2.2.3 e limita-se a combinar a execução <strong>de</strong> operações <strong>de</strong>finidas nos outros componentes.<br />

Ao controlar o funcionamento <strong>de</strong> um coobjecto e <strong>de</strong>finir a sua composição, a cápsula permite criar<br />

coobjectos com diferentes composições como se verá <strong>de</strong> seguida.<br />

Componentes pré-<strong>de</strong>finidos Dois componentes cápsula foram impl<strong>em</strong>entados. O primeiro, a cápsula<br />

simples, mantém uma única versão do estado do coobjecto. Para tal, agrega um componente <strong>de</strong> cada tipo:<br />

atributos do sist<strong>em</strong>a, atributos, registo, reconciliação, awareness, adaptação e gestor <strong>de</strong> subobjectos. Este<br />

componente permite criar um coobjecto comum.<br />

O segundo componente cápsula, a cápsula dupla, mantém dois estados do coobjecto. Para tal, inclui<br />

dois componentes <strong>de</strong> reconciliação, dois componentes <strong>de</strong> awareness e dois gestores <strong>de</strong> subobjectos. Os<br />

dois gestores <strong>de</strong> subobjectos permit<strong>em</strong> manter duas versões <strong>de</strong> cada subobjecto, os quais são actualizados<br />

<strong>de</strong> acordo com as (possivelmente) diferentes políticas <strong>de</strong> reconciliação <strong>de</strong>finidas para cada um. S<strong>em</strong>pre<br />

que existe uma nova operação no componente <strong>de</strong> registo, as funções <strong>de</strong>finidas na cápsula notificam<br />

ambos os componentes <strong>de</strong> reconciliação para executar<strong>em</strong> a operação na versão respectiva.<br />

Usando esta cápsula é possível criar facilmente um coobjecto que mantenha uma versão provisória<br />

e uma versão <strong>de</strong>finitiva do seu estado (i.e. dos seus subobjectos) a partir <strong>de</strong> subobjectos comuns, exe-<br />

cutando as operações armazenadas no componente <strong>de</strong> registo por uma (mesma) or<strong>de</strong>m total optimista e<br />

pessimista, respectivamente.<br />

Os dois componentes <strong>de</strong> awareness permit<strong>em</strong> tratar <strong>de</strong> forma diferente a informação produzida pro-<br />

visória e <strong>de</strong>finitivamente (<strong>em</strong> geral, a informação produzida provisoriamente é <strong>de</strong>scartada). A cápsula<br />

encarrega-se <strong>de</strong> garantir que as operações são executadas <strong>de</strong> forma in<strong>de</strong>pen<strong>de</strong>nte <strong>em</strong> cada uma das ver-<br />

sões e que as operações relativas a componentes não duplicados (por ex<strong>em</strong>plo, ao componente <strong>de</strong> atri-<br />

butos) apenas são executadas na versão <strong>de</strong>finitiva. Para tal, cria, para cada versão, um coobjecto comum<br />

virtual composto pelos el<strong>em</strong>entos respectivos.<br />

3.3.8 Gestor <strong>de</strong> subobjectos<br />

O gestor <strong>de</strong> subobjectos controla a criação e r<strong>em</strong>oção dos subobjectos contidos num coobjecto, exe-<br />

cutando as seguintes funções. Primeiro, controla a criação das cópias <strong>em</strong> m<strong>em</strong>ória dos subobjectos e

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!