Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem...

25
Introdução a CORBA Renato Cerqueira Departamento de Informática, PUC-Rio

Transcript of Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem...

Page 1: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Introdução a CORBA

Renato Cerqueira

Departamento de Informática, PUC-Rio

Page 2: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Ferramentas de Programação p/ SD

• Vários níveis de abstração

• Sockets (TCP/IP)

• Chamada de Procedimentos Remotos (RPC)

• Objetos Distribuídos

Page 3: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Chamadas Locais

procedimento

procedimento

CorpoPrincipaldoPrograma

Programa Aplicativo

Page 4: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

RPC (1)

Cliente

CorpoPrincipaldoPrograma

Programa Aplicativo

procedimento

procedimento

Rede Servidor

Page 5: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

RPC (2)

stub doser-vidor

stubdo

clienteCorpoPrincipaldoPrograma

Programa Aplicativo

procedimento

procedimento

Page 6: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Suporte a Compilação

Definiçãoda Interface

em IDL

compiladorIDL

arquivos decabeçalhos

stub do cliente

stub do servidor

Page 7: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Geração da Aplicação

IDL compiladorIDL

arquivos decabeçalhos

fontes dostub do cliente

fonte dostub do servidor

bibliotecaRun Time

compiladorC

compiladorC

cliente

servidor

fontes docliente

fontes doservidor

Page 8: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Objetos Distribuídos

• Evolução do conceito de RPC

• Unidades computacionais com um fim específico, usadas para compor várias aplicações

• Principais características:

• Encapsulamento de implementação

• Interfaces bem definidas (uso de IDLs)

• Baixo grau de acoplamento entre componentes

Page 9: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

O que é Middleware?

• Chamada do Middleware 2003:

• Middleware é a infra-estrutura de software que reside entre as aplicações e os sistemas operacionais, as camadas de protocolos de rede, e o hardware. Seu papel principal é (1) fazer o elo entre as aplicações e as infra-estruturas mais básicas de hardware e software de forma a coordenar como as partes das aplicações são conectadas e como elas interagem, e (2) permitir e simplificar a integração de componentes de software desenvolvidos por múltiplos fornecedores de tecnologias.

• middleware.internet2.edu

• Middleware é a camada de software entre a infra-estrutura de rede e as aplicações. Essa camada oferece diversos serviços de apoio, tais como identificação, autenticação, autorização, diretórios e segurança.

Page 10: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Middleware e Componentes

• Componentes de Software• Unidades binárias desenvolvidas de forma independente que cooperam

através de interfaces bem definidas para compor sistemas computacionais.

• Segue um modelo de componentes e pode ser publicado de forma independente e composto sem modificações seguindo um padrão de composição.

• Modelo de Componentes• Define padrões específicos de interação e composição.

• Middleware: implementação de um modelo de componentes• Conjunto de elementos de software executáveis necessários para a execução

de componentes que aderem ao modelo em questão.

Page 11: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

CORBA

• É apenas um padrão: existem várias implementações

• Integração de ambientes heterogêneos

• Plataformas de hardware e sistemas operacionais

• Linguagens de programação

• Transparência de localidade dos serviços (objetos)

• Mapeamentos de sua IDL para várias linguagens(C++, C, Smalltalk, Java, COBOL, Lua, Python, …)

Page 12: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Exemplo de IDL

struct Book { string author; string title;};

typedef sequence<Book> BooksSeq;

interface Library { boolean addBook(in Book abook); BooksSeq getBooks(); Book getBook( in string title );

};

Page 13: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Processamento da IDL

IDL CompiladorIDL

STUB

Esqueletode

implem.

Cliente

Linguagem AAmbiente X

Linguagem BAmbiente Y

Page 14: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Integração entre Linguagens

esqueletoC++

proxyem Java

Esqueletoda aplicaçãoem Java

Programa Aplicativo

componenteem C++

componenteem C++

Page 15: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Integração entre Plataformas

• Protocolo de comunicação padronizado entre um proxy e seu objeto servidor

• IIOP: Internet Inter-ORB Protocol

• Define o formato de representação dos valores trocados entre cliente e servidor

• Permite a comunicação entre objetos em plataformas diferentes

• Permite a comunicação entre diferentes implementações de CORBA

Page 16: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Arquitetura Básica

DII StubEstático

InterfaceORB

Núcleo do ORB

DSIEsqueletoEstático

InterfaceORB

Núcleo do ORB

Adaptadorde Objetos

Repositóriode Interface

Repositório deImplementação

Aplicação Cliente Implementação do Objeto Servidor

Interface idêntica para todas as implementações ORB.

Interface dependente do Adaptador de Objetos.

Interface gerada a partir de definições em IDL.

Rede(IIOP)

Page 17: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Referência de Objetos

• Para a criação de um proxy, é necessário uma referência para o objeto servidor

• CORBA define um padrão para a formação de referências de objetos, permitindo que objetos de ORBs diferentes possam se comunicar

• IOR = endereço IP + porta socket + ID do objeto(Inter-ORB Reference)

• Um IOR possui uma representação em forma de string

Page 18: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

CORBA IDL

Page 19: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Tipos Básicos

Tipo Descrição Tamanho

(unsigned)short números inteiros 16 bits

(unsigned)long números inteiros 32 bits

(unsigned)long long números inteiros 64 bits

float IEEE precisão simples 32 bits

double IEEE precisão dupla 64 bits

long double IEEE prec. estendida 80 bits

fixed No. de ponto fixo até 31 dígitos

boolean TRUE ou FALSE ñ especificado

char ISO Latin-1 8 bits

wchar, wstring char set ñ definido tamanho variável

string ISO Latin-1 tamanho variável

octet 0-255 8 bits

Page 20: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Tipo Any

• Pode armazenar valores de qualquer tipo de dado representável em IDL.

• O tipo de seu conteúdo só pode ser verificado em tempo de execução.

• Composto por typecode e valor(ambos de tamanho variável)

Page 21: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Tipos Estruturados

• typedeftypedef short TempType;typedef TempType TemperatureType;

• enumenum Color {red, green, blue, black, orange};

• structstruct TimeOfDay { short hour; short minute; short secong;};

"unionunion U switch (Boolean) { case FALSE: long count; case TRUE: string msg; default: float cost;};

"arraytypedef Color ColorVec[10];typedef string Table[10][20];

"sequencetypedef sequence<Color> Colors;typedef sequence<long, 100> Nums;

Page 22: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Interfaces

interface IExtensibleObject { Object narrow (in string interfacename); void addRef(); void release ();};

interface IPersistentObject : IExtensibleObject{ boolean load (in string filename); boolean save (in string filename);};

Page 23: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Interfaces com Atributos

typedef long ISBN;enum FuzzyBoolean {NO, YES, UNKNOWN};

interface Collection { readonly attribute long number_of_books; attribute string name_of_collection;

FuzzyBoolean isInCollection (in ISBN book_id);};

Page 24: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Parâmetros in/out/inout

struct BookDetails { string author; string title; ISBN book_id; long stock;};

typdef sequence<BookDetails> BookDetailsSeq;

interface SearchableCollection : Collection { boolean findByTitle (in string title, out BookDetailsSeq books_found);

void updateStock (inout BookDetailsSeq books);};

Page 25: Introdu o a CORB A - PUC-Rionoemi/sd-08/CORBAIntro.pdf · CORBA • É apenas um padrão: existem várias implementações • Integração de ambientes heterogêneos • Plataformas

Exceções

struct Date { short day; short month; short year;};exception UnavailableBook { Date when_available;};

interface BorrowableCollection : Collection { void borrowBook (in ISBN book_id, in string borrower, out Date return_date) raises (UnavailableBook);};