Sistemas Distribuídos
CORBA
Instituto de Informática – UFG
Verão 2005
Baseado em: Emmerich, Capítulo 3
e em Tanenbaum, seção 9.1
Visão Geral
– O modelo de objetos de CORBA
– A Linguagem de Definição de interfaces
– Arquitetura
OMG – Object Management Group
• Organização sem fins lucrativos com sede nos EUA e
representações em vários países
• Fundada em abril de 1989
• Mais de 800 membros
• Dedicada à criação e popularização de padrões industriais
de orientação a objetos para integração de aplicações, por
exemplo:
– CORBA, UML, MDA, CWM
Objetivos de CORBA
• Oferecer suporte para requisições de objetos em
ambientes distribuídos e heterogêneos de forma
transparente para usuários e programadores de
aplicações
• Facilitar a integração de novos componentes com
componentes legados
• Padrão aberto e de livre acesso
• Baseado em amplo consenso na indústria
Arquitetura de Gerenciamento de Objetos
da OMG
Application
Objects
Domain
Interfaces
CORBA
facilities
Object Request Broker (ORB)
CORBAservices
Modelo de Objetos e Definição de
Interfaces
Objetos
Tipos
Módulos
Atributos
Operações
Requisições
Exceções
Sub-tipos
A Linguagem de Definição de Interfaces da
OMG
Uma linguagem para expressar todos os conceitos do
modelo de objetos de CORBA
Características da OMG/IDL:
– Independente de linguagem de programação
– Sintaxe semelhante à de C++
– puramente declarativa (i.e., não define implementação)
Mapeamentos para várias linguagens de programação
estão disponíveis
Exemplo em Uso
Organization
#name:string
Club
-noOfMembers:int 1
-location:Address
+transfer(p:Player)
1..*
works for
Trainer
-name:string
uses
+train()
1..*
1..*
Team
-name:string
+bookGoalies()
Player
plays in -name:string
1
11..16 -Number:int
+book()
O Modelo de Objetos de CORBA: Objetos
Cada objeto tem um identificador que é único dentro
do contexto de um ORB
Múltiplas referências para o mesmo objeto
Referências suportam transparência de localização
Referências de objetos são persistentes
– Válidas mesmo que o objeto em questão tenha sido
desativado
O Modelo de Objetos de CORBA: Tipos
typedef struct _Address {
string street;
string postcode;
Tipos
Tipos Atômicos
string city;
estruturados
} Address;
typedef sequence<Address> AddressList;
interface Team { ... };
Tipo de
Objeto
O Modelo de Objetos de CORBA:
Módulos
Módulos
module Soccer {
typedef struct _Address {
string street;
string postcode;
string city;
} Address;
Soccer::Address
};
module People {
typedef struct _Address {
string flat_number;
string street;
string postcode;
string city;
string country;
} Address;
People::Address
};
O Modelo de Objetos de CORBA:
Atributos
interface Player;
typedef sequence<Player> PlayerList;
interface Trainer;
typedef sequence<Trainer> TrainerList;
interface Team {
Clientes não
readonly attribute string name;
podem mudar
attribute TrainerList coached_by;
o valor
attribute Club belongs_to;
Atributos
attribute PlayerList players;
mutáveis
...
};
Tipo do Atributo Nome do Atributo
O Modelo de Objetos de CORBA:
Operações
Categoria de Parâmetro
Lista de
Parâmetros
interface Team {
Tipos de Retorno ...
void bookGoalies(in Date d);
string print();
};
Tipo do parâmetro
Nome da operação
(usado em requisições)
Nome do Parâmetro
O Modelo de Objetos de CORBA:
Requisições
Requisições são definidas por objetos clientes
Uma requisição consiste de:
–
–
–
–
uma referência ao objeto servidor
o nome da operação requisitada
argumentos da requisição (parâmetros reais)
informação de contexto
Requisições são executadas em modo síncrono
Requisições podem ser definidas de duas formas:
– estaticamente
– dinamicamente
O Modelo de Objetos de CORBA:
Exceções
• Exceções genéricas (ex.: rede fora do ar, ref.
de objeto inválida, esgotou a memória)
• Exceções específicas de determinados tipos
Nome da Exceção
Dados da Exceção
exception PlayerBooked{sequence<Date> free;};
interface Team {
...
void bookGoalies(in Date d) raises(PlayerBooked);
};
Operações declaram as
exceções que podem gerar
O Modelo de Objetos de CORBA:
Sub-tipos
Super-tipo implícito: Object
Herdado por Club
interface Organization {
readonly attribute string name;
Supertipo
};
interface Club : Organization {
exception NotInClub{};
readonly attribute short noOfMembers;
readonly attribute Address location;
attribute TeamList teams;
attribute TrainerList trainers;
void transfer(in Player p) raises NotInClub;
};
CORBA: Arquitetura
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
Implementation
Skeletons
Object
Adapter
ORB Core
Uma interface padronizada
Uma interface para cada tipo de objeto
Uma interface para cada adaptador de obj.
Interface dependente do ORB
Download

interface Team