![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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050302/5f6b363e64ca557b9c5ba674/html5/thumbnails/25.jpg)
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);};