Person - INF

Propaganda
UNIVERSIDADE FEDERAL DE GOIÁS
INSTITUTO DE INFORMÁTICA
Sistemas Distribuídos
Mestrado em Ciência da Computação
1o. Semestre / 2006
Prof. Fábio M. Costa
[email protected]
www.inf.ufg.br/~fmc/DS-MSc2006
Aula 07: Middleware: Comunicação Inter-Processos
Representação externa de dados
Representação externa de dados
●
●
●
●
Formato independente de linguagem, SO etc
Utilizada para comunicação dos dados de
requisições e respostas entre clientes e
servidores
Formato serializado
Marshalling: conversão entre a representação
interna e externa
CORBA Common Data Representation
Serialização de objetos em Java
XML (Extensible Markup Language)
CORBA CDR
●
●
●
Representação para tipos primitivos
–
inteiros, ponto flutuante, octeto
–
big-endian e little-endian
–
posicionamento de cada item de dados na msg.
Representação para tipos construídos
–
seqüência, string, array, struct, enumeração, união
–
construída a partir das seqüências de bytes
correspondentes aos tipos primitivos constituintes
Informação de tipo: subentendida através da
definição das operações em IDL
Representação de tipos construídos em
CORBA CDR
Type
Repr esenta ti on
sequence
l ength (unsi gned l ong) fo ll ow ed by el em ent s i n order
stri ng
l ength (unsi gned l ong) fo ll ow ed by ch aracters i n o rder (can al so
can hav e w i de ch aracters)
ar ra y
arr ay ele m ents i n or der ( no l ength s peci f ied b ecause i t is f i x ed)
stru ct
i n t he or der o f decla rati on o f the co mp onents
enumer ated
unsi gned l ong (the v al ues are speci f ie d by t he or der d ecl ared)
uni on
ty pe tag f ol l owe d b y the sel ecte d m emb er
Instituto de Informática - UFG
Mensagem em CORBA CDR
index in
sequence of bytes
4 bytes
notes
on representation
5
length of string
"Smit"
"h___"
‘Smith’
length of string
16–19
6
"Lond"
20-23
"on__"
24–27
1934
0–3
4–7
8–11
12–15
‘London’
unsigned long
The flattened form represents a Person struct with value: {‘Smith’, ‘London’, 1934}
Instituto de Informática - UFG
struct Person {
string name;
string city;
unsigned long year;
};
Marshalling em CORBA
●
●
●
●
O código gerado automaticamente a partir das
definições em IDL das operações
Converte os parâmetros e valores de retorno
das operações
Seguindo as regras de representação CORBA
CDR
Stub
–
●
marshalling de parâmetros e unmarshalling do valor
de retorno
Skeleton: vice-versa
Instituto de Informática - UFG
Outra representação externa: Sun XDR
●
Usada em conjunto com Sun RPC
●
RFC 1832
●
Exercício: comparar Sun XDR com CORBA
CDR
Instituto de Informática - UFG
Serialização em Java
●
●
Objetos e itens de dados primitivos
Informações de tipo e classe dos objetos são
incluídas na forma serializada
–
●
Permitem a reconstrução dos objetos sem
conhecimento prévio de suas classes
Processo recursivo: serializa todos os objetos
referenciados pelo objeto em questão
●
Classes precisam implementar Serializable
●
Objetos remotos: a referência é serializada
Instituto de Informática - UFG
Formato de serialização de Java
Exemplo: Serialização do seguinte objeto:
Person p = new Person(“Smith”, “London”, 1934);
Explanation
Serialized values
Person
8-byte version number h0
class name, version number
3
int year
java.lang.String java.lang.String number, type and name of
name:
place:
instance variables
1934
5 Smith
6 London
h1
values of instance variables
The true serialized form contains additional type markers; h0 and h1 are handles
Instituto de Informática - UFG
Exercício prático
●
●
●
●
Definir uma classe Java que implemente a
interface Serializable
Utilizar os métodos das classes
ObjectOutputStream e ObjectInputStream para
serializar e desserializar instâncias da classe
definida acima
Analisar e explicar o resultado da serialização
do objeto
Entrega: 06/04 (JAR + texto)
Instituto de Informática - UFG
XML (Extensible Markup Language)
●
Define a estrutura lógica de documentos
●
Usos de interesse aqui:
●
–
definir a interface de serviços Web
–
prover a representação externa de dados na
comunicação entre clientes e serviços
Representação textual: independente de
plataforma
●
Representação hierárquica
●
Extensível: novos tags podem ser definidos
Auto-descritiva: tags, esquemas e namespaces
●
Instituto de Informática - UFG
Definição da estrutura Pessoa em XML
<person id="123456789">
<name>Smith</name>
<place>London</place>
tag
<year>1934</year>
atributo
<!-- a comment -->
</person >
Instituto de Informática - UFG
elementos
Namespaces
●
●
●
Permitem definir contextos para os tags
utilizados em um documento
Referenciados através de URLs
Evitam choques de nomes de tags em
contextos diferentes
<person pers:id="123456789" xmlns:pers = "http://www.cdk4.net/person">
<pers:name> Smith </pers:name>
<pers:place> London </pers:place >
<pers:year> 1934 </pers:year>
</person>
Instituto de Informática - UFG
Esquemas XML
●
●
●
Definem:
–
os elementos e atributos que podem aparecer em
documentos XML (i.e., um vocabulário)
–
como os elementos são aninhados
–
a ordem, o número e o tipo dos elementos
Usados para validar documentos XML
Um mesmo esquema pode ser compartilhado
por vários documentos
Instituto de Informática - UFG
Um esquema XML para a estrutura Pessoa
<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>
Instituto de Informática - UFG
Exercício prático
●
●
●
●
●
Marshalling de objetos Java em XML
Utilizar funcionalidades padrão da biblioteca de
Java para serializar objetos em formato XML
Descrever o resultado obtido
Pode utilizar a mesma classe do exercício
anterior
Entrega: 06/04 (JAR + texto)
Instituto de Informática - UFG
Representação de uma referência de
objeto remota
●
●
●
Necessária quando objetos remotos são
passados como parâmetro
A referência é serializada (não o objeto)
Contém toda informação necessária para
identificar (e endereçar) um objeto unicamente
no sistema distribuído
32 bits
32 bits
Internet address port number
Instituto de Informática - UFG
32 bits
time
32 bits
object number
interface of
remote object
Download