Notas de Aula - MAC 5759 - Sistemas de Objetos Distribuídos
Aula 2 - 5/3/2001
CORBA - Common Object Request Broker Arquitecture
- Promotor: OMG (Object Management Group), mais de 1K membros
(indústria, universidade, governo)
- Objetivo: camada de middleware para facilitar a construção
de sistemas distribuídos
- Influências: RPC (Birrel e Nelson, 1984) e Spring (Sun)
- Características mais importantes:
- Arquitetura padronizada para ser adotada pela indústria de
software e acadêmicos
- Independência de linguagem, SO, HW, protocolos (TCP, UDP,
RTP), rede física, etc...
- Transparência de localização (mesmo processo,
mesma máquina, mesma rede local, mesmo universo)

- História:
- Sun RPC (produto comercial) -> Sun Spring (SOD experimental baseado
em objetos) -> CORBA (padrão da industria)
- CORBA 1.0, lançado em 1991 somente com suporte para C
- a seguir, implementações distintas para C++, cada ORB
tinha o seu protocolo próprio
- CORBA 2.0, lançado em 1995 com mapeamento padrão para
C++ e IIOP
- a seguir, mapeamento para Java, Smalltalk, Cobol, Ada, Fortran, perl
etc.
- mas C++ e Java são mais comuns. A JDK 1.3 da Sun vem com
CORBA incluso.
- CORBA 3.0, lançado em 2001 com uma série de serviços
novos (e CCM)
OMA - Object Management Architecture
- Vinoski, Fig. 2.1, pg. 12.
- Object Services
- serviços básicos disponíveis para o desenvolvedor
- Application Interfaces
- criado pelo desenvolvedor
- Domain Iterfaces (special task forces)
- medicina
- finanças
- tipos específicos de indústrias
- Parte central do OMA: CORBA
- Principais elementos de CORBA
- OMG IDL
- Mapeamentos para linguagens
- suporte para invocação de operações e
encaminhamento
- Adaptadores de Objetos (Object Adapters)
- Protocolo entre ORBs (GIOP)
ORB - Object Request Broker
- Arquitetura básica de um ORB (Fig. 2.3, livro Vinoski, pag.
16)
- Funções de um adaptador de objetos:
- criar referências para objetos
- garantir que cada objeto é gerenciado por um servente, i.e.,
possui uma implementação
- direciona as requisições recebidas pelo ORB do servidor
para os serventes apropriados
- Do lado do cliente, o stub é responsável por
- empacotar os argumentos das requisições,
- criar uma mensagem no protocolo GIOP e
- enviar a mensagem (requisição) para o ORB remoto responsável
pelo objeto chamado
- receber a resposta e entregá-la de volta ao código
do cliente
- Do lado do servidor, o esqueleto (skeleton) é responsável
por
- receber as mensagens dos vários clientes,
- desempacotá-las,
- redirecioná-las para o servente correto,
- receber a resposta do servente e empacotá-la
- enviar a resposta para o cliente usando GIOP
- Nas aplicações baseados em soquetes, o programador tem
que escrever todo o código para fazer todas essas coisas.
- Em CORBA, os stubs e esqueletos são gerados automaticamente
pelo compilador de IDL
Etapas Gerais da Implementação de um Sistema em CORBA
- Definição das Interfaces dos objetos, exprimindo-as em
IDL
- Geração (automática) dos stubs e
esqueletos
- Implementação dos objetos serventes em uma linguagem
de programação qualquer
- Implementação de uma (ou mais) aplicações
clientes
- Geração de stubs e esqueletos
Próxima Aula
Aula Anterior
Página de MAC 5759
Página do Fabio
Página do DCC