Você está na página 1de 39

CORBA

Common Object Request


Broker Architecture

OMG (Object Management Group)


www.omg.org
Magno A. Santos
Prof. do dep. de
Informática da UFPI
magno@ufpi.br

1
Conteúdo
•Sistemas Distribuídos
•O que é CORBA
• Orientação por Objetos
• Arquitetura CORBA
• IDL
• Exemplo de Cliente
• Exemplo de Servidor
• Conclusões
2
Sistemas Distribuídos

Definição
Sistema distribuído é aquele que
executa em um conjunto de
máquinas sem memória
compartilhada, máquinas estas que,
mesmo assim, aparecem como um
único computador para seus
usuários (Tanenbaum)

3
Projeto de Sistemas Distribuídos

Transparência à localização - os usuários


não devem saber onde os recursos se
encontram.
Transparência à migração - os recursos
podem trocar de lugar à vontade sem ter que
mudar de nome.
Transparência à concorrência - vários
usuários podem compartilhar
automaticamente os recursos.
Transparência ao paralelismo - podem
ocorrer atividades paralelas sem que os
usuários venham a saber.
4
Projeto de Sistemas Distribuídos
Flexibilidade - suporta a
heterogeneidade de plataformas
Confiabilidade - A queda de um ou
alguns processadores não acarreta a
queda de todo o sistema
Performance - o agravante em relação
aos centralizados é comunicação entre
os processos.
Escalabilidade - capacidade de agregar
novos recursos sem a necessidade de
readaptação do sistema
5
Conceitos de CORBA

É uma arquitetura aberta para objetos


distribuídos
Arquitetura baseada em pedido/resposta de
objetos
Usada por aplicações diferentes para
trabalharem juntas na rede
Baseada no protocolo IIOP

6
Utilidade de Corba

Iteração de diferentes
fabricantes deste mainframe até
minicomputadores
É o middleware de aplicações
robusta
Suporta escalabilidade
Suporta tolerância a falhas

7
Integração Corba

O
Java Objeto R
Windows A O
B Objeto Java
R OS/390
B D

O
C++ Objeto R
Window B B
s O
Objeto Cobol II
R
B E OS/390

C++ O
Objeto R
Unix C B

8
Orientação por Objetos
Características dos Objetos
Identidade Operação

Classificação Dados Operação

Polimorfismo Operação

Herança Operação

Características da Tecnologia
Abstração
Encapsulamento
Compartilhamento
9
Objetos e Classes
Uma classe é usada para descrever
um tipo de objeto
Computadores
Objetos são instâncias de classes
Pentium
Power Mac
RS6000
Alpha Digital

10
Atributos e Métodos
Atributos
Dados armazenados com o objeto ou
classe (registro de dados)
Propriedades do Objetos
podem ser encapsuladas
Métodos
Instâncias de procedimentos de
funções
Modela o comportamento dos objetos
11
Exemplo de Classe e Objeto

Class Computer Object Mac1;


Processador; Processador=
Memory; “PowerPc”;
System_Operation; Memory=64Mb;
SO=“OS/2”;
Start( );
Shutdown( ); Start( );
RunProgram( ); Shutdown( );
RunProgram( );

12
Serviços CORBA

13
Serviços CORBA

Definem as interfaces para os serviços.


• Nomes – localização de um objeto CORBA a partir
de um nome
• Eventos – comunicação assíncrona entre objetos.
• Transações - estende o conceito de transações
para aplicações orientadas a objetos.
• Segurança – identificação e autenticação;
autorização e controle de acessos; auditoria;
criptografia; assinatura digital.
• Controle de Concorrência – permite que
múltiplos clientes coordenem o acesso a recursos
compartilhados
• Persistência – persistência de objetos

14
Serviços CORBA cont.

• Propriedade – adicionar propriedades aos objetos


(somente leitura, etc)
• Query – execução de queries em cima de coleção
de objetos
• Externalização - conversão de objetos em stream
de dados e vice-versa.
• Ciclo de vida – convenções para criação,
exclusão, cópia e movimentação de objetos

15
Arquitetura CORBA

16
Modelo de Comunicação CORBA

17
Cliente de um Objeto
Tem acesso a uma referência do objeto para
o objeto
invoca operações no objeto
Conhece apenas a estrutura lógica do objeto
e seu comportamento
É um processo(programa) que inicia pedidos
em objetos
Comunicam-se diretamente com o ORB
Não conhecimento da execução do Objeto

18
Pedido emitido pelo cliente

19
Execução do Objeto

Fornece a semântica do Objeto


(propiedades e comportamento)
Na execução pode usar outros objetos
Não depende do ORB
Pode selecionar serviços ORB
independente do adptador

20
Interface Definition Language - IDL

 Define os tipo de objetos através de interfaces


 A interface consiste de um conjunto de
operações e parâmetros
 Descreve Objetos manipulados pelo ORB
 Especifica para o cliente quais operações estão
disponíveis e como podem ser invodadas
 De definições IDL é possível mapear objetos
CORBA para uma linguagem particular (c,
c++, java, Smalltalk, Delphi, etc)

21
Exemplo de IDL

// Count.idl

module Counter
{
interface Count
{ attribute long sum;
long increment();
};
};
22
Tipos Primitivos de IDL x Java
IDL Java
boolean boolean
char char
wchar char
octet byte
string java.lang.String
wstring java.lang.String
short/unsigned short short
long/unsigned long int
long long/unsigned long long long
float float
double double

23
Mapeamento IDL x JAVA
IDL exception
module clienteApp {
exception EmailInvalido {
string msg;
long rc;
};
interface IContainerCliente {
void validaEmail (in string email)
raises
(EmailInvalido);
};
};

24
Mapeamento IDL x JAVA

IDL enum
module clienteApp {
enum TipoCartao {
Visa,
American_Express,
Credicard,
MasterCard
};

interface ITipoCartao {
TipoCartao getTipoCartao(in long tipo);
};
};
25
Mapeamento IDL x JAVA
IDL struct
module ClienteApp {
struct ClienteStruct {
string email;
wstring nomeCliente;
long long telefone;
short codigoCartao;
double numeroCartao;
char sexo;
float salario;
long vencimentoCartao;
octet idade;
boolean indicativoEspecial;
};
interface IContainerCliente {
void setCliente(in ClienteStruct clienteStruct)
};
};
26
Mapeamento IDL x JAVA
IDL array e IDL sequence

module clienteApp {
typedef string ArrayCliente[5];
typedef sequence<string> SequenceCliente;
// typedef sequence<string,5> SequenceCliente;

interface IContainerCliente {
ArrayCliente getArray();
SequenceCliente getSequenceCliente();
};
};

Java
String[] getArray() {...};
String[] getSequenceCliente() {...};
27
Implementação do Objeto

♦ Prover a implementação do estado e


comportamento atual do objeto
♦ Define suas operações e
procedimentos para ativar e desativar
objetos
♦ Interage com o serviço ORB para
criar novos objetos

28
Estrutura de Imp. do Objeto

29
Exemplo de Impl de Objeto
class CountImpl extends Counter._CountImplBase
{private int sum;
// Constructors
CountImpl(String name)
{ super(name);
System.out.println("Count Object Created");
sum = 0; }
// get sum
public int sum()
{ return sum; }
// set sum
public void sum(int val)
{ sum = val; }
}
30
Mecânica de Execução - Cliente

O Cliente executa um pedido com uma


referência para o objeto e operação desejada

31
Exemplo do Cliente
org.omg.CORBA.ORB orb =
org.omg.CORBA.ORB.init(args, null);

System.out.println("Binding to Count Object");


Counter.Count counter =
Counter.CountHelper.bind(orb, "My Count");

System.out.println("Setting sum to 0");


counter.sum((int)0);

System.out.println("Incrementing");
for (int i = 0 ; i < 1000 ; i++ )
{ counter.increment();}
32
Mecânica de Execução - Objeto
O ORB encontra o código apropriado da execução,
transmite os parâmetros e transfere o controle de
execução do objeto através do IDL

33
Mecânica de Execução - Componentes
A informação da execução do objeto é fornecida na instalação e
armazenada no repositório da execução

34
Adaptador de Objetos (Object Adapter)
Geração e interpretação de referências
para objetos
Invocação de métodos
Segurança de Interações
Ativação e desativação de objetos e
implementações
Mapeamento de referência a objetos para a
implementação correspondente
Registro de implementações de funções
executadas pelo ORB
35
Exemplo de Instância de Objeto
org.omg.CORBA.ORB orb =
org.omg.CORBA.ORB.init(args, null);
// Initialize the BOA
org.omg.CORBA.BOA boa = orb.BOA_init();
// Create the Count object
CountImpl count = new CountImpl("My Count");
// Export to the ORB the newly created object
boa.obj_is_ready(count);
// Ready to service requests
boa.impl_is_ready();

36
Conclusões I
 Muitas organizações adotaram Tecnologia de Objetos para
ganhar aumentos na produtividade do desenvolvimento do
software. Isto significa reusar o código
 A maioria de companhias começaram desenvolver algum tipo
da biblioteca componente OO
 Microsoft é a maior fonte de classes de OO
 O modelo componente de JavaBean é mais popular do que o
modelo de ActiveX neste momento para o desenvolvimento de
componentes em geral.
 O padrão da OMG CORBA é o ORB preferido para o
middleware de OO.
 DCOM é usado somente sobre a metade do que usam OO.
 Dos que usam CORBA, 61% estão satisfeitos.

37
Conclusões II

• Iona e Visigenic são as execuções mais populares


do padrão de CORBA.
• C++ e Java são as linguagens preferidas de OO.
• O Visual de Microsoft é o ambiente mais popular
do desenvolvimento com C++.
• A maioria de companhias armazenam ainda dados
do objeto em bases de dados relacionais.

38
Uso de Linguagens OO

39

Você também pode gostar