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