corba andré ricardo (xico) – arss at cin hugo calazans – htcrs at cin

31
CORBA CORBA André Ricardo (xico) – André Ricardo (xico) – arss at cin arss at cin Hugo Calazans – htcrs at Hugo Calazans – htcrs at cin cin

Upload: internet

Post on 18-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

CORBACORBA

André Ricardo (xico) – arss at André Ricardo (xico) – arss at cincin

Hugo Calazans – htcrs at cinHugo Calazans – htcrs at cin

Page 2: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

RoteiroRoteiro

• O que é CORBA?O que é CORBA?– ServicosServicos

• servico de nomesservico de nomes

• IDLIDL• MICOMICO

– Configurando IDEsConfigurando IDEs• No Windows (Visual Studio 2005)No Windows (Visual Studio 2005)• No linux (Eclipse 3.2 + CDT)No linux (Eclipse 3.2 + CDT)

• ExemploExemplo• Exercício PráticoExercício Prático• DúvidasDúvidas

Page 3: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

O que é CORBA?O que é CORBA?

• Common Object Request Broker Common Object Request Broker ArchitetureArchiteture

• CORBA é uma ESPECIFICAÇÃO de CORBA é uma ESPECIFICAÇÃO de middlewaremiddleware– Mediador da computação distribuídaMediador da computação distribuída

• MICO é um exemplo de MICO é um exemplo de implementação desta especificaçãoimplementação desta especificação

Page 4: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Serviço de MiddlewareServiço de Middleware

• Definição de Bernstein:Definição de Bernstein:– Serviço de propósito geral, situado Serviço de propósito geral, situado

entre plataformas (serviços de baixo entre plataformas (serviços de baixo nível) e aplicações, sendo caracterizado nível) e aplicações, sendo caracterizado pelas APIs e pelos protocolos que pelas APIs e pelos protocolos que suportasuporta

Page 5: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Serviços de CORBAServiços de CORBA

• Additional Structuring Additional Structuring Mechanisms for the Mechanisms for the OTSOTS

• Collection ServiceCollection Service• Concurrency ServiceConcurrency Service• Enhanced View of TimeEnhanced View of Time• Event ServiceEvent Service• Externalization ServiceExternalization Service• Naming ServiceNaming Service• Licensing ServiceLicensing Service• Life Cycle ServiceLife Cycle Service

• Notification ServiceNotification Service• Persistent State Persistent State

ServiceService• Property ServiceProperty Service• Query ServiceQuery Service• Relationship ServiceRelationship Service• Security ServiceSecurity Service• Time ServiceTime Service• Trading Object ServiceTrading Object Service• Transaction ServiceTransaction Service

CORBA especifica um total de 18 servicos

Page 6: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Serviço de NomesServiço de Nomes

• DefiniçãoDefinição– Associação biunívoca entre um nome e Associação biunívoca entre um nome e

um serviçoum serviço

• Para que usar?Para que usar?– Transparência de localização dos Transparência de localização dos

serviçosserviços

Page 7: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

IDLIDL

• Interface Definition LanguageInterface Definition Language• Baseada em C++Baseada em C++• Não possui algoritmos ou variáveisNão possui algoritmos ou variáveis

– Puramente declarativaPuramente declarativa

• Padrões definidos para:Padrões definidos para:– Java, COBOL, Smalltalk, Ada, Lisp, Java, COBOL, Smalltalk, Ada, Lisp,

Python, IDLscript...Python, IDLscript...

Page 8: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

CORBACORBA

Page 9: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

MICOMICO

• Uma implementacao LGPL (free software) Uma implementacao LGPL (free software) de CORBA em C++de CORBA em C++

• Serviços implementadosServiços implementados– Naming serviceNaming service– Trading serviceTrading service– Event serviceEvent service– Relationship serviceRelationship service– Property serviceProperty service– Time serviceTime service– Security serviceSecurity service

Page 10: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando IDEsConfigurando IDEs

• www.mico.orgwww.mico.org– MICO 2.3.12MICO 2.3.12

• No Windows No Windows – Visual Studio 2005Visual Studio 2005

• No LinuxNo Linux– Eclipse 3.2 + CDTEclipse 3.2 + CDT

Page 11: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o MICO no Configurando o MICO no WindowsWindows

• Faça o download do código fonte do MICO Faça o download do código fonte do MICO em em http://www.mico.orghttp://www.mico.org

• Descompacte e leia as instruções presentes Descompacte e leia as instruções presentes no arquivo README-WIN32 para compilar o no arquivo README-WIN32 para compilar o códigocódigo

• Edite as variáveis de ambiente, adicionando o Edite as variáveis de ambiente, adicionando o diretório win32-bin à variável PATHdiretório win32-bin à variável PATH

• Como alternativa a todo esse processo, você Como alternativa a todo esse processo, você poderá fazer o download de uma versão já poderá fazer o download de uma versão já compilada de MICO, através do link: compilada de MICO, através do link: http://www.cin.ufpe.br/~if677/http://www.cin.ufpe.br/~if677/monitoria/corbamonitoria/corba

Page 12: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o Visual Configurando o Visual StudioStudio

1) File -> New-> Project…

2) Expanda “Visual C++”

3) Selecione a pasta “Win32”

4) Selecione “Win32 Console Application”

5) Especifique um nome e um diretório para o projeto

6) Clique em “OK”

Page 13: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o Visual Configurando o Visual StudioStudio

7) Clique em “Application Settings”

8) Cerfifique-se de que a opção “Console Application” está selecionada

9) Marque a opção “Empty project”

10) Clique em “Finish” para criar o projeto

Page 14: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o Visual Configurando o Visual StudioStudio

Foi criado um projeto vazio

11) Clique com o botão direito em cima do projeto para abrir o menu

12) Selecione o item “Properties”

Onde estão as opções “C/C++”?

13) Clique em “Cancel”

Page 15: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o Visual Configurando o Visual StudioStudio14) Add -> New Item15) Clique em “Visual C++” e selecione “C++ File”

16) Especifique um nome para o arquivo

Exemplo: “server.cpp”

17) Clique em “Add”

Page 16: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o Visual Configurando o Visual StudioStudio

O arquivo “server.cpp” foi criado.

18) Clique com o botão direito em cima do projeto

19) Selecione “Properties”O diretório “C/C++” está agora habilitado!

20) Clique nele

21) Em “Additional Included Directories” especifique o caminho completo até o diretório include do MICO

Exemplo:

D:\mico\include

Page 17: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o Visual Configurando o Visual StudioStudio

22) Expanda “Linker” e selecione “Geral”

23) Em “Additional Library Directories”, especifique o caminho completo até as bibliotecas do mico para win-32 Exemplo: D:\mico\win32-bin\lib 24) Selecione Input

25) Em “Additional Dependencies”, digite as strings “mico2312.lib” e “micocoss2312.lib” (sem as aspas e separadas por um espaço)

26) Clique em OK

Page 18: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando o MICO no Configurando o MICO no LinuxLinux

• No linux (Eclipse 3.2 + CDT)No linux (Eclipse 3.2 + CDT)

– Criar um Projeto C/C++Criar um Projeto C/C++• Vocês já fizeram isso milhões de vezes. Vocês já fizeram isso milhões de vezes.

Page 19: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Configurando as Configurando as BibliotecasBibliotecas

Page 20: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

PRONTO!!PRONTO!!

• Acredite!!Acredite!!

• Eclipse Configurado!Eclipse Configurado!

Page 21: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Exemplo: Conta OnlineExemplo: Conta Online

– Criando a IDLCriando a IDL– Compilando a IDLCompilando a IDL– Implementando o ServiçoImplementando o Serviço– Implementando o ServidorImplementando o Servidor– Implementando o ClienteImplementando o Cliente– Inicializando o Servidor de nomesInicializando o Servidor de nomes

Page 22: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Criar IDLCriar IDL

Interface Account{Interface Account{

void deposito (in long valor);void deposito (in long valor);

void saque (in long valor);void saque (in long valor);

long getSaldo();long getSaldo();

};};• Colocar isso no arquivo account.idlColocar isso no arquivo account.idl

Page 23: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Compilando a IDLCompilando a IDL

Page 24: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Implementando o ServiçoImplementando o Serviço

Page 25: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Implementando o Implementando o ServidorServidor

Page 26: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Implementando o ClienteImplementando o Cliente

Page 27: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Inicializando o Servidor de Inicializando o Servidor de nomesnomes

Page 28: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

Após iniciar o servidor de Após iniciar o servidor de nomes...nomes...

• Basta executar o ServidorBasta executar o Servidor

• E depois executar o ClienteE depois executar o Cliente

Page 29: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

DúvidasDúvidas

• Dúvidas?Dúvidas?

Page 30: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

ExercícioExercício

interfaceinterface AulaPratica{ AulaPratica{

voidvoid imprimirNoProjetor(in imprimirNoProjetor(in stringstring mensagem);mensagem);

};};

• Nome do servicoNome do servico– ““projetor”projetor”

• Endereco do servidor de nomes:Endereco do servidor de nomes:– ““serverAddress:9001”serverAddress:9001”

Page 31: CORBA André Ricardo (xico) – arss at cin Hugo Calazans – htcrs at cin

ReferênciasReferências

• http://www.frb.br/ciente/Impressa/Info/I.8http://www.frb.br/ciente/Impressa/Info/I.8.Semiramis.Middleware.pdf.Semiramis.Middleware.pdf

• http://www.cin.ufpe.br/~if677/monitoria/chttp://www.cin.ufpe.br/~if677/monitoria/corba/orba/

• http://www.omg.org/gettingstarted/corbafhttp://www.omg.org/gettingstarted/corbafaq.htmaq.htm

• http://www.opendylan.org/documentation/http://www.opendylan.org/documentation/opendylan/corba/corba_1.htmopendylan/corba/corba_1.htm

• http://www.answers.com/topic/corba?cat=http://www.answers.com/topic/corba?cat=technologytechnology

• http://en.wikipedia.org/wiki/CORBAhttp://en.wikipedia.org/wiki/CORBA