Este documento discute as linguagens de programação para redes móveis sem infraestrutura. O AmbientTalk é apresentado como uma linguagem projetada especificamente para lidar com as características únicas dessas redes, como conexões voláteis e ausência de serviços pré-configurados. O documento explica como o AmbientTalk suporta comunicação assíncrona e descoberta de serviços para permitir aplicações funcionais nesse ambiente instável.
1. AmbientTalk
Pedro Filipe Duarte Fernandes
020316007
Faculdade de Ciências da
Universidade do Porto
1. Introdução Volatile connections: os dispositivos móveis
Com o aparecimento dos novos dispositivos portáteis, equipados com ligações wireless, possuem um limite de
cada vez mais pequenos, houve um crescimento alcance, o que pode originar perdas de conexão. As
tremendo na investigação de mobile ad hoc networks. desconexões não são na maioria das vezes
Tais redes são compostas por dispositivos portáteis permanentes: os dispositivos podem restabelecer a
(equipados com tecnologias wireless) e normalmente não conexão, ao ficarem novamente dentro dos alcances
são administradas. respectivos. Nestes casos, onde as redes são instáveis, as
aplicações devem ser capazes de permitir que a
As capacidades wireless combinadas com a portabilidade comunicação se restabeleça, de onde ela foi
dos aparelhos, resultam em aplicações onde as entidades interrompida.
se detectam espontaneamente, interligamse em As redes de sistemas distribuídos tradicionais já lidam a
variadas colaborações e podem desaparecer tão depressa muito com este tipo de falhas, no entanto, numa rede
como apareceram. móvel, este género de situação ocorre com muita mais
Apesar de terem havido grandes desenvolvimentos no frequência. De tal forma que, quase que é considerado
hardware destes pequenos dispositivos, tem havido como a regra no comportamento deste tipo de conexão.
pouco desenvolvimento no que a software, em concreto, Daí que seja necessário a utilização de uma linguagem
no que a linguagens de programação, que resolvam as que esteja bem preparada para o tratamento dessas
questões levantadas pelas mobile networks, diz respeito. ocorrências.
As linguagens de programação distribuída,
desenvolvidas até à data, ora são desenvolvidas tendo Zero infractructure: nas mobile networks, os
em conta a altaperformance, a computação distribuída dispositivos que oferecem serviços, entram e saem da
com elevado nível de confiança ou a computação rede espontaneamente. Em regra, as mobile ad hoc
distribuída para uso geral, em redes de dispositivos fixos networks não são sequer administradas. Como resultado,
e estacionários. e em contraste com as redes estáticas, onde as aplicações
Nenhuma destas linguagens foi desenhada normalmente sabem onde encontrar serviços, através de
explicitamente para mobile networks. Faltamlhes uma URLs ou endereços similares, as aplicações de mobile
série de suportes necessários, para o tratamento das networks tem de encontrar os serviços dinamicamente no
topologias associadas a mobile networks. meio onde se encontram. Os serviços dos dispositivos
vizinhos têm de ser encontrados sem a ajuda de
O AmbientTalk surge assim, como uma linguagem de
qualquer infraestrutura de apoio, previamente
programação distribuída e orientada a objectos,
configurada. Esta aparente falta de estruturação, leva a
desenhada para dar resposta aos requisitos das mobile
que as comunicações sejam feitas com base em ligações
ad hoc networks. peertopeer, onde os serviços são anunciados e
descobertos directamente pelos dispositivos. Qualquer
2. Mobile Ad Hoc Networks aplicação desenhada para mobile ad hoc networks, tem
Existem duas propriedades nas mobile networks, que de lidar com estes fenómenos.
claramente as diferenciam das tradicionais redes fixas
de computadores: as aplicações são executadas em Como os efeitos originados pelas perdas de conexão e
dispositivos móveis, que estão conectados através de ausência temporária de serviço, afectam drasticamente
comunicações wireless, com um alcance limitado. Estas as aplicações, os fenómenos referidos não são facilmente
redes exibem por isso duas características únicas: ultrapassados com as abstracções das bibliotecas usadas,
nas tradicionais linguagens de programação distribuída.
Daí o uso de linguagens específicas para este género de
2. situações, ser fulcral para o sucesso de qualquer 4.1 Event loop concurrency
aplicação. No AmbientTalk, a execução concorrencial é executada
pelos actors: uma máquina virtual, em AmbientTalk,
pode conter múltiplos actors que executam
3. Linguagens de programação concorrencialmente. Os actors implementam um modelo
orientadas ao ambiente eventdriven concurrency, em oposição com os sistemas
Na linguagem AmbientTalk, toda a comunicação tradicionais de multithreaded concorrency.
distribuída é feita assincronamente. A principal razão
Num modelo eventdriven, um eventloop é uma thread
para esse facto devese aos dispositivos estarem loosely
de execução que perpetuamente processa eventos da
coupled. É este loose coupling que reduz
event queue, evocando para isso os event handlers
significativamente o impacto das conexões serem
adequados. Estes ciclos de eventos concorrenciais evitam
extremamente voláteis. (como já referimos no capítulo
assim os deadlocks e outras situações de conflito. O não
anterior) A este nível temos a destacar dois graus de
determinismo do sistema é confinado à ordem pelos
emparelhamento:
quais os eventos são processados.
Decoupling in time: os dispositivos que comunicam
não precisam de estar disponíveis ao mesmo tempo. Isto 4.2 AmbientTalk actors
implica que um dispositivo pode enviar uma mensagem Em AmbientTalk, os actors não são representados como
para um destinatário que esta indisponível naquele objects mas sim como event loops: o event queue é
momento. representado pela queue de mensagens do actor e as
mensagens são então representadas pelos events. As
Synchronisation decoupling: permite, por exemplo, notificações de events (como envios assíncronos de
que o acto de enviar mensagens seja independente do mensagens) e os event handlers, esses sim, são
acto de receber mensagens. Isto leva a que haja uma representados como objects.
abstracção relativamente ao facto de o destinatário estar Assim sendo, o que o event loop do actor faz é retirar,
disponível ou não, e assim permitir que os dispositivos perpetuamente, mensagens da queue e invocar os
façam o seu trabalho mesmo quando não têm uma métodos correspondentes do object, através do event
ligação disponível naquele momento. handler.
Uma linguagem deste género, tem também de incluir o
suporte à descoberta e gestão dos dispositivos e serviços 4.3 Asynchronous message passing
da sua vizinhança. No entanto, a forma como os No AmbientTalk as mensagens assíncronas podem ser
dispositivos comunicam para alcançar esse objectivo, enviadas entre objects pertencentes ao mesmo ou a
revela mais um grau de emparelhamento com diferentes actors. No caso de ambos, o receptor e
importantes repercussões em mobile ad hoc networks: emissor, pertencerem ao mesmo actor, a mensagem é
simplesmente adicionada a queue do dono da mensagem
e os parâmetros são passados por reference, tal como
Decoupling in space: os dispositivos não necessitam
seriam num envio síncrono. No caso de envio da
de se conhecer previamente. O decoupling in space mensagem interactors, onde o object envia um
implica que os dispositivos se valham de outros
mensagem assincronamente através de uma far
mecanismos, que não os endereços e URLs, para se
reference, para um object pertencente a outro actor, os
comunicarem. Este é um aspecto importante das mobile
objects são transmitidos por far reference.
ad hoc networks, visto suplantar o facto de serem redes
sem infraestruturação base. (como já referimos no
capítulo anterior)
5. Programação distribuída em
AmbientTalk
4. AmbientTalk Em AmbientTalk, dois objects são designados de local,
O AmbientTalk é uma linguagem orientada a objectos, quando pertencem ao mesmo actor. Os objectos são
onde os types são dinamicamente criados. Os objectos considerados remote, quando pertencem a actors
não são instanciados de classes, mas sim criados através diferentes, mesmo que sejam executados na mesma
da clonagem de outros objectos já existentes ou gerados máquina virtual. O AmbientTalk abstraise da
automaticamente (exnihilo).
3. localização física dos actors e consideraos como a 5.2 Service discovery
unidade de distribuição. O AmbientTalk também faz uso de um serviço designado
Como objectos residentes em diferentes dispositivos, são por: publish/subscrive discovery protocol. Uma
necessariamente controlados por diferentes actors, os publication corresponde a exportar um objecto usando
únicos tipos de object references que podem ocorrer entre uma type tag. A type tag é usada como se fosse um tópico
dispositivos diferentes, são as far references. conhecido por ambos : o publisher e o subscriber. A
subscription, toma a forma de um registo de um object
handler, para um determinado type tag, que é
5.1 Far references e partial failures despoletado sempre que um object contendo aquela type
Ao admitir que far references sejam transmitidas através tag fica disponível na ad hoc network.
de máquinas virtuais, temos de especificar a sua
semântica, para fazer face a possíveis falhas de envio.
5.3 Zero infractructure
As far references do AmbientTalk, por definição, são
Em mobile ad hoc networks, os serviços têm de ser
resistentes a desconexões da rede. Quando ocorre uma
falha na rede, uma far reference do object desconectado descobertos nas proximidades dos próprios dispositivos
presentes no local. Esta tipologia de rede implica que os
começa a fazer um buffering de todas as mensagens
objectos não necessitem da actuação de terceiros, para se
enviadas para ele. Mais tarde, quando a conexão é
descobrirem uns aos outros. Também implica que a um
restabelecida, a far reference faz um flush de todas as
remote object não pode simplesmente ser atribuído um
mensagens acumuladas para o object respectivo,
URL : o dispositivo que fornece o remote object pode não
mantendo a ordem pela qual foram originalmente
ser conhecido ou simplesmente não estar disponível na
enviadas. Assim as mensagens enviadas por far
local ad hoc network. Para lidar com este problema, cada
reference nunca são perdidas, independentemente do
actor no AmbientTalk é um topicbased
estado interno da conexão para essa reference.
publish/subscribe engine. Os tópicos são os type tags
Este comportamento é indispensável em mobile usados para classificar os objectos de uma forma
networks, pelo facto de a maioria das perdas parciais de compreensível, independente de qualquer endereço
conexão, se deverem a quebras temporárias de rede. particular do dispositivo, garantindo a anonimicidade
No entanto, o dispositivo remoto pode ter desconectado das interacções entre objectos. Como cada actor pode
definitivamente ou ter ficado completamente fora do publicar e subscrever serviços, não é necessário o uso de
alcance da rede wireless. Esse tipo de falhas chamamse qualquer servidor intermediário.
de falhas persistentes. Para dar resposta a essas falhas o
AmbientTalk introduz o conceito de leasing. Um lease
denota o direito de aceder a um recurso por um 6. Conclusão
determinado período de tempo. Se o proprietário do Introduzimos assim o AmbientTalk como, uma
recurso assim o permitir, esse lease pode ser renovado ou linguagem distribuída e orientada a objectos,
prolongado ao longo do tempo. No AmbientTalk, as far especificamente desenhada para compor serviços em
references desempenham o papel dos lease e os objects mobile ad hoc networks. O AmbientTalk foi criado com o
por eles referenciados desempenham o papel dos objectivo de reduzir os efeitos negativos que, as
recursos. Assim sendo, uma far reference só providencia particularidades do hardware utilizado nas mobile
o acesso a um remote object por um intervalo de tempo networks possuem e exponenciar as suas valências.
determinado. No entanto, enquanto a far reference No seu conjunto, nenhuma das capacidades
estiver a ser usada activamente (i.e., mensagens a serem apresentadas pelo AmbientTalk é verdadeiramente
enviadas via a references para o remote object) o lease é inovadora. Contudo, é no seu conceito de integração de
transparentemente renovado. Quando ocorre uma todas essas capacidades, no desenvolvimento de
quebra de rede, o lease não consegue ser renovado e aplicações dirigidas para as novas mobile ad hoc
acaba mesmo por expirar, se a desconexão ultrapassar o networks, que se encontra a sua grande relevância.
período determinado pelo lease.
Sendo assim, quando a lease da far reference usada
expira, é anexada uma mensagem de excepção, que
Referências
avisará o emissor de que a mensagem não foi entregue [1] Tom Van Cutsem, Stijn Mostinckx, Elisa Gonzalez Boix,
ao destinatário. Jessie Dedecker, Wolfgang De Meuter, “AmbientTalk: Object
oriented Eventdriven Programming in Mobile Ad hoc Networks”,
Vrije Universiteit Brussel.