18
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

Sistemas Distribuídos Exemplo de Plataforma de Middleware: CORBA

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: 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

Page 2: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 3: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

CORBA

Page 4: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  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

Page 5: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 6: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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)

Page 7: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 8: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 9: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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()

Page 10: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 11: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 12: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 13: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 14: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 15: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 16: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 17: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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

Page 18: Sistemas Distribuídos Exemplo de Plataforma de Middleware:  CORBA

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