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.

4.4. INTEGRAÇÃO DE SESSÕES SÍNCRONAS 65<br />

<strong>de</strong>re-se, por ex<strong>em</strong>plo, a edição cooperativa <strong>de</strong> documentos. Numa sessão síncrona são usadas operações<br />

com reduzida granularida<strong>de</strong> – por ex<strong>em</strong>plo, inserir/r<strong>em</strong>over um carácter. Num sessão assíncrona são<br />

usadas operações com uma maior granularida<strong>de</strong> – por ex<strong>em</strong>plo, <strong>de</strong>finir uma nova versão <strong>de</strong> um el<strong>em</strong>ento<br />

(secção) do documento.<br />

Em geral, os coobjectos, ao ser<strong>em</strong> <strong>de</strong>senhados para ser<strong>em</strong> manipulados <strong>em</strong> interacções assíncronas,<br />

<strong>de</strong>fin<strong>em</strong> apenas as operações a<strong>de</strong>quadas a este tipo <strong>de</strong> interacção. Adicionalmente, as estratégias <strong>de</strong><br />

<strong>gestão</strong> <strong>de</strong> <strong>dados</strong> usadas nos servidores (<strong>em</strong> particular, a estratégia <strong>de</strong> reconciliação) estão especialmente<br />

adaptadas a este tipo <strong>de</strong> operações e po<strong>de</strong>m ser ina<strong>de</strong>quadas para gerir outros tipos <strong>de</strong> operações. No<br />

sist<strong>em</strong>a DOORS, exist<strong>em</strong> duas alternativas para permitir a utilização <strong>de</strong> operações diferentes nas sessões<br />

síncronas e assíncronas.<br />

A primeira alternativa consiste <strong>em</strong> esten<strong>de</strong>r as interfaces dos subobjectos para incluír<strong>em</strong> as operações<br />

usadas durante a interacção síncrona. No entanto, a utilização <strong>de</strong>stas operações com pequena granulari-<br />

da<strong>de</strong> na evolução global dos coobjectos põe probl<strong>em</strong>as <strong>em</strong> termos da <strong>gestão</strong> das operações [154] (<strong>de</strong>vido<br />

ao espaço necessário para as armazenar e ao elevado número <strong>de</strong> operações existentes) e da estratégia <strong>de</strong><br />

reconciliação usada (que <strong>de</strong>ve ter <strong>em</strong> conta estas novas operações). Assim, propõe-se que, antes <strong>de</strong> ser<strong>em</strong><br />

propagadas para os servidores, as operações executadas durante uma sessão síncrona sejam convertidas<br />

numa pequena sequência <strong>de</strong> operações “assíncronas” que produzam o mesmo efeito. Por ex<strong>em</strong>plo, uma<br />

sequência <strong>de</strong> inserções/r<strong>em</strong>oções <strong>de</strong> caracteres é convertida numa operação que <strong>de</strong>fine o novo estado<br />

<strong>de</strong> uma secção. O componente <strong>de</strong> registo utilizado no cliente <strong>de</strong>fine um mecanismo <strong>de</strong> compressão<br />

<strong>de</strong> operações que po<strong>de</strong> ser utilizado para este efeito (através da <strong>de</strong>finição das funções <strong>de</strong> compressão<br />

a<strong>de</strong>quadas).<br />

A segunda alternativa consiste <strong>em</strong> manipular as operações <strong>de</strong> pequena granularida<strong>de</strong> fora do controlo<br />

dos coobjectos. As modificações executadas são reflectidas no estado do coobjecto executando uma<br />

sequência <strong>de</strong> operações que produza o mesmo efeito (<strong>de</strong> forma s<strong>em</strong>elhante ao resultado da compressão<br />

das operações). Para clarificar esta alternativa, consi<strong>de</strong>re-se o ex<strong>em</strong>plo da edição cooperativa. Cada<br />

m<strong>em</strong>bro da sessão síncrona mantém um editor que manipula uma cópia do coobjecto — estas cópias são<br />

mantidas sincronizadas como se explicou anteriormente. A edição síncrona do texto <strong>de</strong> um el<strong>em</strong>ento do<br />

documento (por ex<strong>em</strong>plo, uma secção) é executada numa aplicação <strong>de</strong> edição síncrona a partir do estado<br />

actual do el<strong>em</strong>ento no coobjecto (e in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente do coobjecto). No fim da edição síncrona do<br />

el<strong>em</strong>ento, o novo estado do el<strong>em</strong>ento é reflectido no coobjecto executando a operação correspon<strong>de</strong>nte.<br />

Embora esta segunda alternativa possa ser vista como uma “não solução”, ela apresenta, na prática,<br />

algumas características interessantes. Primeiro, torna possível a utilização <strong>de</strong> aplicações já existentes<br />

especialmente <strong>de</strong>senhadas para a <strong>gestão</strong> das interacções síncronas. Segundo, permite simplificar o <strong>de</strong>-<br />

senho dos coobjectos, <strong>de</strong>finindo apenas um tipo <strong>de</strong> operações. Terceiro, po<strong>de</strong> possibilitar uma maior

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

Saved successfully!

Ooh no, something went wrong!