1 / 50

Développer avec ORBacus

Développer avec ORBacus. Partie 1 – Les préalables. Préalables. Effectuer une analyse de type « Orienté objets » (UML, OMT, etc.); Configurer le IDE correctement (Visual Studio, etc.). La distribution ORBacus. ORBacus est distribué en code source C++;

zed
Download Presentation

Développer avec ORBacus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Développer avec ORBacus Partie 1 – Les préalables

  2. Préalables • Effectuer une analyse de type « Orienté objets » (UML, OMT, etc.); • Configurer le IDE correctement (Visual Studio, etc.).

  3. La distribution ORBacus • ORBacus est distribué en code source C++; • Possibilité de le compiler avec information de débogage ou optimisé; • Les deux compilations sont misent à votre disposition.

  4. La distribution ORBacus • La distribution comporte 5 sous-répertoires: • /bin contient les utilitaires tel les traducteurs IDL et les installateurs de services; • /demo contient des projets C++ démontrant les utilisations diverses du ORB; • /idl contient les interfaces IDL de l’ORB ainsi que les interfaces des services; • /include contient les en-têtes CORBA et les en-têtes des services; • /lib contient les librairies de débogage et optimisées du ORB.

  5. La distribution ORBacus • Les exécutables binaire importants (/bin):

  6. La distribution ORBacus • Les exécutables binaire importants (/bin):

  7. La distribution ORBacus • Les librairies importantes (/lib):

  8. La distribution ORBacus • Les en-têtes importantes (/include):

  9. La configuration de ORBacus • Le ORB et ses services peuvent être configuré de plusieurs façons: • Fichier de configuration à l’aide de l’utilitaire regupdate, incontournable et pratique pour configuration statique; • Modifier manuellement les registres Windows avec les clés nécessaires (tout en respectant la hiérarchie imposé par le ORB), pas très convivial ni pratique, à éviter; • Au niveau de la programmation à l’aide du service propriétés, pratique pour configuration propice au changement. (Prioritaire sur les autres, annule les autres modes).

  10. La configuration de ORBacus • Fichier de configuration - partie ORB et adaptateur d’objets (OA): ooc.orb.server_timeout=20 ooc.orb.client_timeout=20 ooc.orb.client_shutdown_timeout=10 ooc.orb.server_shutdown_timeout=10 ooc.orb.conc_model=threaded ooc.orb.oa.endpoint=iiop --host 127.0.0.1 --port 5000 ooc.orb.oa.conc_model=thread_pool ooc.orb.oa.thread_pool=5

  11. La configuration de ORBacus • Fichier de configuration - partie services: ooc.orb.service.NameService=corbaloc::hôteservice:5001/NameService ooc.orb.service.TradingService=corbaloc::hôteservice:5002/TradingService ooc.orb.service.PropertyService=corbaloc::hôteservice:5003/ PropertyService

  12. La configuration de ORBacus • Pour officialiser la configuration du fichier, utilisez regupdate.exe afin de mettre à jour les registres Windows; • regupdate HKEY_LOCAL_MACHINE maconfig.txt va inscrire les clés nécessaire dans HKEY_LOCAL_MACHINE/SOFTWARE/OOC/ • Vous pouvez aussi modifier les registres manuellement; • Vous pouvez aussi utiliser le services propriétés, utilisant le même format de chaîne que le fichier. Toute configuration au niveau du code va surpasser celle inscrite aux registres!

  13. La configuration de ORBacus • Résultat d’un regupdate sur les registres: ooc.orb • Référez-vous au chap. 4 du manuel ORBacus pour la liste complète des propriétés

  14. La configuration de ORBacus • Certains services sont disponibles en tant que service natif Windows NT/2000, d’autres non; • Pour installer un services NT, utiliser la ligne de commande ntservice -i, le service sera ajouter au services Windows, vous pourrez ainsi lui spécifier de démarrer automatiquement ou manuellement; • Les autres doivent être démarrés par ligne de commande a chaque redémarrage du système ou automatiquement exécutés.

  15. Démarrer un projet • Le démarrage d’un projet en C++ requiert quelques configurations au niveau de l’environnement; • ORBacus n’a été testé sous Windows que pour Visual C++ 6.0 et .NET 2003.

  16. Démarrer un projet VC++ 6.0 • File / New / Win32 Console Application.

  17. Démarrer un projet VC++ 6.0 • Tools / Options / Directories

  18. Démarrer un projet VC++ 6.0 • Project / Settings

  19. Démarrer un projet VS.NET • File / New / Project

  20. Démarrer un projet VS.NET • Tools / Options / Project / VC++ Directories

  21. Démarrer un projet VS.NET • Project / Properties / C/C++

  22. Démarrer un projet VS.NET • Project / Properties / Linker

  23. Démarrer un projet • L’environnement de développement est maintenant configuré correctement;

  24. Développer avec ORBacus Partie 2 – Hello World avec C++

  25. 1) Les interfaces IDL • La première étape du développement consiste à définir les interfaces IDL; • Considérons l’application Hello World dont l’objet offrira 2 méthodes: • Dire allo côté serveur; • Fermer le serveur à distance.

  26. 1) Les interfaces IDL interface Hello //nom de l’interface { void say_hello(); //Méthode dire allo void shutdown(); //Fermer le serveur }; • Une méthode peut retourner une valeur; • Une méthode peut retourner un type complexe de données.

  27. 2) Générer les stubs et squelettes • Un ORB offre toujours une application par ligne de commande pour traduire nos interface IDL en un langage supporté de notre choix; • Nous utilisons ici ORBacus avec C++ dont le traducteur IDL est idl.exe dans le répertoire /bin de la distribution: • idl Hello.idl

  28. 2) Générer les stubs et squelettes • Cette commande génère plusieurs fichiers: • Hello.h • Hello.cpp; • Hello_skel.h • Hello_skel.cpp; • Vous devrez ajouter 2 fichiers qui contiennent l’implantation de votre objet: • Hello_impl.h • Hello_impl.cpp

  29. 2) Générer les stubs et squelettes • Hello est la classe de base définissant l’objet CORBA Hello ainsi que ses références nécessaires. • C’est le stub typique tel que définit. • Précise l’interface de l’objet et ses types de données au bus CORBA; • Aucune modification à apporter manuellement.

  30. 2) Générer les stubs et squelettes • Hello_skel est le squelette de notre objet Hello. • C’est ce qui nous permettra de trouver notre objet sur le bus CORBA (POA ou BOA). • Aucunes modifications à apporter manuellement.

  31. 3) Implémenter nos objets • Vous devez créer Hello_impl.cpp et Hello_impl.h qui contiennent l’implantation de l’objet Hello;

  32. 3) Implémenter nos objets • Hello_impl.h

  33. 3) Implémenter nos objets • Hello_impl.cpp

  34. 3) Implémenter nos objets • Garder dans l’optique que tout le traitement sera effectuer côté serveur; • Par exemple si vous accédez à une base de données, c’est le serveur qui lui accèdera et jamais votre client. Ce dernier va simplement recevoir les résultats du traitement via le bus; • Une méthode peut retourner une valeur ou une structure de données.

  35. 4) Architecture d’un serveur • Un serveur doit inclure tous les fichiers générés par la traduction de/des interfaces: • Le stub; • Le squelette; • L’implémentation. • Le fichier serveur.cpp à été créé manuellement afin de contenir la fonction main().

  36. 4) Architecture d’un serveur • Le fichier serveur.cpp possède 2 fonctions: • int main(int argc, char* argv[], char*[]); • int run(CORBA::ORB_ptr orb, int argc, char* argv[]); • La fonction main() est le point d’entré au programme. Elle initialise le ORB et ses propriétés. L’implémentation est activée par un appel à la fonction run(); • La fonction run() est l’initialisation des fonctionnalités désirées pour l’implémentation de notre ORB;

  37. 4) Architecture d’un serveur • Initialisation et exécution du ORB dans main():

  38. 4) Architecture d’un serveur • La fonction run() effectue l’implémentation du type de serveur désiré tel: • Obtenir la référence du POA racine du ORB; • Créer POA persistant pour notre objet Hello; • Obtenir la référence du Boot Manager; • Initialiser l’implémentation de notre objet Hello sur le POA avec un identificateur permettant au client de trouver l’objet; • Exécuter l’implémentation du ORB.

  39. 4) Architecture d’un serveur • Obtenir référence du POA racine • Créer POA persistant pour l’objet Hello

  40. 4) Architecture d’un serveur • Obtenir référence du Boot Manager • Instancier nos objets sur le bus • Exécuter l’implémentation

  41. 5) Architecture d’un client • Un client doit inclure seulement les stubs des objets qu’il désire utiliser. • Le fichier client.cpp a été créé manuellement afin de contenir la fonction main().

  42. 5) Architecture d’un client • Le fichier client.cpp possède 2 fonctions: • int main(int argc, char* argv[], char*[]) • int run(CORBA::ORB_ptr orb, const char* host, const char* port, int argc, char* argv[]) • La fonction main() est le point d’entré au programme. Elle initialise le ORB et ses propriétés. L’implémentation est activé par un appel à la fonction run(); • La fonction run() détermine le POA racine et retrouve l’objet Hello sur le bus par URL. Elle contient aussi la boucle principale pour les entrées de l’utilisateur;

  43. 5) Architecture d’un client • Initialisation des propriétés et exécution du ORB dans main(): • Host et port ont été obtenu de l’utilisateur…

  44. 5) Architecture d’un client • La fonction run() effectue les opérations suivante pour le client: • Détermine le POA racine; • Trouve l’objet Hello sur le bus par URL Corbaloc; • Instancie un objet Hello; • Appelle les méthodes de l’objet à la demande de l’utilisateur.

  45. 5) Architecture d’un client • Obtenir référence du POA racine • Trouver l’objet Hello et l’instancier: Le URL pour retrouver notre objet Hello:Corbaloc::1.2@127.0.0.1:1234/Hello

  46. 5) Architecture d’un client • Boucle d’interaction avec l’utilisateur:

  47. Destruction du ORB • Dans le main() du client ET du serveur.

  48. Résultat

  49. Note • Une fois compiler avec la distribution optimisée, les applications peuvent être exécuter sur n’importe quelle machine du même OS sans les librairies.

  50. Référence • http://www.orbacus.com/support/new_site/support/manual.jsp

More Related