Universidade Católica de Pernambuco Centro de Ciências e Tecnologia Ciência da Computação – Sistemas Distribuídos Prof. Almir Pires ALUNO: Bruno Xavier Peixoto da Rocha
Lista de Exercícios – Capítulo 5 Objetos Distribuídos e Invocação Remota
1. Descreva os passos básicos de uma chamada de procedimento remota.
A chamada remota segue o modelo da chamada local sendo que o procedimento procedimento chama chamado do execut executa a em um proces processo so difere diferente nte norma normalme lmente nte em um comput computad ador or diferente. No nível de RPC o serviço fornecido por um servidor pode ser visto como um modulo modulo com uma interface interface que exporta a funciona funcionalida lidade de apropriada apropriada.. Ex: um serviço de arquivo (read, write, open, close, etc). 2. Explique como os procedimentos das stubs do cliente e do servidor podem ser gerados automaticamente a partir de uma definição de interface e mapeadas para uma linguagem específica.
Em linguage linguagens ns orientad orientadas as a objetos, objetos, os stubs são implemen implementado tadoss como objetos objetos prox proxyy loca locais is que que dele delega gam m invo invoca caçõ ções es nos nos seus seus méto método doss para para o obje objeto to de impl implem emen enta taçã ção o remo remota ta.. O stub stubss são são gera gerado doss por por um comp compililad ador or IDL IDL para para a linguagem (e ambiente ORB) que o cliente esteja usando. 3. Discuta as diferenças da abordagem RPC da abordagem de troca de mensagens (e.g. que utiliza sockets) em uma comunicação cliente-servidor.
Na troca de mensagens, as mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas explicitas de comunicação: ● send (destino, (destino, mensagem) mensagem) envio da mensagem mensagem para o destino destino ● receive (origem, mensagem) mensagem) recebimento recebimento da mensagem enviada pela origem origem O RPC RPC (Chama (Chamada da remota remota de proce procedim diment ento) o) permi permite te que que progra programas mas invoq invoquem uem procedimentos ou funções localizadas em outras máquinas como se ele estivesse localm localment ente e defin definido idos. s. A nível nível do progra programa ma,, as infor informaç mações ões são passad passadas as do chamador para o procedimento chamado através de parâmetros e resultados são retornados através do resultado do procedimento. procedimento. Deste modo, nenhuma mensagem mensagem ou entrada/saída é visível ao programador. 4. Para cada uma das seguintes aplicações qual semântica você escolheria (no mínimo uma vez, ou no máximo uma vez) ? Justifique. .
a) Leitura e escrita de um programa
▪
A RPC Sun fornece semântica de chamada pelo menos uma vez b) Compilação de um programa c) Aplicação bancária remota
▪
RMI Java e CORBA a semântica de ativação é no máximo uma vez, mas o CORBA permite que a semântica talvez seja usada para métodos que não retornam resultados.
5. Qual a funcionalidade do skeleton dinâmico e do repositório de implementação. Skeletons - interface estática para os serviços (métodos) remotos. É responsável
por receber as requisições do cliente e repassá-las para o servidor. Repositório de Implementação - é um repositório, em tempo de execução, para as classes que um servidor suporta, os objetos instanciados e suas identificaçõe s; 6. Qual a principal vantagem oferecida pelo mecanismo de RPC (Remote Procedure Call) em relação ao método tradicional usado pelo modelo cliente-servidor?
Independe de linguagem de programação. 7. Ilustre e descreva a operação básica do mecanismo de RPC.
1. 2. 3. 4. 5. 6. 7. 8. 9.
procedimento cliente invoca o “stub” do cliente; “stub” cliente compõe uma mensagem e invoca o SO do cliente; SO do cliente envia a mensagem para o SO remoto; SO remoto entrega a mensagem para o “stub” do servidor; “stub” do servidor desempacota os dados e invoca a chamada no servidor; servidor processa a chamada e retorna valor ao “stub”; “stub” do servidor empacota a mensagem e chama o SO do servidor; SO do servidor envia a mensagem para o SO do cliente; SO do cliente recebe a mensagem e entrega ao “stub” cliente; “stub” cliente desempacota a mensagem e repassa ao cliente.
8. Que método o cliente utiliza para localizar o servidor em um sistema baseado em RPC? Apresente uma vantagem e uma desvantagem desse método.
Um cliente para enviar uma mensagem a um servidor, deve utilizar um serviço de nomes disponível no sistema distribuído. O cliente procura neste serviço de nomes por um servidor que possa atender é sua chamada de procedimento. Em geral o serviço é executado por servidores portmmap. Desvantagem: ● Chamador e chamado executam em espaços de endereçamento diferentes; ● Como fazer a passagem de parâmetros e resultados quando as maquinas envolvidas têm arquiteturas distintas; Vantagem:
●
Chamada de métodos em outras linguagens, pois ele não é focado em uma linguagem específica, o que resulta em uma maior flexibilidade.
9. Quais são as diferenças existentes entre o Java RMI e Corba?
A diferença que mais se destaca entre RMI e CORBA é o fato de que, enquanto RMI é uma implementação específica, CORBA é um padrão genérico. Dessa forma, RMI é totalmente baseado na tecnologia Java, enquanto existem diversas implementações de CORBA em diversas linguagens diferentes. No caso específico, portanto, de uma implementação Java de CORBA e do RMI, pode-se apontar algumas diferenças específicas. O protocolo de comunicação de ambas, por exemplo, é diferente: CORBA utiliza o IIOP, enquanto RMI usa o JRMP. As referências a objetos, no caso do CORBA, são resolvidas pelos Object Adapters e pelo ORB. No caso do RMI, a própria máquina virtual Java é responsável por essa tarefa. Experiências demonstram que o desempenho de sistemas CORBA é maior que os baseados em RMI. No caso do CORBA, a modularidade é maior, uma vez que a definição da interface é separada da implementação. Dessa forma, uma mesma interface pode gerar mais de uma implementação. No caso do RMI, interface e implementação estão embutidas no código Java. A curva de aprendizado de ambas as tecnologias é praticamente a mesma, com a diferença de que programadores que não estejam habituados com Java devem primeiro aprender essa linguagem para então usar RMI. 10. O que significa o termo IDL?
Interface Description Language. É uma linguagem de computador utilizada para descrever a interface dos componentes de software. 11. Cite quais são os principais componentes do modelo de Objeto Remoto?
Do lado do cliente: ● Stubs Clientes - trata-se de uma interface estática gerada através da compilação de uma IDL. Compõe uma mensagem que contém uma identificação e protótipos dos métodos invocados a um servidor. ● Interface de Invocação Dinâmica (DII) - permite que o cliente invoque um método no servidor sem que tenha conhecimento, em tempo de compilação, de sua interface. ● Repositório de Interfaces - contém uma base de dados com a definição de todas as interfaces de serviços conhecidos pelo ORB. Do lado do objeto servidor: ● Skeletons - interface estática para os serviços (métodos) remotos. É responsável por receber as requisições do cliente e repassá-las para o servidor. ● Interface de Skeletons Dinâmica (DSI) - é semelhante ao DII, porém ocorre no lado do servidor. Fornece um mecanismo que permite, em tempo de
execução, que servidores entreguem requisições de um ORB para uma implementação de objeto sem que tenha conhecimento, em tempo de compilação, de sua interface; ● Repositório de Implementação - é um repositório, em tempo de execução, para as classes que um servidor suporta, os objetos instanciados e suas identificações; ● Adaptador de Objetos (OA) - responsável por: registrar as classes servidoras no repositório de implementação; instanciar os objetos chamados em tempo de execução, de acordo com a demanda dos clientes; receber as chamadas para os objetos e repassá-las aos mesmos; gerar e gerenciar as referências de objetos (ORB). ● Interface ORB - permite o acesso às funcionalidades não oferecidas pelas demais interfaces, pois não depende da interface do objeto ou do adaptador do objeto.