Sistemas Distribuídos
Exemplo de Plataforma de
Middleware: CORBA
Especialização em Redes de
Computadores
Prof. Fábio M. Costa
Instituto de Informática - UFG
Visão Geral
• CORBA
– O modelo de objetos de CORBA
– A Linguagem de Definição de interfaces
– Arquitetura
• COM
– Common Object Model
– Microsoft IDL
– Arquitetura
• RMI
– O modelo de objetos de Java (RMI)
– Definição de interfaces em Java
– Arquitetura
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
2
CORBA
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
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
4
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
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
5
Arquitetura de Gerenciamento de
Objetos da OMG
Application
Objects
Domain
Interfaces
CORBA
facilities
Object Request Broker (ORB)
CORBAservices
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
6
Modelo de Objetos e Definição
de Interfaces
•
•
•
•
•
•
•
•
Objetos
Tipos
Módulos
Atributos
Operações
Requisições
Exceções
Sub-tipos
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
7
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++
• Mapeamentos para várias linguagens de
programação estão disponíveis
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
8
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()
Original: Wolfgang Emmerich, 2000
Player
plays in -name:string
1
11..16 -Number:int
+book()
Prof. Fábio M. Costa - Instituto de Informática / UFG
9
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
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
10
O Modelo de Objetos de
CORBA: Tipos
Tipos
estruturados
typedef struct _Address {
string street;
string postcode;
string city;
Tipos
Atômicos
} Address;
typedef sequence<Address> AddressList;
interface Team { ... };
Tipo de
Objeto
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
11
O Modelo de Objetos de
CORBA: Módulos
Módulos
Original: Wolfgang Emmerich, 2000
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
};
Prof. Fábio M. Costa - Instituto de Informática / UFG
12
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;
attribute PlayerList players;
Atributos
mutáveis
...
};
Tipo do Atributo Nome do Atributo
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
13
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 Nome do Parâmetro
(usado em requisições)
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
14
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 sincronamente
• Requisições podem ser definidas
– estaticamente
– dinamicamente
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
15
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);
};
Original: Wolfgang Emmerich, 2000
Operações declaram as
Prof. Fábioexceções
M. Costa - Instituto
de Informática
/ UFG gerar16
que
podem
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;
};
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
17
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
Original: Wolfgang Emmerich, 2000
Prof. Fábio M. Costa - Instituto de Informática / UFG
18
Download

Sistemas Distribuídos CORBA, COM e Java/RMI