Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB Organização • Módulo 1: – Conceitos de Sistemas Distrubídos; • Módulo 2: – Remote Procedure Call; • Módulo 3: – Java RMI; • Módulo 4: – CORBA; Módulo 2 - Sumário • RPC – Remote Procedure Call – – – – – Introdução; Arquitetura RPC; Java RPC; Estudo de Caso; Atividade; Remote Procedure Call Introdução • Comunicação no modelo clienteservidor é baseada em E/S: – Abstração fraca; • Ideal é programar um SD como se fosse um SC; • Permitir chamada de procedimento remoto como se fosse local; Remote Procedure Call Introdução • Um servidor é definido por sua interface; • O cliente possui um Stub de cada serviço do servidor; • Stub: representante local de um procedimento remoto; Remote Procedure Call Arquitetura client process server process Request client stub procedure client program Communication module Reply server stub procedure Communication dispatcher module service procedure Remote Procedure Call Arquitetura • Stub: – Aumenta transparência da implementação; – Faz marshalling do procedimento e dos argumentos em uma requisição; – Quando recebe Reply faz unMarshalling; Remote Procedure Call Arquitetura • Dispatche: chama o Server Stub apropriado; • Server Stub: faz unMarshall dos argumentos e chama procedimento; – Faz unMarshall para Reply; Remote Procedure Call Arquitetura – Sun RPC • Também chamado de ONC (Open Network Computing) RPC; • Usa linguagem de definição de interface Sun XDR; • Compilador de interface RPCGEN para linguagem C; Remote Procedure Call Arquitetura – Sun RPC const MAX = 1000; typedef int FileIdentifier; typedef int FilePointer; typedef int Length; struct Data { int length; char buffer[MAX]; }; struct writeargs { FileIdentifier f; FilePointer position; Data data; }; struct readargs { FileIdentifier f; FilePointer position; Length length; }; program FILEREADWRITE { version VERSION { void WRITE(writeargs)=1; Data READ(readargs)=2; }=2; } = 9999; Remote Procedure Call Arquitetura – Sun RPC square. x rpcgen square.h client.c square_clnt .c square_xdr. c square_svc .c gcc gcc client server server.c Remote Procedure Call Arquitetura – Sun RPC • Executa um servidor de ligação chamado port mapper; – Registra número do programa, versão e porta em que o serviço executa; • Serviço se registra no serviço de ligação; • Cliente requisita a porta de um serviço, – Informando o número do programa e a versão; Remote Procedure Call Arquitetura – Sun RPC Remote Procedure Call Java RPC • • • • Implementação do Sun RPC para Java; Jrpcgen.exe; Portmapper; Implementação: – http://netbula.com/javarpc/ – Biblioteca orpc.jar; – Arquivo RPCmid; Remote Procedure Call Estudo de Caso – Java RPC • Exemplo RPChello; • Código fonte: – Interface: hello.x; – Cliente: ClihelloRPC.java; – Servidor: SrvhelloRPC.java; Remote Procedure Call Estudo de Caso - Cliente • Desenvolver interface: – hello.x; • Compilar a interface no cliente: – Jrpcgen.exe; • Desenvolver aplicação cliente; • Compilar cliente: – javac -classpath ..\orpc.dev\lib\orpc.jar;. ClihelloRPC.java Remote Procedure Call Estudo de Caso - Servidor • Compilar a interface no servidor: – Jrpcgen.exe; • Desenvolver aplicação servidor; • Compilar servidor: – javac -classpath ..\orpcc.dev\lib\orpc.jar;. SrvhelloRPC.java Remote Procedure Call Estudo de Caso - Execução • Executar pmapsvc (PortMapper): – java -classpath ..\..\orpc.dev\lib\orpc.jar;. pmapsvc • Executar o servidor: – java -classpath ..\orpcc.dev\lib\orpc.jar;. SrvhelloRPC • Executar o cliente: – java -classpath ..\orpcc.dev\lib\orpc.jar;. ClihelloRPC localhost Remote Procedure Call Atividade • Testar estudo de caso em diferentes computadores; • Passar e retornar parâmetro na mensagem; – Alterar interface; – Alterar cliente; – Alterar servidor; Remote Procedure Call Atividade • Exemplo da calculadora remota: – CalcRPC.x; – CliCalcRPC.java; – SrvCalcRPC.java; Remote Procedure Call Atividade • Exemplo da calculadora remota: – – – – – – Gerar strubs; Compilar Cliente; Compilar Servidor; Executar PortMapper; Executar Servidor; Executar Cliente; Remote Procedure Call Atividade • Exemplo da calculadora remota: – Testar em diferentes máquinas; • Extensão: – Alterar adição e subtração para trabalhar com três parâmetros;