Redes de computadores II
Comunicação entre processos
Chamada de procedimento remoto (RPC)
Prof : Diovani Milhorim
Chamada de procedimento Remoto
Definição
Permite que um programa procedural chame
uma função que reside em outro computador
tão convenientemente como se esta função
fosse parte do mesmo programa que
executa, no mesmo computador.
Chamada de procedimento Remoto
Chamada de procedimento Remoto
Chamada de procedimento Remoto
Definição
RPC foi desenvolvida para permitir aos
programadores se concentrar nas tarefas
exigidas de um programa chamando
funções e, tornando transparente ao
programador o mecanismo que permite que
as partes do aplicativo se comuniquem
através de uma rede.
Chamada de procedimento Remoto
História:
A idéia de RPC data de 1976, quando foi
descrito no RFC 707. Um dos primeiros usos
comerciais da tecnologia foi feita pela Xerox
no "Courier", de 1981. A primeira
implementação popular para Unix foi o Sun
RPC (atualmente chamado ONC RPC),
usado como base do Network File System e
que ainda é usada em diversas plataformas.
Chamada de procedimento Remoto
História:
Outra implementação pioneira em Unix foi o Network
Computing System (NCS) da Apollo Computer, que
posteriormente foi usada como fundação do DCE/RPC
no Distributed Computing Environment (DCE).
Uma década depois a Microsoft adotou o DCE/RPC como
base para a sua própria implementação de RPC,
MSRPC, a DCOM foi implementada com base nesse
sistema. Ainda no mesmo período da década de 1990, o
ILU da Xerox PARC e o CORBA ofereciam outro
paradigma de RPC baseado em objetos distribuídos,
com mecanismos de herança.
Chamada de procedimento Remoto
História:
De forma análoga, atualmente utiliza-se XML
como linguagem de descrição de interface e
HTTP como protocolo de rede para formar
serviços web, cujas implementações incluem
SOAP e XML-RPC.
Chamada de procedimento Remoto

Características:

a definição de um procedimento remoto especifica
parâmetros de entrada e de saída. Parâmetros de entrada
são passados para o servidor enviando os valores dos
argumentos na mensagem (request message). Parâmetros
de saída são retornados para o cliente na mensagem de
resposta (reply message).

Um procedimento remoto é executado em um ambiente
diferente do seu chamador e não pode acessar variáveis
do ambiente do chamador, como variáveis globais por
exemplo
Chamada de procedimento remoto
Chamada de procedimento Remoto
Funcionamento:




O cliente na inicialização localiza o servidor.
O cliente invoca um procedimento local (stub), que serializa os
parâmetros (marshalling), constrói uma mensagem, invoca a
camada de comunicação e bloqueia.
O servidor recebe a mensagem e:
-faz o despacho para o stub apropriado.
-este recupera os parâmetros (unmarshalling), e chama o
procedimento escrito pelo programador.
-o resultado é serializado e uma mensagem é enviada de volta.
O stub do cliente recebe a mensagem, faz o unmarshalling e
devolve a resposta ao código cliente.
Chamada de procedimento Remoto
Chamada de procedimento Remoto
Stubs:

Escondem os códigos de chamada à rede.

Protege as aplicações (cliente e servidor) dos
detalhes referentes à comunicação pela rede.

Cabe ao stub a passagem de parâmetros entre os
procedimentos.
Chamada de procedimento Remoto
Sistemas RPC divididos em duas classes:
A) mecanismos RPC integrados a uma linguagem de programação
particular que inclui uma notação para definir as interfaces
o cliente utiliza-se de bibliotecas de procedimentos
convencionais para realizar as tarefas, como por exemplo a
localização de um servidor que possa tratar seus requisitos. Tais
bibliotecas são chamadas de user package. A figura abaixo
mostra os níveis de um programa cliente:
Chamada de procedimento Remoto
B) Uso de de uma linguagem de definição de interface (IDL) para
descrever as interfaces entre clientes e servidores. Sun RPC
está incluída na segunda classe. Uma interface especifica as
características dos procedimentos fornecidos por um servidor
que são visíveis aos clientes do servidor. Estas características
incluem: nomes dos procedimentos e os tipos de seus
parâmetros (assinatura).
Uma interface possui uma lista de assinaturas. Os compiladores de
interfaces podem ser projetados para processar interfaces a serem
utilizadas com diferentes linguagens de programação.
Chamada de procedimento Remoto
IDL – interface definition language
As interfaces são especificadas num formato
independente de linguagem: as IDL.
Isto permite que muitos detalhes de
implementação sejam escondidos da
especificação da interface.
Chamada de procedimento Remoto
IDL
Especifica características dos procedimentos fornecidos por um
servidor que são visíveis aos clientes do servidor: assinaturas dos
procedimentos, ou seja, seus nomes, junto com os tipos de seus
argumentos de entrada e saída.
Exemplo de IDL
Chamada de procedimento remoto
Implementação:
O software que suporta RPC tem três tarefas:

a) Processar a interface: integrar mecanismos RPC com os
programas cliente e servidor em uma linguagem de
programação convencional. Isto inclui o marshalling e
unmarshalling de argumentos no cliente e no servidor e o
despacho das mensagens de request para o procedimento
apropriado no servidor.

b) Tratar a comunicação: transmitir e receber mensagens de
request e reply

c) Ligar (binding): localizar o servidor apropriado para um
serviço particular
Chamada de procedimento remoto
Processar a interface:
Construindo o programa cliente: Antes que um programa cliente possa
executar, chamando os procedimentos remotos, é preciso que o
stub seja gerado. O stub tem o propósito de converter uma
chamada a um procedimento para uma chamada remota ao mesmo
procedimento. Os tipos dos argumentos e os resultados no stub do
cliente devem conferir com aqueles esperados pelo procedimento
remoto. Isto é alcançado através da utilização de uma linguagem
comum de definição de interface, por exemplo a IDL, mostrada
anteriormente.
Chamada de procedimento remoto
STUB
A tarefa do stub do cliente é fazer o marshalling, isto é, empacotar os
argumentos do procedimento, os valores de tipos de dados simples
e o identificador do procedimento em uma mensagem. O cliente
deve enviar a mensagem ao servidor e esperar pela resposta.
Quando a resposta retorna, o cliente deve fazer o unmarshalling
(processo inverso ao marshalling) e retornar os resultados.
Chamada de procedimento remoto
Programa servidor:
Um sistema RPC fornecerá um despachador e um conjunto de stubs
para os procedimentos. O despachador usa o identificador do
procedimento na mensagem enviada pelo cliente para selecionar
um dos stubs e passar os argumentos. A tarefa de um stub no
servidor é fazer o unmarshalling dos argumentos, chamar o
procedimento apropriado, e quanto retornar, fazer o marshalling dos
argumentos de saída.
Chamada de procedimento remoto
Existe um compilador de interfaces para processar as definições de
uma interface escritas em uma linguagem de definição de interface
(IDL). Tais compiladores são projetados para produzir componentes
que podem ser combinados com programas clientes e programas
servidores, sem quaisquer modificações nos compiladores originais.
Chamada de procedimento remoto
Um compilador de interface normalmente realiza as seguintes tarefas:




Gera um stub-cliente para cada assinatura de procedimento na
interface. Os stubs serão compilados e ligados com o programa
cliente
Gera um stub-servidor para cada assinatura de procedimento na
interface. O despachador e os stubs serão compilados e ligados
com o programa servidor.
Usa as assinaturas dos procedimentos na interface – que definem
os argumentos e os tipos resultantes – para gerar as operações
de marshalling e unmarshalling apropriadas em cada stub.
Gera os cabeçalhos para cada procedimento no serviço de
definição da interface. O programador do serviço fornece o corpo
(implementação) destes procedimentos.
Chamada de procedimento remoto
Chamada de procedimento remoto
RPC-sun e rpcgen
RPC-sun : criado orginalmente para máquinas sun. Hoje disponível em
vários sistemas.
Constitui-se de:

Uma linguagem de definição de interfaces (RPCL).

Aplicativo rpcgen, que cria os stub de comunicação

Biblioteca RPC

Protocolo de comunicação para as aplicações.
Chamada de procedimento remoto
Chamada de procedimento remoto
Rpc-gen – criação dos arquivos
Chamada de procedimento remoto
Ligar (binding):
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.
Chamada de procedimento remoto
Portmapper:

O portmapper RPC é um servidor que converte números
de processos RPC em números no protocolo TCP/IP (ou
UDP/IP).

Ele deve estar executando para que seja possível realizar
chamadas RPC para servidores RPC em determinada
máquina.

Quando um servidor RPC é iniciado, ele irá dizer ao
portmap qual número de porta ele está ouvindo, e quais
programas RPC ele está preparado para atender.

Quando um cliente deseja realizar uma chamada RPC para
um determinado número de processo, ele deve primeiro
contatar o portmap no servidor, para determinar o número da
porta a qual os pacotes RPC devem ser enviados.
Chamada de procedimento remoto
Portmapper:
Chamada de procedimento remoto
Java RMI


Java RMI permite que objetos Java executando no mesmo
computador ou em computadores separados se comuniquem
entre si via chamadas de métodos remotos. Essas chamadas
são muito semelhantes àquelas que operam em objetos no
mesmo programa.
Java RMI é uma implementação da RPC por Java para
comunicação distribuída de um objeto Java com outro. Um
vez que um método (ou serviço) de um objeto Java é
registrado como sendo remotamente acessível, um cliente
pode pesquisar (lookup) esse serviço e receber uma
referência que permita ao cliente utilizar esse serviço (isto é,
chamar o método).
Chamada de procedimento remoto
Introdução
CORBA (Common Object Request Broker Architecture) é uma
tecnologia padronizada pela OMG (Object Management Group)
para oferecer uma arquitetura de computação distribuída.
Componentes são construídos em uma das linguagens permitidas
(C, C++, Java, dentre outras) e têm suas interfaces exportadas e
disponibilizadas através de suas descrições em uma linguagem
padrão denominada IDL (Interface Definition Language). Neste
contexto, componentes podem se comunicar, invocando e/ou
oferecendo serviços, independentemente da linguagem de
programação na qual foram escritos e da localização dos mesmos
no sistema distribuído.
Chamada de procedimento remoto
Princípios de Projeto do CORBA
.

Separação de interface e implementação: clientes dependem
de interfaces e não de implementações;

Transparência de localização: uso do serviço é ortogonal à
localização do serviço;

Transparência de acesso: invocação de operações em
objetos;

Interfaces com tipos: referências aos objetos são tipadas
pelas interfaces;

Suporte de herança múltipla de interfaces
Chamada de procedimento remoto
CORBA IDL (OMG IDL):

Linguagem de definição de interfaces orientada a objetos

Usada para especificar interfaces contendo atributos e operações

Suporta herança de interfaces (herança múltipla e simples), atributos e
operações, tipos básicos (e.g., double, char, long, etc.), arrays e
seqüências

Projetada para ser mapeada para múltiplas linguagens (e.g., C, C++,
COBOL, Java, etc.)

Similar às interfaces Java e classes abstratas C++

Não é uma linguagem de programação completa, pois define somente
interfaces
Chamada de procedimento remoto
SOAP
SOAP é um protocolo baseado em XML para
troca de informações em um ambiente
distribuído.
Os Web services são componentes que
permitem às aplicações enviar e receber
dados em formato XML Cada aplicação
pode ter a sua própria "linguagem", que é
traduzida para uma linguagem universal, o
formato XML.
Chamada de procedimento remoto
SOAP
SOAP é um protocolo baseado em XML para troca de
informações em um ambiente distribuído.
Os Web services são componentes que permitem às
aplicações enviar e receber dados em formato XML
Cada aplicação pode ter a sua própria "linguagem",
que é traduzida para uma linguagem universal, o
formato XML.
Chamada de procedimento remoto
SOAP
SOAP é um procolo projetado para invocar aplicações
remotas através de RPC ou trocas de mensagens, em
um ambiente independente de plataforma e linguagem
de programação. SOAP é, portanto, um padrão
normalmente aceito para utilizar-se com Web Services.
Desta forma, pretende-se garantir a interoperabilidade
e intercomunicação entre diferentes sistemas, através
da utilização de uma linguagem (XML) e mecanismo
de transporte (HTTP) padrões.
Chamada de procedimento remoto
SOAP
SOAP sobre HTTP (POST) (Pedido)
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP- ENV="http://schemas.xmlsoap.org/soap/envelope/“
SOAP- ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Chamada de procedimento remoto
SOAP
SOAP sobre HTTP (Resposta)
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP- ENV="http://schemas.xmlsoap.org/soap/envelope/“
SOAP- ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Download

Aula 4 - professordiovani.com.br