Objetos Distribuídos para WEB

Propaganda
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;
Download