aquiles burlamaqui luiz eduardo. agenda motivação objetivo história visão geral arquitetura...

49
Aquiles Burlamaqui Luiz Eduardo

Upload: internet

Post on 16-Apr-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Aquiles BurlamaquiLuiz Eduardo

Page 2: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Agenda• Motivação• Objetivo• História• Visão Geral• Arquitetura• Passo a Passo

Page 3: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Motivação: • Socket

Desenvolvimento lento• RPC

Procedural Dependente de linguagem

• RMI O.O Dependente de Linguagem

• Suporte a diversas linguagens, possibilitando a comunicação entre módulos escritos em linguagens distintas

Page 4: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Objetivo• Tornar fácil a implementação de aplicações

distribuídas• Para sistemas Orientado a Objetos e

procedurais• Independentes de:

plataforma sistema operacional linguagem de programação protocolo de comunicação

• Permitindo chamadas de procedimento remoto como se fossem locais

Page 5: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

História• 1991 - CORBA 1.0 – ORB• 1996 – CORBA 2.0 – Comunicação entre

ORBs• 2002 – CORBA 3.0

Interoperação outros sistemas distribuídos suporte de interação assíncrona entre objetos,

mobilidade de objetos interação com grupos de objetos interação em tempo real, etc.

Page 6: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

História• OMG

A arquitetura CORBA é desenvolvida pela OMG (Object Management Group). www.omg.org

A OMG foi fundada em 1989 por oito membros fundadores (3Com, American Airlines, Canon, Data General, HP, Philips, Sun e Unisys).

No ano 2000 tinha mais de 800 membros, incluindo IBM e Microsoft (apenas como observadora).

Page 7: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

CORBA - Common Object Request Broker Architecture,

Especificação que permite aos objetos de sistemas distribuídos comunicarem-se entre si de forma transparente

Componentes principais da OMA• Object Management Architecture

Objetos da aplicação Facilidades CORBA Serviços de Objeto ORB

Page 8: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo
Page 9: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Conceito de ORB (Object Request Broker)• componente que auxilia o cliente a invocar

um método em um objeto de forma transparente (transparência de acesso) localização do objeto ativação do objeto se necessário comunicar ao objeto sobre a requisição do

cliente

Page 10: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Chamada através de um ORB

Page 11: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Objetivo: possibilitar que clientes invoquem métodos a objetos remotos (objetos CORBA), e que ambos possam ser implementados em linguagens distintas

A linguagem de implementação do cliente não precisa ser necessariamente orientada a objetos

Funcionalidades• invocações estáticas

interface remota do objeto CORBA é conhecida em tempo de compilação (utilização dos stubs e skeletons)

• invocações dinâmicas interface remota do objeto CORBA não é conhecida em

tempo de compilação

Page 12: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Estrutura de um ORB

Page 13: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Semântica de invocação• semântica at-most-once (default)• semântica OneWay

métodos sem resultados ou callbacks, o cliente não bloqueia na espera de uma resposta

• Semântica at-most-once O cliente continua imediatamente e pode mais tarde

bloquear-se à espera da resposta Objeto CORBA: objeto remoto

• implementa uma interface IDL• possui uma referência de objeto remoto• capaz de responder a invocações aos métodos de sua

interface

Page 14: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

client server

proxy

or dynamic invocation

implementation repository object

adapter

ORBORB

skeleton

or dynamic skeleton

client program

interface repository

Request

Replycorecore for A

Servant A

Page 15: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Adaptador de objeto (Object Adapter)• interliga os objetos CORBA e as classes do

servidor• cria as referências a objetos remotos para os

objetos CORBA• despacha cada RMI através de um skeleton

para o servidor apropriado• ativa objetos (se necessário)• CORBA 2.2: POA (Portable Object Adapter)

permite que aplicações e servidores sejam executados em ORBs produzidos por desenvolvedores diferentes

Page 16: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Skeleton (servidor)• geradas na linguagem do servidor por um compilador

IDL• RMIs são despachadas através do skeleton apropriado

a um servidor• marshaling e unmarshaling

Stubs/proxies (cliente)• geradas na linguagem do cliente por um compilador

IDL• proxy (linguagens orientadas a objeto)• stub (linguagens procedurais)• marshaling e unmarshaling

Page 17: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Repositório de implementação• ativa por demanda os servidores registrados, e

localiza os servidores em execução• armazena tabela com o mapeamento dos nomes dos

adaptadores de objetos para suas implementações• na ativação de objeto remoto, o hostname e o número

da porta no servidor são adicionados na tabela• possibilita armazenar outras informações sobre os

servidores (e.g. controle de acesso)• permite replicação

aumento de disponibilidade e tolerância a falhas

Page 18: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Repositório de interface• provê informações sobre interfaces IDL

registradas (e.g. métodos, argumentos, exceções)

• cliente sem proxy de objeto pode obter informações necessárias (métodos e argumentos)

• necessário para invocações dinâmicas• nem todos os ORBs provêm um

repositório de interfaces

Page 19: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Interface de invocação dinâmica• permite que clientes façam invocações

dinâmicas a objetos CORBA desconhecidos

• cliente obtém informações necessárias sobre um objeto CORBA a partir do repositório de interfaces, e utiliza esta informação para construir uma invocação e enviá-la ao servidor

Page 20: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Passo para uma Inovação Dinâmica1. Identificar o objeto que queremos invocar

(provavelmente através do Trader Service do CORBAservices); 

2. Recuperar sua interface (buscá-la no Repositório de Interfaces); 

3. Construir a invocação; 4. Invocar a requisição, e receber os

resultados. 

Page 21: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Interface skeleton dinâmica• permite um objeto CORBA aceitar

invocações em uma interface sem skeleton interface não era conhecida em tempo de

compilação• skeleton dinâmico

recebe a invocação inspeciona o conteúdo da requisição para

descobrir o objeto destino, o método para ser invocado e os argumentos

invoca o destino

Page 22: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo
Page 23: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Facilidades para definir módulos, interfaces, tipos, atributos e métodos

sintaxe similar a C++ incluindo mais algumas palavras-chaves

Módulos IDL• permite agrupar interfaces e outros tipos IDL em

unidades lógicas• módulo define um nome de escopo (evita conflito

entre nomes) Interfaces IDL

• descrevem os métodos e atributos que são disponíveis por objetos CORBA que implementam a interface

Page 24: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

module HelloApp{ interface Hello { string sayHello(); oneway void shutdown(); };};

Page 25: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

class HelloImpl extends HelloPOA {private ORB orb;

public void setORB(ORB orb_val) {orb = orb_val; }

// implementação do método sayHello()public String sayHello() {return "\nHello world !!\n";}

// implementação do método shutdown()public void shutdown() {orb.shutdown(false);}}

Page 26: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

public class HelloServer {public static void main(String args[]) {try{// Criação e inicialização do ORBORB orb = ORB.init(args, null);// obtém a referência do rootpoa e ativa o POAManagerPOA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));rootpoa.the_POAManager().activate();// cria o servant e registra com o ORBHelloImpl helloImpl = new HelloImpl();helloImpl.setORB(orb); // obtém referência do objeto servantorg.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);Hello href = HelloHelper.narrow(ref);org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");// Especifica o servidor de nomes(INS)NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);// Especifica uma referência de objetoString name = "Hello";NameComponent path[] = ncRef.to_name( name );ncRef.rebind(path, href);System.out.println("HelloServer ready and waiting ...");// Aguarda a invocação de clientesorb.run();} catch (Exception e) {System.err.println("ERROR: " + e);e.printStackTrace(System.out);}System.out.println("HelloServer Exiting ...");}}

Page 27: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

public class HelloClient {static Hello helloImpl;

public static void main(String args[]){

try{// Cria e inicializa o ORBORB orb = ORB.init(args, null);org.omg.CORBA.Object objRef =

orb.resolve_initial_references("NameService");NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

String name = "Hello";helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));

System.out.println("Obtained a handle on server object: " + helloImpl);

System.out.println(helloImpl.sayHello());helloImpl.shutdown();

} catch (Exception e) {System.out.println("ERROR : " + e) ;e.printStackTrace(System.out);

}}

}

Page 28: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

}

● idlj -fall -Hello.idl●Javac *.java● orbd -ORBInitialPort 1050 -ORBInitialHost localhost &● java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost&● java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost

Page 29: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Transparência de localização• Tratamento igual para Função local

Deficiências de projeto e processo Problemas com implementações Firewalls

Page 30: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

1) Construir um exemplos simples onde programas se comuniquem usando CORBA• Nível 1: Mesma linguagem• Nível 2: Entre Java e C++

http://openorb.sourceforge.net/• Nível 3: Entre Java/C++ e Lua

(OiL - http://oil.luaforge.net/index.html).• Com base na experiência adquirida fazer um

relato do uso de CORBA com as linguagens utilizadas.

• Entrega dos códigos fontes

Page 31: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Uma linguagem de script leve• Pequena, portátil, eficiente

Uma linguagem tipada dinamicamente• O tipo da variável depende do valor armazenado• Toda linguagem pode ter erro de “tipos” em

tempo de execução Uma linguagem com gerência automática de

memória Pré-compilação em bytecodes

• Pode-se carregar arquivos compilados

Page 32: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Sintaxe convencional print(“hello world”) print“hello world”

Page 33: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Comentários de 1 linha -- (dois traços)

Comentários de blocos --[[ bloco ]]

Page 34: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Varáveis globais não precisam de declaração

Variáveis locais são declaradas com a palavra chave local

Page 35: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

8 tipos básicos• nil – tipo do valor nil que é diferente de qualquer outro, é o

valor default das variáveis• boolean – true, false• number – double• string – array de caracteres, imutável• function – valor de primeira classe, significa que funções

podem ser armazenadas em variáveis, passadas como argumentos, retornadas

• userdata – dados C arbitrários, manipulado através da API C

• thread – threads independentes de execução• table – arrays associativos

Consulta do tipo da variável através da função type

Page 36: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Aritméticos +, -, *, /, ^

Relacionais <, >, <=, >=, ==, ~=

Operadores lógicos and, or, not Avaliação por curto-circuito

Concatenação ..

Page 37: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

a = 0 a, b, c = 0, 0, 0 a, b = b, a -- troca de valores a, b, c = 0, 0 -- c recebe nil

Page 38: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Resultado da expressão {} Qualquer valor como chave, exceto

nil Único mecanismo de estruturação de

dados Indexação na forma variável[índice]

ou variável.índice, quando o índice é uma string

Page 39: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

for var = inicio, fim [, passo] do bloco end Numérico

for var {, var} in expressão do bloco end Genérico

while expressão do bloco end repeat block until expressão break ou return pode ser usado para

terminar o laço if expressão then bloco {elseif expressão

then bloco} [else bloco] end

Page 40: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Retorno• foo()

Nenhum valor de retorno• x = foo()

Ajustado para 1 valor• x, y = foo()

Ajustado para 2 valores• {foo()}

Cria uma tabela com todos os valores retornados

Page 41: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Basic String Table Math IO OS

Page 42: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Oferecem funções básicas• print• type• setmetatable• pairs• error

Page 43: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Funções para manipulação de strings

Page 44: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Funções para manipulação de tabelas• table.insert• table.remove• table.sort

Page 45: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Funções matemáticas• math.sqrt• math.sin• math.log

Page 46: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Funções de entrada e saída• io.open• io.close• io.read• io.write

Page 47: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Funções associadas ao sistema operacional• os.clock• os.date• os.execute

Page 48: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

Manual Wiki Lua-Users Lista de Discussão IRC

Page 49: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo

http://www.corba.hpg.com.br/home2.html

http://www.das.ufsc.br/~montez/corba/corba.html

http://java.sun.com/j2se/1.4.2/docs/guide/idl/orbd.html