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.

100 CAPÍTULO 6. NÚCLEO DO SISTEMA DOORS<br />

6.3.3 Execução síncrona e garantias <strong>de</strong> sessão<br />

Os clientes do sist<strong>em</strong>a DOORS fornec<strong>em</strong> um serviço que permite aos coobjectos executar operações<br />

<strong>de</strong> leitura e escrita imediatamente num servidor. Este serviço está disponível a partir da referência <strong>de</strong><br />

sist<strong>em</strong>a (handle) associado a cada cópia <strong>de</strong> um coobjecto. O cliente é responsável pela propagação das<br />

operações para um servidor e obtenção dos respectivos resultados.<br />

Como as réplicas <strong>de</strong> um coobjecto nos vários servidores são fracamente consistentes, seria possível<br />

que sucessivas operações síncronas observass<strong>em</strong> estados inconsistentes do coobjecto — por ex<strong>em</strong>plo,<br />

uma leitura executada num servidor podia reflectir uma operação que não fosse reflectida numa leitura<br />

posterior executada noutro servidor. Para que esta situação não ocorra, é possível especificar as garan-<br />

tias <strong>de</strong> sessão [162] que se preten<strong>de</strong> que as sucessivas invocações síncronas respeit<strong>em</strong>. As seguintes<br />

proprieda<strong>de</strong>s po<strong>de</strong>m ser especificadas:<br />

Versão sucessiva A versão do coobjecto lida é posterior às versões lidas anteriormente.<br />

Lê modificações A versão do coobjecto lida reflecte as modificações executadas anteriormente.<br />

Servidor único Todas as operações são executadas no mesmo servidor.<br />

Estas proprieda<strong>de</strong>s são garantidas <strong>de</strong> forma s<strong>em</strong>elhante às proprieda<strong>de</strong>s fornecidas na obtenção <strong>de</strong><br />

uma cópia <strong>de</strong> um coobjecto no cliente, mas mantendo os vectores t<strong>em</strong>porais no âmbito da sessão r<strong>em</strong>ota.<br />

Os coobjectos <strong>de</strong>v<strong>em</strong> utilizar este serviço respeitando as intenções dos utilizadores. Em especial, é<br />

necessário ter <strong>em</strong> atenção que a propagação síncrona <strong>de</strong> uma operação <strong>de</strong> modificação equivale à sua<br />

gravação — o utilizador não po<strong>de</strong>, posteriormente, <strong>de</strong>sfazer a sua execução (<strong>em</strong>bora possa executar uma<br />

operação que anule os seus efeitos). Desta forma, os utilizadores <strong>de</strong>v<strong>em</strong> estar conscientes das situações<br />

<strong>em</strong> que uma operação executada vai ser propagada para um servidor.<br />

6.3.4 Serviços básicos<br />

Um cliente do sist<strong>em</strong>a DOORS possui dois subsist<strong>em</strong>as básicos: o subsist<strong>em</strong>a <strong>de</strong> comunicações e o<br />

subsist<strong>em</strong>a <strong>de</strong> replicação antecipada.<br />

O subsist<strong>em</strong>a <strong>de</strong> comunicações é usado para contactar os servidores e os outros clientes. Este ser-<br />

viço disponibiliza uma interface comum para a propagação <strong>de</strong> mensagens usando diferentes transportes<br />

(no protótipo do sist<strong>em</strong>a DOORS usa-se RMI). Dois tipos <strong>de</strong> propagação estão disponíveis: síncrona<br />

e assíncrona. A propagação síncrona é usada pelo cliente quando precisa <strong>de</strong> uma resposta imediata às<br />

mensagens que está a enviar — por ex<strong>em</strong>plo, durante a invocação síncrona <strong>de</strong> operações e quando é<br />

necessário obter uma cópia <strong>de</strong> um coobjecto/subobjecto para entregar imediatamente a uma aplicação.<br />

A s<strong>em</strong>ântica da propagação síncrona é no máximo uma vez (at-most once).

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

Saved successfully!

Ooh no, something went wrong!