UN PICCOLO ESEMPIO CORBA CON ACE+TAO SEGUITO PASSO PASSO FINO ALLA COMPILAZIONE

[Total: 0    Average: 0/5]
In questo esempio vorrei descrivere passo passo come compilare una applicazione corba dopo che sono state installate le librerie ACE TAO nella directory ACE_wrappers.
ACE+TAO sono le librerie piu’ diffuse per sviluppare CORBA. Queste librerie sono gratuite ma non e’ semplice avere una documentazione chiara capace di far capire passo passo il modo in cui compilare senza errori. 

In questo esempio vorrei descrivere passo passo come compilare una applicazione corba dopo che sono state installate le librerie ACE TAO nella directory ACE_wrappers.
In questo esercizio non utilizzo nessun ambiente di sviluppo in particolare. Il codice puo’ essere scritto anche con un semplice editor. 
In particolare questo esempio e’ stato realizzato con UBUNTU  10.10 ma puo’ essere benissimo realizzato con una qualsiasi versione di LINUX. 
La prima cosa da fare e’ chiaramente installare le librerie ACE TAO. Questa operazione e’ piuttosto semplice. Le indicazioni riportate nel manuale sono abbastanza semplici. 
Dal presente link http://www.theaceorb.com/downloads/1.6a/index.html e’ possibile scaricare l’ultima versione ACE TAO disponibile. Per la versione linux e’ preferibile scaricare la versione tar.gz: http://download.ociweb.com/TAO-1.6a/ACE+TAO-1.6a.tar.gz
Una volta scaricata la versione occorre compilare il tutto seguendo le note descritte nel seguente link: http://www.theaceorb.com/faq/index.html#HowToBuildACEandTAOonLinux
A questo punto siamo pronti per poter iniziare a fare il primo progetto. Prima di inziare pero’ vorrei copiare la mia parte del file .bashrc relativa allo sviluppo delle mie applicazioni in CORBA.

DESCRIZIONE BASHRC


ACE_ROOT=~/ACE_wrappers
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/lib
export LD_LIBRARY_PATH
TAO_ROOT=~/ACE_wrappers/TAO
export TAO_ROOT
CIAO_ROOT=~/ACE_wrappers/TAO/CIAO
export CIAO_ROOT 

PATH=$PATH:$LD_LIBRARY_PATH:$ACE_ROOT/bin:$ACE_ROOT

DEFINIZIONE DELLA CARTELLA

Creiamo una cartella nella propria home:

mkdir ~/esempioCORBA
Dopo di che inserire nella directory il file idl in comune tra client e server nominato Messenger.idl con il seguente contenuto:

// Messenger.idl

interface Messenger
{
  boolean send_message(in string user_name,
                       in string subject,
                       inout string message);
};
Con questo semplice idl si vuole creare un interfaccia dove e’ presente una unica funzione send utile per poter inviare un messaggio dal server al client. Questo messaggio sara’ inviato appena si stabilisce la comunicazione tra i due.

CONTINUO

Con il comando
tao_idl  Messenger.idl
si ottengono i seguenti files:
MessengerC.cpp
MessengerC.h
MessengerC.inl
MessengerS.cpp
MessengerS.h
MessengerS.inl
Tali file sono allegati nel seguente link:
Questa operazione e’ importante durante lo sviluppo del codice ma puo’ essere evitata se si vuole eseguire la compilazione complessiva. Infatti nella fase finale della compilazione questi fine vengono ricreati. 

—–

Il servlet deve essere implementato con le funzionalita’ dell’oggetto:

CONTINUO

A questo punto occorre scrivere il codice utile ad implementare le funzionalita’ del client e del server ereditando gli skeleton forniti dalla compilazione del idl. 
Nel seguente allegato sono presneti gli ulteriori file necessari:
MessengerClient.cpp
MessengerServer.cpp
started_pch.cpp
started_pch.h
I file started forniscono ulteriori path all’interno del codice.

MAKEFILE

Prima di compilare chiaramente occorre chiaramente avere un makefile. Per ottenerlo occorre usare sempre un comando messo a disposizione da ACE TAO:
mwc.pl -type gnuace -recurse -exclude TAO/CIAO -features ssl=1,rpc=1
dall’interno della directory dove sono allocati tutti i file creati.
Per poter procedere con il comando occorre avere nella directory un ulteriore file di input esempioCORBA.mpc
al cui interno viene scritto il seguente codice
// $Id: GettingStarted.mpc 979 2008-12-31 20:22:32Z mitza $

project(*idl): taoidldefaults {
  idlflags += -Wb,pch_include=started_pch.h
  IDL_Files {
    Messenger.idl
  }
  custom_only = 1
}

project(*Server): taoserver {
  exename = MessengerServer
  after += *idl
  Source_Files {
    Messenger_i.cpp
    MessengerServer.cpp
  }
  Source_Files {
    MessengerC.cpp
    MessengerS.cpp
  }
  IDL_Files {
  }
}

project(*Client): taoclient {
  exename = MessengerClient
  after += *idl
  Source_Files {
    MessengerClient.cpp
  }
  Source_Files {
    MessengerC.cpp
  }
  IDL_Files {
  }
}
Questo file input permette al tool mwc di capire in che modo generate il makefile. Questo tool e’ molto potente e permette di creare makefile anche in strutture complesse realizzate con tante subfolders

CONTINUO

con il comando mwc vengono creati i seguenti file:
GNUmakefile
GNUmakefile.Messager_Client
GNUmakefile.Messager_Idl
GNUmakefile.Messager_Server
A questo punto occorre compilare il tutto lanciando il comando
make
Se non ci sono ulteriori problemi tutto viene compilato correttamente e alla fine nella directory vengono generati i due file eseguibili
MessengerClient
MessengerServer
Lanciando i due eseguibili da due terminali differenti e’ possibile valutare semplicemente in che modo il server invia al client il messaggio utilizzando il comando send presente nella idl specificata.

DOCUMENTAZIONE DI RIFERIMENTO

ESEMPIO CORBA CON L’UTILIZZO DEL NAMESERVICE IN AMBIENTE LINUX

Questo codice e’ stato implementato in Visual Studio 2005 Professional e poi esportato in LINUX con la sola realizzazione del file .mpc necessario per la realizzazione del Makefile.

compilation:
cd <dir with the code>
mwc.pl -type gnuace -recurse -exclude TAO/CIAO -features ssl=1,rpc=1
make
esecuzione:
terminale 1
cd /home/graziano/ACE_wrappers/TAO/orbsvcs/Naming_Service
./Naming_Service -m 1 -ORBEndpoint iiop://localhost:12345
terminale 2
cd <dir with the code>
SimpleInterfaceServer -ORBDottedDecimalAddresses 1 –ORBInitRef NameService=corbaloc:iiop:localhost:12345/NameService
terminale 3
cd <dir with the code>
SimpleInterfaceClient -ORBDottedDecimalAddresses 1 -ORBInitRef NameService=corbaloc:iiop:localhost:12345/NameService

  • iElettronica

    in seguito descrivero’ accuratamente come un progetto realizzato in Visual C++ puo’ essere esportato in Linux