Disconnected operation and replication are well known techniques to increase the availability and reliability of distributed systems.
Nevertheless, until now the common practice has been the application of those ideas to specific cases, which means that each programmer implements replication and disconnection algorithms on his own way and according to the characteristics of the application under development.
This thesis extends the Client-Server model in order to handle disconnections and replication of servers.
The support to disconnection is achieved with the introduction of an agent between the client and the server.
The agent is generated by a parser that processes the interface specification annotated with disconnection primitives.
These primitives form an extension to the usual interface specification language.
The replication of servers is achieved by intercepting remote invocations and submitting these invocations to a group communication service.
The result of this work is a new model -- Client-Agent-Servers -- for generic use on applications developed without special cares in respect to availability and reliability.
O suporte à desconexão e a replicação são técnicas já bem conhecidas para aumentar a disponibilidade e a fiabilidade dos sistemas distribuídos.
No entanto, até à data a prática comum tem sido a concretização destas ideias para casos pontuais, ou seja, cada programador implementa algoritmos deste tipo à sua maneira e de acordo com as características da aplicação em causa.
Nesta dissertação são apresentados uma metodologia para dotar uma aplicação já existente, desenvolvida segundo o modelo Cliente-Servidor, de suporte à desconexão e um mecanismo para replicação de servidores.
O suporte à desconexão é conseguido com a introdução de um agente entre o cliente e o servidor.
O agente é obtido por um tradutor que processa a especificação da interface anotada com primitivas de desconexão.
Estas primitivas constituem uma extensão à linguagem de especificação de interfaces.
A replicação de servidores é obtida com a intercepção dos pedidos (invocações remotas) dos clientes e seu posterior reenvio através de um serviço de comunicação em grupo.
O resultado deste trabalho é portanto o modelo Cliente-Agente-Servidores, para aplicação genérica a soluções desenvolvidas sem preocupações notórias no que respeita à disponibilidade e fiabilidade.