31

CORBA Cleivson Arruda – [email protected] Rafael Lima – [email protected]

Embed Size (px)

Citation preview

Page 1: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CORBACleivson Arruda – [email protected]

Rafael Lima – [email protected]

Page 2: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

ROTEIRO O que é CORBA?

Servicos servico de nomes

IDL MICO

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

Exemplo Exercício Prático Dúvidas

Page 3: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

O QUE É CORBA?

Common Object Request Broker Architeture CORBA é uma ESPECIFICAÇÃO de

middleware, criado pela OMG(Object Management Group )

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

Page 4: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

SERVIÇO DE MIDDLEWARE

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

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

Page 5: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

SERVIÇOS DE CORBA

Additional Structuring Mechanisms for the OTS

Collection Service Concurrency Service Enhanced View of Time Event Service Externalization Service Naming Service Licensing Service Life Cycle Service

Notification Service Persistent State

Service Property Service Query Service Relationship Service Security Service Time Service Trading Object Service Transaction Service

CORBA especifica um total de 18 servicos

Page 6: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

SERVIÇO DE NOMES

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

serviço Para que usar?

Transparência de localização dos serviços

Page 7: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

IDL

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

Puramente declarativa Padrões definidos para:

Java, COBOL, Smalltalk, Ada, Lisp, Python, IDLscript...

Page 8: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CORBA

Page 9: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

MICO

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

Serviços implementadosNaming serviceTrading serviceEvent serviceRelationship serviceProperty serviceTime serviceSecurity service

Page 10: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO IDES

www.mico.org MICO 2.3.13

No Windows Visual Studio 2008

No Linux Eclipse 3.2 + CDT

Page 11: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O MICO NO WINDOWS Faça o download do código fonte do MICO

em http://www.mico.org Descompacte e leia as instruções

presentes no arquivo README-WIN32 para compilar o código

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

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

Page 12: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O VISUAL STUDIO1) File -> New-> Project…

2) Expanda “Visual C++ Projects”

3) Selecione a pasta Win32

4) Selecione Win32 Console Project

5) Especifique um nome para o projeto

6) Clique OK

Page 13: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O VISUAL STUDIO

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 Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O VISUAL STUDIO

Foi criado um “Empty project”

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 na opção “Cancel”

Page 15: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O VISUAL STUDIO14) Add New Item -> Add15) Selecione “C++ File”

16) Especifique um nome para o arquivo, como “server.cpp”, por exemplo

17) Clique em “Open”

Page 16: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O VISUAL STUDIOO arquivo “server.cpp” foi criado.

18) Clique em “Project Menu”

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

20) Expanda-o

21)

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

Exemplo:

D:\mico\include

Page 17: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O VISUAL STUDIO22) Expanda “Linker”

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

24) Selecione Input

25) Digite as strings * “mico2313.lib” e * “micocoss2313.lib” (sem as aspas e separadas por um espaço)

26) Clique em OK

*2313 para nova versão do mico e 2312 para a já compilada

Page 18: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO O MICO NO LINUX

No linux (Eclipse 3.2 + CDT)

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

Page 19: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CONFIGURANDO AS BIBLIOTECAS

Page 20: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

PRONTO!!

Acredite!!

Eclipse Configurado!

Page 21: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

EXEMPLO: CONTA ONLINE

Criando a IDL Compilando a IDL Implementando o Serviço Implementando o Servidor Implementando o Cliente Inicializando o Servidor de nomes

Page 22: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

CRIAR IDL

interface account{ void deposito (in long valor); void saque (in long valor); long getSaldo();}; Colocar isso no arquivo account.idl

Page 23: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

COMPILANDO A IDL Lembrar de mudar no arquivo account.cc o include <account.h> para include “account.h”

Page 24: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

IMPLEMENTANDO O SERVIÇO

Page 25: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

IMPLEMENTANDO O SERVIDOR

Page 26: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

IMPLEMENTANDO O CLIENTE

Page 27: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

INICIALIZANDO O SERVIDOR DE NOMES

Page 28: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

APÓS INICIAR O SERVIDOR DE NOMES...

Basta executar o Servidor

E depois executar o Cliente

Page 29: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

DÚVIDAS

Dúvidas?

Page 30: CORBA Cleivson Arruda – csa3@cin.ufpe.br Rafael Lima – ragpl@cin.ufpe.br

EXERCÍCIO

interface AulaPratica{ void imprimirNoProjetor(in string

mensagem);};

Nome do servico“projetor”

Endereco do servidor de nomes:“serverAddress:9001”