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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.3. CLIENTES 101<br />

A propagação assíncrona é usada quando o cliente não necessita obter uma resposta imediata às<br />

mensagens enviadas — por ex<strong>em</strong>plo, quando propaga as modificações executadas por um utilizador a<br />

um coobjecto. A s<strong>em</strong>ântica da propagação assíncrona é exactamente uma vez (exactly-once) (<strong>de</strong>s<strong>de</strong><br />

que o cliente não fique <strong>de</strong>finitivamente <strong>de</strong>sconectado do servidor). Para tal, o subsist<strong>em</strong>a <strong>de</strong> comu-<br />

nicações mantém <strong>em</strong> m<strong>em</strong>ória estável a informação (conteúdo das mensagens, números <strong>de</strong> sequência<br />

enviados/recebidos/garantidos) sobre as mensagens a enviar para os os diferentes parceiros (servidores e<br />

outros clientes).<br />

O subsist<strong>em</strong>a <strong>de</strong> replicação antecipada (pre-fetching) é responsável por manter na cache do cliente<br />

as cópias dos coobjectos necessárias para que os utilizadores continu<strong>em</strong> o seu trabalho <strong>em</strong> situações <strong>de</strong><br />

<strong>de</strong>sconexão. Este subsist<strong>em</strong>a t<strong>em</strong> acesso à informação <strong>de</strong> quais os coobjectos/subobjectos acedidos por<br />

cada utilizador. Como se referiu anteriormente, o probl<strong>em</strong>a <strong>de</strong> <strong>de</strong>terminar, <strong>de</strong> forma eficiente, quais são<br />

os <strong>dados</strong> que <strong>de</strong>v<strong>em</strong> ser obtidos para suportar a operação <strong>de</strong>sconectada está fora do âmbito do trabalho<br />

apresentado nesta dissertação. A solução impl<strong>em</strong>entada no protótipo DOORS é bastante simples e basei-<br />

a-se numa política <strong>de</strong> replicação “menos recent<strong>em</strong>ente utilizado” (least recently used) e na actualização<br />

periódica dos coobjectos/subobjectos replicados no cliente.<br />

6.3.5 Comunicação entre clientes<br />

Por vezes, dois clientes que se encontram <strong>de</strong>sconectados dos servidores consegu<strong>em</strong> comunicar directa-<br />

mente entre si (por ex<strong>em</strong>plo, usando re<strong>de</strong>s <strong>de</strong> comunicação ad hoc estabelecidas usando dispositivos <strong>de</strong><br />

re<strong>de</strong> Bluetooth [19] ou wireless ethernet [73]). No sist<strong>em</strong>a DOORS permite-se que os clientes explor<strong>em</strong><br />

estas comunicações para actualização do estado das suas réplicas secundárias.<br />

Cada cliente impl<strong>em</strong>enta uma interface que permite aos outros clientes obter cópias <strong>de</strong> coobjec-<br />

tos/subobjectos. Esta interface consiste nas operações getCoObject e getAddSubObject, <strong>de</strong>finidas <strong>de</strong><br />

forma idêntica à da interface do servidor (e <strong>de</strong>scritas na secção 6.2.4). Quando um cliente, i, recebe uma<br />

operação getCoob ject (ou getAddSubOb ject) <strong>de</strong> outro cliente, j, po<strong>de</strong>m ocorrer as seguintes situações.<br />

• O cliente i não t<strong>em</strong> nenhuma cópia do coobjecto/subobjecto pedido. Neste caso a operação aborta<br />

e o cliente j é informado do erro.<br />

• O cliente i possui uma cópia inalterada do coobjecto/subobjecto pedido. Neste caso, o cliente i<br />

actua <strong>de</strong> forma s<strong>em</strong>elhante a um servidor, enviando para j o estado actual do coobjecto/subobjecto.<br />

• O cliente i possui uma cópia provisória do coobjecto/subobjecto pedido, reflectindo as modifica-<br />

ções efectuadas <strong>em</strong> i após o coobjecto/subobjecto ter sido obtido a partir <strong>de</strong> um servidor. Neste<br />

caso, o cliente i respon<strong>de</strong> com base na cópia obtida do servidor ou na versão provisória <strong>em</strong> função<br />

das opções especificadas pelo cliente j.

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

Saved successfully!

Ooh no, something went wrong!