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

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Active Directory Windows 2003 Server
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
Formation universitaire à .NET: Introduction à C#
IntroductionArchitecturesPropriétésTâches ANT Apports par rapport à uPortal Un seul fichier de configuration Ajout de librairies Ajout de CAS comme méthode.
Introduction au langage C++
VLC UMVF Fiche Veille Statut Logiciel gratuit, open source
Architecture CORBA réseau Objet Corba Application Serveur
Appels de fonctions natives sous C#
Exposé de Système - Informatique et Réseau
(Classes prédéfinies – API Java)
C.
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction à la POO: Les classes vs les objets
Sécurité Informatique
Active Directory Windows 2003 Server
Principes de programmation (suite)
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Développement Mobile : Android
Les Services Web Avec.NET version 1.1. Un service Web en bref… Méthodes ou objets accessible à distance via SOAP (Simple Object Access Protocol ); SOAP.
Module 1 : Préparation de l'administration d'un serveur
« Les Mercredis du développement » Retour dexpérience / Framework de dév. Présenté par Grégory Renard [Rédo] Responsable Développement.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Algorithmique et Programmation
Java Remote Method Invocation (RMI)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
.Net Remoting.
Interopérabilité JOnAS - CORBA
Des outils pour le développement logiciel
Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique et de génie logiciel Développer.
Structures de données IFT-2000
Création d'un projet Web avec Netbeans
Console MMC de Windows 2000 Présenté par Suzanne Savoie Cours 4.
Web dynamique PhP + MySQL AYARI Mejdi 2006
Module 5 : Publication de ressources dans Active Directory
CORBA (Common Request Broker Architecture)
Programmer en langage c
Programmation Système et Réseau (sous Linux)
Présentation de CORBA et de IIOP
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Création d’un serveur de mise à jour
Android Kévin Giroux.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Argc et argv Utilisation des paramètres de la ligne de commande.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Introduction à Visual Studio C++ (VC++)
SIO SI2 : Support Réseau des Accès Utilisateurs
Windows 2003 Server Modification du mode de domaine
La mémoire virtuelle Dans laquelle un ordinateur exécute des programmes dont les besoins en mémoires dépassent la mémoire disponible. Par exemple des.
Les surcharges d'opérateurs
ISBN Chapitre 10 L'implémentation des sous- programmes.
Module 3 : Création d'un domaine Windows 2000
AFPA CRETEIL 14-1 Windows NT Environnement des utilisateurs Chapitre 14.
Les RPC remote procedure call
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
En route vers le déploiement . . .
Chapitre VII Techniques plus avancées à travers le concept de classe.
Master 1 SIGLIS Systèmes d’Information pour l’entreprise – Java RMI Stéphane Tallard Mise en œuvre de l’exemple Bonjour RMI Master 1 SIGLIS1 Intégration.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Citrix ® Presentation Server 4.0 : Administration Module 9 : Déploiement d'applications.
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Java Remote Method Invocation
FACTORY systemes Module 2 Section 1 Page 2-3 Installation d’Industrial SQL FORMATION InSQL 7.0.
FACTORY systemes Module 6 Section 1 Page 6-3 Les ActiveX FORMATION INTOUCH 7.0.
Transcription de la présentation:

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++; Possibilité de le compiler avec information de débogage ou optimisé; Les deux compilations sont misent à votre disposition.

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.

La distribution ORBacus Les exécutables binaire importants (/bin): idl.exeTraducteur IDL à C++; jidl.exeTraducteur IDL à Java; hidl.exeTraducteur IDL à HTML (pour documentation); regupdate.exeÉcrire une configuration au niveau des registres Windows;

La distribution ORBacus Les exécutables binaire importants (/bin): nteventservice.exeService événement pour Windows 2000/NT4 ntnameservice.exeService nommage pour Windows 2000/NT4 propserv.exeService propriétés

La distribution ORBacus Les librairies importantes (/lib): LibrairieOptimiséeDébogage ORBob.libobd.lib JTCjtc.libjtcd.lib OCIOCI_udp.libOCI_udpd.lib ÉvénementCosEvent.libCosEventd.lib NommageCosNaming.libCosNamingd.lib

La distribution ORBacus Les en-têtes importantes (/include): DescriptionEn-tête Bus CORBACORBA.h Localisation d’objets (IONA)BootManager.h Open Communication Interface (OCI)OCI.h / OCI_IIOP.h Service ÉvénementCosEvent__.h / _skel.h Service NommageCosNaming.h / _skel.h Service PropertiesProperties.h

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).

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 port 5000 ooc.orb.oa.conc_model=thread_pool ooc.orb.oa.thread_pool=5

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

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!

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

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.

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 et.NET 2003.

Démarrer un projet VC File / New / Win32 Console Application.

Démarrer un projet VC Tools / Options / Directories

Démarrer un projet VC Project / Settings

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

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

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

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

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

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

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.

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.

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

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

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.

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.

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

3) Implémenter nos objets Hello_impl.h

3) Implémenter nos objets Hello_impl.cpp

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.

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().

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;

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

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.

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

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

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().

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;

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…

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.

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:

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

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

Résultat

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.

Référence