Expérience de développement

Environnement CORBA

 

La société Atlantide

Le projet Forum de discussion

Autres projets en objets distribués

Conclusion

 

La société Atlantide

 

• Activité SSII

• Statut S.A filiale du groupe ALTRAN

• Capital 1,2 MF

• Création 1984

• Effectifs 50

• Implantation Brest (Siège social)

Rennes (Agence)

• Métiers Informatique

Electronique

Scientifique(mathématiques,physique)

• Secteurs Télécommunications

Environnement

Défense

• Clients France Télécom

Ifremer

Epshom

DCN

Commission européenne

Thomson Marconi Sonar

Alcatel Business Systems

Thomson CSF RCM

EDF

La Poste

CRNAO

IFRTP

CMB

MORS

 

 

Le projet Forum de discussion

 

Contexte du projet

• CCETT département TMS/PMA

• 1996

• Evaluation des nouvelles technologies appliquées au domaine des forums de discussions.

• Logiciel expérimental, testé sur un ensemble restreint d'utilisateurs (quelques centaines).

• Contexte internet.

 

Fonctionnalités du logiciel

Permettre aux utilisateurs connectés de se déplacer dans des lieux de discussions graphiques.

Permettre une personnalisation de son personnage, mémorisée dans une base de données du serveur de forum.

Le déplacement d'un personnage sur un poste client est répercuté sur l'ensemble des postes clients.

 

Le contexte technique

• Postes clients PC windows 95 ou NT Serveur avec un navigateur supportant Java.

• Serveur Windows NT.

• Environnement de développement CAFE de Symantec.

• Java ORBIX pour les clients.

• C++ ORBIX pour le serveur.

• Base de données POET.

 

 

Les principes mis en œuvre

 

 

IHM

 

IHM au démarrage du forum

 

IHM de contrôle d'accès au forum

 

IHM de navigation par chemin menant aux lieux de discussions.

 

IHM de navigation par Plan

 

IHM lieu de discussion

 

IHM principale de personnalisation

 

IHM pour personnalisation par composition d'un personnage

 

IHM de personnalisation par fichier gif personnel

 

 

Mise en œuvre ORBIX

 

 

ü Le fichier IDL sert à décrire les classes distribuées (attributs et méthodes).

 

ü Les fichiers sources client fournissent le code permettant l’accès aux objets distribuées.

 

ü Les fichiers sources serveur fournissent le code permettant au serveur de rendre accessible les objets distribuées.

 

ü ORBIX conforme à CORBA

 

 

Cas concret

 

Fichier IDL

// apibas.idl

 

interface apibas {

readonly attribute long numNoeudRacine;

void Connect();

void Disconnect();

};

Fichiers générés par le compilateur IDL C++ et Java

 

 

 

Accès depuis le code java client

 

public class ApibasEvents extends apibasDemo.ApibasPanel {

 

public apibasDemo.apibas.Ref gRef;

 

public void bindObject () {

String tmp;

String markerServer;

String hostName;

 

// get server name from text field

if ((tmp = nameField.getText ()) == null)

markerServer = "";

else

markerServer = ":" + tmp;

 

// get host name from text field

hostName = hostField.getText ();

 

// bind to server object

try {

gRef = apibasDemo.apibas._bind (markerServer, hostName);

}

catch (SystemException se) {

displayMsg ("Connect failed.\n" + "Unexpected exception:\n"

+ se.toString ());

return;

}

 

public void getRoot () {

int numNoeud;

Integer affiche;

 

// check that proxy exists

if (gRef == null) {

displayMsg ("Récupération du numéro de noeud impossible - non connecté au serveur.");

return;

}

 

try {

gRef.Connect ();

numNoeud = gRef.numNoeudRacine ();

gRef.Disconnect ();

}

catch (SystemException se) {

displayMsg ("Récupération du numéro de noeud impossible.\n"

+ "Unexpected exception:\n" + se.toString ());

return;

}

 

affiche = new Integer(numNoeud);

dField.setText (affiche.toString (numNoeud));

displayMsg ("Récupération du numéro de noeud réussie.");

}

 

}

 

Implémentation du code sur le serveur

 

CORBA_Long apibas_i::numNoeudRacine(CORBA_Environment &)

{

return m_numNoeudRacine;

}

 

void apibas_i::Connect(CORBA_Environment &)

{

int lv_Stat;

 

if( _op_apiBase != NULL )

{

_op_apiBase->Connect();

 

lv_Stat = _op_apiBase->Connect();

 

if(lv_Stat == OK)

{

_op_noeudCourant = new C_ApiNoeud(NULL);

_op_apiBase->GetRoot(_op_noeudCourant);

 

m_numNoeudRacine = _op_noeudCourant->ov_Id;

}

}

}

 

void apibas_i::Disconnect(CORBA_Environment &)

{

if( _op_apiBase != NULL )

{

_op_apiBase->Disconnect();

}

}

 

Conclusion

 

ü Mise en œuvre simple.

 

ü Rend transparent le réseau, les objets sont manipulés comme s’ils étaient locaux.

 

ü Utiliser dans le cas de serveurs d’objets spécialisés.

 

Autres expériences d’objets distribués à Atlantide

 

ü ROV 6000 (IFREMER), Véhicule sous marin commandé depuis la surface.

Utilisation d’ORBIX pour communiquer entre les objets du véhicule et les objets

 

ü Serveur de jeux collaboratifs pour la cité des sciences.