Sistemas Distribuídos Exemplo de Plataforma de Middleware: CORBA
-
Upload
quon-blevins -
Category
Documents
-
view
26 -
download
0
description
Transcript of Sistemas Distribuídos Exemplo de Plataforma de Middleware: CORBA
Sistemas Distribuídos
Exemplo de Plataforma de Middleware: CORBA
Especialização em Redes de Computadores
Prof. Fábio M. CostaInstituto de Informática - UFG
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 2
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
CORBA
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 4
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 5
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 6
Arquitetura de Gerenciamento de Objetos da OMG
Application ObjectsApplication Objects
CORBAfacilitiesCORBAfacilities
CORBAservicesCORBAservices
DomainInterfacesDomain
Interfaces
Object Request Broker (ORB)Object Request Broker (ORB)
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 7
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 8
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 9
Exemplo em Uso
Team
-name:string
+bookGoalies()
coaches 1..*
1..*Player
-name:string-Number:int
+book()
+transfer(p:Player)
Club
-noOfMembers:int-location:Address
Trainer
-name:string
Organization
#name:string
works forworks for
1 1..*usesuses
plays in
1 11..16
has1
*
+train()
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 10
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 11
O Modelo de Objetos de CORBA: Tipos
typedef struct _Address {
string street;
string postcode;
string city;
} Address;
typedef sequence<Address> AddressList;
interface Team { ... };
typedef struct _Address {
string street;
string postcode;
string city;
} Address;
typedef sequence<Address> AddressList;
interface Team { ... };
TiposAtômicosTiposAtômicos
Tipo deObjetoTipo deObjeto
TiposestruturadosTiposestruturados
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 12
O Modelo de Objetos de CORBA: Módulos
module Soccer { typedef struct _Address { string street; string postcode; string city; } Address;};module People { typedef struct _Address { string flat_number; string street; string postcode; string city; string country; } Address;};
module Soccer { typedef struct _Address { string street; string postcode; string city; } Address;};module People { typedef struct _Address { string flat_number; string street; string postcode; string city; string country; } Address;};
MódulosMódulosSoccer::AddressSoccer::Address
People::AddressPeople::Address
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 13
O Modelo de Objetos de CORBA: Atributos
interface Player;
typedef sequence<Player> PlayerList;
interface Trainer;
typedef sequence<Trainer> TrainerList;
interface Team {
readonly attribute string name;
attribute TrainerList coached_by;
attribute Club belongs_to;
attribute PlayerList players;
...
};
interface Player;
typedef sequence<Player> PlayerList;
interface Trainer;
typedef sequence<Trainer> TrainerList;
interface Team {
readonly attribute string name;
attribute TrainerList coached_by;
attribute Club belongs_to;
attribute PlayerList players;
...
};
Tipo do AtributoTipo do Atributo Nome do AtributoNome do Atributo
AtributosmutáveisAtributosmutáveis
Clientes nãopodem mudaro valor
Clientes nãopodem mudaro valor
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 14
O Modelo de Objetos de CORBA: Operações
interface Team {
...
void bookGoalies(in Date d);
string print();
};
interface Team {
...
void bookGoalies(in Date d);
string print();
};
Lista deParâmetrosLista deParâmetros
Categoria de ParâmetroCategoria de Parâmetro
Tipo do parâmetroTipo do parâmetroNome do ParâmetroNome do ParâmetroNome da operação
(usado em requisições)Nome da operação(usado em requisições)
Tipos de RetornoTipos de Retorno
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 15
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 16
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
exception PlayerBooked{sequence<Date> free;}; interface Team { ... void bookGoalies(in Date d) raises(PlayerBooked); };
exception PlayerBooked{sequence<Date> free;}; interface Team { ... void bookGoalies(in Date d) raises(PlayerBooked); };
Dados da ExceçãoDados da Exceção
Operações declaram asexceções que podem gerarOperações declaram asexceções que podem gerar
Nome da ExceçãoNome da Exceção
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 17
O Modelo de Objetos de CORBA: Sub-tipos
interface Organization { readonly attribute string name; };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; };
interface Organization { readonly attribute string name; };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; };
Herdado por ClubHerdado por Club
SupertipoSupertipo
Super-tipo implícito:ObjectSuper-tipo implícito:Object
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 18
CORBA: Arquitetura
Uma interface padronizada
Uma interface para cada tipo de objeto
Interface dependente do ORBUma interface para cada adaptador de obj.
DynamicInvocation DynamicInvocation
ClientStubsClientStubs
ORBInterface ORBInterface
Implementation SkeletonsImplementation Skeletons
ClientClient Object ImplementationObject Implementation
ORB CoreORB Core
ObjectAdapter ObjectAdapter