Vous êtes sur la page 1sur 36

Sistemas Distribudos

Aula 06 Comunicao (Parte III)


Prof. Gustavo Callou gcallou@gmail.com

Agenda
Representao externa de dados e empacotamento Introduo Serializao de objeto Java XML

Comunicao Cliente-Servidor

Prof. Gustavo Callou

Introduo
As informaes armazenadas nos processos so representadas como estruturas de dados, enquanto que as informaes nas mensagens so seqncias puras de bytes.
Ordenao de inteiros: big-endian e little-endian Cdigos de representao de caracteres: ASCII e Unicode

Mtodos para permitir troca de valores de dados binrios:


Os valores so convertidos para um formato externo Os valores so transmitidos no formato do remetente

Prof. Gustavo Callou

Introduo (2)

Representao externa do dados um padro aceito para representao de estruturas de dados e valores primitivos. Empacotamento (marshalling) o procedimento de pegar um conjunto de itens de dados e mont-los em uma forma conveniente para a transmisso em uma mensagem. Desempacotamento (unmarshalling) o processo inverso (remonta no destino).
Prof. Gustavo Callou 4

Introduo (3)

Duas estratgias alternativas para representao de dados e empacotamento:


Serializao de objetos da linguagem Java
Forma binria

XML (Extensible Markup Language)


Forma textual

No primeiro caso, as atividades de empacotamento e desempacotamento so executadas por uma camada de middleware.

Prof. Gustavo Callou

Serializao de objeto Java


Exemplo de uma classe Java com serializao :
public class Person implements Serializable{ private String name; private String place; private int year; public Person(String aName, String aPlace, int aYear){ name = aName; place = aPlace; year = aYear; } // seguido dos mtodos para acessar as variveis de instncia }
Prof. Gustavo Callou 6

Serializao de objeto Java (2)

Serializao o processo de converso de uma estrutura de dados (ou objeto) em um formato que possa ser armazenado (em arquivo, em buffer na memria ou transmitido via rede) e, aps, reconstrudo no destino.
Objeto 1 Objeto 1

Seqncia de bytes
Objeto 2 transformao Objeto 3
reconstruo

Objeto 2

Objeto 3

origem

Prof. Gustavo Callou

destino

Serializao de objeto Java (3)

A informao sobre uma classe consiste em seu nome e em um nmero de verso. Os objetos Java podem conter referncias para outros objetos. Para serializar um objeto, a informao de sua classe escrita por extenso, seguida dos tipos e nomes de suas variveis de instncia. Cada classe recebe um identificador (handle).

Prof. Gustavo Callou

Indicao da forma serializada Java

Person p = new Person(Smith,London,1934);


Explanao h0 nome da classe, n de verso nmero, tipo e nomes das variveis de instncia valores das variveis de instncia

Valores serializados Person 3 1934 8-byte version number int year 5 Smith

java.lang.String java.lang.String name: place: 6 London h1

The true serialized form contains additional type markers; h0 and h1 are handles

Prof. Gustavo Callou

Serializao de objeto Java (4)

Classe Java para serializao:


ObjectOutputStream invocar o mtodo writeObject e passar o objeto a ser serializado como parmetro.

Classe java para desserializao:


ObjectInputStream invocar o mtodo readObject para reconstruir o objeto original.

A serializao e desserializao geralmente so executadas automaticamente pela camada de middleware.

Prof. Gustavo Callou

10

Uso de reflexo

Reflexo uma caracterstica de Java que permite que um programa inspecione classes e objetos em tempo de execuo. Atravs da reflexo pode-se acessar informaes sobre atributos, mtodos e construtores das classes armazenadas. A serializao usa reflexo para descobrir o nome da classe do objeto a ser serializado e os nomes, tipos e valores de suas variveis de instncia. Para a desserializao, o nome da classe na forma serializada usado para criar uma classe.
Prof. Gustavo Callou 11

XML (Extensible Markup Language)


XML uma linguagem de marcao que foi definida pelo W3C para uso na web. Os itens de dados so rotulados com strings de marcao (tags). XML extensvel, os usurios podem definir suas prprias tags. XML usada de diversas maneiras
Arquivos de configurao Interfaces de servios web Arquivamento e recuperao de sistemas

Prof. Gustavo Callou

12

XML (Extensible Markup Language) (2)

XML foi projetada para ser usada por vrios aplicativos, para diferentes propsitos. Os documentos XML, sendo textuais, podem ser lidos por serem humanos. O uso de uma representao textual, em vez de binria, torna as mensagens muito maiores.

Prof. Gustavo Callou

13

Elementos e atributos XML


Definio em XML da estrutura Person

<person id="123456789"> <name>Smith</name> <place>London</place> <year>1934</year> <!-- a comment --> </person >
Prof. Gustavo Callou 14

Anlise (parsing) de documentos


Um documento XML deve ser bem formado, deve obedecer determinadas regras estruturais:
<x> ..... </x> tag de incio e fim correspondentes tags corretamente alinhadas, sem sobreposio Todo documento tem que ter somente um elemento-raiz que englobe os demais

Analisadores gramaticais (parsers) de documentos XML.

Prof. Gustavo Callou

15

Esquemas XML
Um esquema XML define:
Os elementos e atributos que podem aparecer no documento; O modo como os elementos so aninhados; A ordem dos elementos; O nmero de elementos; Se um elemento est vazio ou se pode conter texto.

A definio de esquema permite o compartilhamento de muitos documentos diferentes O esquema tambm permite a validao dos documentos

Prof. Gustavo Callou

16

Um esquema XML para a estrutura Person

<xsd:schema xmlns:xsd = URL of XML schema definitions > <xsd:element name= "person" type ="personType" /> <xsd:complexType name="personType"> <xsd:sequence> <xsd:element name = "name" type="xs:string"/> <xsd:element name = "place" type="xs:string"/> <xsd:element name = "year" type="xs:positiveInteger"/> </xsd:sequence> <xsd:attribute name= "id" type = "xs:positiveInteger"/> </xsd:complexType> </xsd:schema>
Prof. Gustavo Callou 17

Comunicao Cliente-Servidor

Prof. Gustavo Callou

18

Comunicao cliente-servidor (1)


Forma de comunicao para suportar as funes e trocas de mensagens em modelos cliente-servidor. No caso mais comum, a comunicao requisio e resposta sncrona e confivel. As interaes cliente-servidor sero descritas em termos das operaes send e receive na API Java para datagramas UDP.

Prof. Gustavo Callou

19

Comunicao cliente-servidor (2)


Um protocolo construdo sobre datagramas (UDP) evita sobrecargas associadas ao protocolo TCP:
As confirmaes so redundantes, pois as requisies so seguidas pelas respostas; O estabelecimento de uma conexo envolve mensagens extras; O controle de fluxo redundante para a maioria das invocaes, que passam apenas pequenos argumentos e resultados.

Prof. Gustavo Callou

20

Protocolo requisio-resposta
O protocolo requisio-resposta baseado em trs primitivas de comunicao:
doOperation getRequest sendReply

A maioria dos sistemas RPC e RMI suportado por um protocolo semelhante. Aqui, a descrio do protocolo requisio-resposta ser atravs de RMI.

Prof. Gustavo Callou

21

Comunicao requisio-resposta
Cliente Servidor

doOperation

Mensagem de Requisio getRequest seleciona o objeto executa o mtodo Mensagem de Resposta sendReply

(espera)

(continuao)

Prof. Gustavo Callou

22

Operaes do protocolo requisio-resposta


public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments) Envia a requisio para o objeto remoto, com seus argumentos, e retorna a resposta (byte[]). public byte[] getRequest (); Obtm uma requisio de um cliente. public void sendReply (byte[] reply, InetAddress clientHost, int clientPort); Envia a resposta para o cliente em seu endereo e Prof. Gustavo Callou porta.

23

Estrutura da mensagem de requisio e resposta

Tipo da mensagem Ident. da Requisio Referncia do objeto Ident. do mtodo Argumentos

int (0=Request, 1= Reply) int RemoteObjectRef int ou Method array of bytes

Prof. Gustavo Callou

24

Modelo de falhas do protocolo requisioresposta


Como as primitivas foram implementadas em datagramas UDP, elas sofrero das mesmas falhas de comunicao:
Falhas por omisso No haver garantia de que as mensagens sejam entregues na ordem da emisso

Alm disso, o protocolo poder sofrer com as falhas dos processos.

Prof. Gustavo Callou

25

Timeouts
A primitiva doOperation utiliza um timeout para limitar a espera de uma mensagem de resposta do servidor. Opes que doOperation deve fazer aps o timeout:
Retorno imediato, informando para o cliente que o mtodo doOperation falhou. Envia a mensagem de requisio repetidamente at que receba uma resposta ou esteja seguro de que o servidor falhou. Como a mensagem de requisio pode ser retransmitida, o servidor projetado de modo a reconhecer mensagens duplicadas (pelo requestID).

Prof. Gustavo Callou

26

Perda de mensagens de resposta


Se o servidor j tiver enviado a resposta quando receber uma requisio duplicada?
Executa a operao novamente para obter o resultado A no ser que tenha armazenado o resultado da execuo original.

Uma operao idempotente aquela que pode ser executada repetidamente, obtendo-se o mesmo resultado.

Prof. Gustavo Callou

27

Histrico
Para os servidores que exigem retransmisso das respostas sem executar novamente as operaes, pode ser usado um histrico. O histrico precisa conter apenas a ltima mensagem de resposta enviada a cada cliente. As mensagens de histrico normalmente so descartadas aps um determinado perodo de tempo.

Prof. Gustavo Callou

28

Protocolos RPC
Trs protocolos RPC so usados:
O protocolo request (R);
Servidor no oferece retorno algum e cliente no precisa de confirmao

O protocolo request-reply (RR);


A execuo do servio e sua resposta serve como confirmao de que a requisio foi recebida corretamente pelo servidor

O protocolo request-reply-acknowledge (RRA)


Servidor recebe confirmao de que o cliente recebeu a resposta

Prof. Gustavo Callou

29

Protocolo requisio-resposta com TCP


No uso de datagramas UDP, freqentemente difcil decidir-se sobre um tamanho apropriado para o buffer de recebimento de datagramas. Com a implementao de protocolos requisioresposta em TCP evita-se quebrar requisies e respostas em mltiplos pacotes. Se o aplicativo no exige todos os recursos oferecidos pelo TCP, um protocolo mais eficiente pode ser implementado sobre o UDP

Prof. Gustavo Callou

30

HTTP: um exemplo de protocolo requisioresposta (1)


HTTP (HyperText Transfer protocol) usado pelos navegadores web para fazer pedidos e receber respostas de servidores web. Os servidores web gerenciam recursos implementados de diferentes maneiras:
Dados (texto de uma pgina HTML, imagem, classe de uma applet) Programas (CGI e servlets)

Prof. Gustavo Callou

31

HTTP: um exemplo de protocolo requisioresposta (2)


O protocolo HTTP especifica:
As mensagens envolvidas em uma troca requisioresposta; Os mtodos; Os argumentos; Os resultados; e As regras de empacotamento.

Negociao de contedo e autenticao

Prof. Gustavo Callou

32

HTTP: um exemplo de protocolo requisioresposta (3)


A interao cliente-servidor consiste nas seguintes etapas:
O cliente solicita uma conexo com o servidor na porta HTTP padro(80) ou em uma porta especificada no URL; O cliente envia uma mensagem de requisio para o servidor; O servidor envia uma mensagem de resposta para o cliente; A conexo fechada.

HTTP 1.1: conexes persistentes


Prof. Gustavo Callou 33

Mtodos HTTP
GET: solicita o recurso cujo URL dado como argumento HEAD:requisio idntica ao GET, mas no retorna nenhum dado, s meta-dados. POST:especifica o URL de um recurso que pode tratar dos dados fornecidos com o pedido PUT:armazena os dados fornecidos na requisio na URL DELETE:o servidor exclui o recurso identificado pelo URL dado
Prof. Gustavo Callou 34

Mensagem request HTTP

mtodo GET

URL ou nome de caminho verso HTTP cabeal. corpo http://www.uol.com.br/index.html TTP/ 1.1 H

Prof. Gustavo Callou

35

Mensagem reply HTTP

Verso HTTP HTTP/1.1

status 200

motivo OK

cabeal.

corpo dados

Prof. Gustavo Callou

36

Vous aimerez peut-être aussi