PyExp. Python pour les Expériences. Laurent Pointal - LURE (CNRS-CEA-MEN) laurent.pointal@lure.u-psud.fr



Documents pareils
CORBA. (Common Request Broker Architecture)

Architecture distribuée

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Remote Method Invocation en Java (RMI)

Le cadre des Web Services Partie 1 : Introduction

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI le langage Java XII-1 JMF

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Avantic Software Présentation de solutions GED pour mobiles (Gestion Electronique de Documents)

NFP111 Systèmes et Applications Réparties

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Utilisation du réseau dans le test et la mesure

Serveur de travail collaboratif Michaël Hoste -

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Nouvelles Plateformes Technologiques

Le stockage local de données en HTML5

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Intergiciel - concepts de base

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Composants Logiciels. Le modèle de composant de CORBA. Plan

Meta Object Facility. Plan

Héritage presque multiple en Java (1/2)

Implémentation libre de Liberty Alliance. Frédéric Péters

Projet de Veille Technologique

WEA Un Gérant d'objets Persistants pour des environnements distribués

OPC Factory Server- Réglage des paramètres de communication

Initiation à JAVA et à la programmation objet.

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Module BD et sites WEB

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Programmation Objet Java Correction

CORBA haute performance

Chapitre 2. Classes et objets

Prise en compte des ressources dans les composants logiciels parallèles

Architectures n-tiers Intergiciels à objets et services web

Guide d'installation. Release Management pour Visual Studio 2013

Prototypage électronique

Projet gestion d'objets dupliqués

La mesure des écarts en Sciences de l'ingénieur

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Procédés d intégration

Généralités sur le Langage Java et éléments syntaxiques.

CAHIER DE S CHARGE S Remote Workload Manager

Guide d'utilisateur. Câble adaptateur USB2.0 vers IDE et SATA. Modèle : DA-70202

Projet Personnalisé Encadré PPE 2

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Télécom Nancy Année

contact@nqicorp.com - Web :

Cours de Génie Logiciel

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Exécutif temps réel Pierre-Yves Duval (cppm)

Java - RMI Remote Method Invocation. Java - RMI

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Découvrez notre solution Alternative Citrix / TSE

Développer avec les technologies ESRI. ESRI Developer Network (EDN) Gaëtan LAVENU ESRI France Jérémie MAJEROWICZ ESRI France

Formation en Logiciels Libres. Fiche d inscription

Java 7 Les fondamentaux du langage Java

Architectures web/bases de données

Mise en œuvre des serveurs d application

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Une solution opensource d'affichage dynamique - XIBO

Programmation par composants (1/3) Programmation par composants (2/3)

ZABBIX est distribué sous licence GNU General Public License Version 2 (GPL v.2).

Le modèle client-serveur

Catalogue & Programme des formations 2015

Introduction aux intergiciels

La continuité de service

Conception des systèmes répartis

Microsoft infrastructure Systèmes et Réseaux

Journée Josy/PLUME. Outils logiciels libres utiles à tout ASR SAMBA. Maurice Libes. Centre d'océanologie de Marseille UMS 2196 CNRS

Vulnérabilités et sécurisation des applications Web

Vulgarisation Java EE Java EE, c est quoi?

Application web de gestion de comptes en banques

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Backup Exec 2014 Management Pack for Microsoft SCOM. - Guide de l'utilisateur

Conservation des documents numériques

Retrospect 7.7 Addendum au Guide d'utilisation

Introduction à OPC. OPC est une spécification récente mais qui a rapidement évolué car elle est bâtie sur la spécification COM/DCOM.

Systeme d'exploitation

Clé Flash USB2.0 Acer

CS REMOTE CARE - WEBDAV

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Introduction à NetCDF

Yann BECHET 32 ans 8 ans d expérience yann@bechet.org

Architectures Web Services RESTful

La carte à puce. Jean-Philippe Babau

RTDS G3. Emmanuel Gaudin

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Éléments d'architecture des ordinateurs

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»


Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

2 Chapitre 1 Introduction

Description de la formation

Introduction aux «Services Web»

Vers une fédération de Cloud Académique dans France Grilles J. Pansanel pour le groupe FG-Cloud (M. Airaj, C. Cavet, V. Hamar, M. Jouvin, C.

Assurez-vous que votre site est conforme aux caractéristiques suivantes avant la date d'installation.

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Transcription:

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 1 PyExp Python pour les Expériences Laurent Pointal - LURE (CNRS-CEA-MEN) laurent.pointal@lure.u-psud.fr

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 2 Présentation Situation du contexte. Problématique. Objectifs & structure de PyExp. Liaisons avec des composants externes. [démonstration].

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 3 Le LURE * Sources nationales de Rayonnement Synchrotron 400 personnes 1800 utilisateurs par an 40 postes expérimentaux (50 montages) 3200 heures de fonctionnement/an *Laboratoire pour l'utilisation du Rayonnement Electromagnétique http://www.lure.u-psud.fr/ Laboratoire mixte CNRS + CEA + Ministère de l'education Nationale. Environ 230 Ingénieurs, Techniciens et Administratifs, 110 chercheurs, 70 thésards et postdoctoraux. Collaborations avec ~30 laboratoires extétieurs et ~20 partenaires industriels. 1/3 d'utilisateurs étrangers.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 4 Installations Sources Accélérateur de Particules Photons émis par Rayonnement Synchrotron Anneau de Stockage Photons (énergie infra-rouge à X) Mise en forme du faisceau Mesures Avant Echantillon Mesures Après Expériences Conditionnement Programme pilotage expérience.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 5 Problématique Applications multi-expériences. Profils d'utilisateurs variés. Besoins applicatifs divers. Matériels disparates. Fonctionnement par scripts. Stabilité (applications tournant 24h/24). Prévention des pannes (logs...). Multi-expériences: ciblé au LURE d'ici la fermeture: 2~3 postes. sur SOLEIL: plus de 20 postes à terme (et on espère bien voir le système repris ailleurs) Profils d'utilisateurs: connaissances ou non en informatique préférence GUI / ligne de commande utilisateur occasionnel / périodique / permanent Besoins applicatifs: expériences standard, répétitives expériences très changeantes (protocole expérimental, matériels utilisés) à venir sur SOLEIL, expériences à réglage automatique (asservissements) Matériels disparates: on peut définir un standard pour les périphériques courants (moteurs, compteurs)... mais recherche oblige, des matériels spécifiques avec des caractériqtiques précises permettant de répondre à des besoins sont là.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 6 Choix de Python Accès facile. Moderne (OOP, exceptions multithreading...). Extensible. Dynamique. Portable. Libre (gratuit et open-source). Communauté dynamique et en croissance. Accès Facile: Les chercheurs doivent pouvoir apprende le langage et écrire des scripts, pour exprimer des logiques expérimentales (et les réaliser), pour piloter de nouveaux matériels. Moderne: Facilite la conception de l'application autour des objets représentant les concepts liés aux expériences, standardise (et force) le traitement des erreurs, autorise les traitements parallèles (gestion de plusieurs instruments). Extensible: Nous permet d'écrire nos extensions pour les fonctionnalités où Python n'a pas de module standard (ex. accès bus instrumentation GPIB). Dynamique: Nous permet de charger les modules nécessaires en fonction des besoins de l'expérience, permet aux utilisateurs de définir leurs propres modules. Portable: Permet l'utilisation sous Windows et Linux principalement. URLs: Site principal de Python: http://www.python.org/ Collection de liens (dont pas mal en français): http://www.rimbault.net/python/ Où Eric S. Raymond explique pourquoi (et comment) il est passé à Python: http://www.linuxjournal.com/article.php?sid=3882 Présentation du langage: http://www.linux-center.org/articles/9812/python.html

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 7 Objectifs de PyExp Scripts pour la logique expérimentale, Abstraction grandeurs physiques de l'expérience, Macros-instructions, Vision séquentielle du processus logique, masquage du multithread, synchronisations... Adaptation à différents matériels / protocoles, Possibilité d'interface graphique, Extensible, multi-plateforme, libre... Les scripts expérimentaux doivent pouvoir être écrits par deschercheurs aussi bien que par des informaticiens. Les macros-instructions doivent permettre d'exprimer des séquences de logique expérimentale récurrentes, et de les paramétrer.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 8 Structure de PyExp Interface Utilisateur (graphique ou ligne de commande) Tracé Courbes Macro-instructions Application Extérieure Abstraction Grandeurs Physiques Système de pilotage Existant Contrôle d'equipements Pilotage de Matériels Physiques Différents profils d'utilisateurs, certainspréfèrent la GUI, d'autres ne jurent que par la ligne de commande. Déport du tracé des courbes (et éventuellement des pré-traitements) vers outils externes: pas notre métier, logiciels existants très bien et connus par les chercheurs. Système de graphe d'acteurs (grandeurs, équipements, matériels) pour: implémenter l'abstraction des grandeurs physiques et les relations entre ces grandeurs, les équipements complexes contrôlés, et les matériels physiques pilotés. masquer la réalisation des opérations dans des threads concurrents. Nécessité de pouvoir se connecter à des systèmes existants (pas uniquement notre InfoExp), pour éviter d'avoir à coder, pour permettre l'utilisation de pyexp hors du LURE (...SOLEIL). Intérêt de Python et de ses capacités d'intégration/agrégation de technologies.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 9 Le Cœur de PyExp Grandeur Energie Temps Compteur Courant Equipement Adaptation Comptage Matériel Cptr Marque α Picoampèremètre Marque β Plus de détails sur: http://www.esrf.fr/news/taco-tango/taco-tango.html Exemple très simplifié. Dans la réalité, PyExp devrait ammener à des graphes nettement plus important. C'est ce système d'arborescence, accompagné d'envoi de messages, qui est utilisé pour masquer le multithreading. Partant des noeuds désignés pour une requête d'opération, celle-ci est préparée en étant transmise entre les noeuds du graphe, les noeuds finaux générant des objets ActionRequest qui sont remontés à la source de l'appel. Les ActionRequest sont alors regroupés en liste par noeud cible, et chaque liste est envoyée au noeud correspondant dans le cadre d'un thread séparé. Au niveau des matériels, nécessité de pouvoir se lier avec différents systèmes de contrôles existants (si l'on veut pouvoir diffuser le logiciel) : TACO (RPC), TANGO (CORBA), ACE (CORBA), EPICS (Socket)... et avec des interfaces en tous genres (série, GPIB - General Purpose Instrument Bus,...)

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 10 Liaisons Exécutables Binaires Locaux (Python) C/C++ Python Java Fortran, Delphi... Protocoles de communication (objets distribués, RPC...) Python -Import direct de modules: import xxx -PYRO (Python Remote Object): http://pyro.sourceforge.net/ -DOPY (Distributed Object for Python): http://www.users.cloud9.net/~proteus/dopy/welcome.html Binaires -Simple exécution: Module os. Fonctions exec..., fork, spawn..., startfile, system. -Avec redirection / capture des I/O: Module popen2. -Création d'un module d'extension Python spécifique... si le binaire offre un moyen de communiquer. C/C++ -Module d'extension "à la main". -SWIG (Simplified Wrapper and Interface Generator): à partir du header d'une librairie, génération du code source d'un module d'extension Python. http://www.swig.org/ -Module calldll sous Windows. -Extension avec Python: Embeded Python Java -Jython: Interpréteur Python écrit en Java. http://www.jython.org/ -JPE (Java Python Extension): accès à C-Python pour Java, accès à Java-Swing pour C-Python. http://sourceforge.net/projects/jpe Fortran, Delphi... -F2PY (Fortran to Python Interface Generator). http://cens.ioc.ee/projects/f2py2e/ -Python for Delphy.http://www.multimania.com/marat/delphi/python.htm -Extension avec Python (appel de l'api C d'embeded Python). -Prototoles standards (ex. Python <=> VB avec COM/DCOM). Protocoles de communication Ecriture de serveurs et/ou de clients à partir de ces protocoles, indépendance vis à vis du langage de l'autre partie, indépendance vis à vis de la plateforme de l'autre partie (sauf COM & Co). -CORBA: OmniORBpy (http://www.uk.research.att.com/omniorb/omniorbpy/index.html), ILU (ftp://ftp.parc.xerox.com/pub/ilu/ilu.html), PyORBit (http://orbit-python.sault.org/), Fnorb (http://www.fnorb.org/). -Windows: COM / DCOM / Active X: Extension Win32. http://aspn.activestate.com/aspn/python -SOAP: SOAP.py (http://sourceforge.net/projects/pywebsvcs/), SOAPy (http://soapy.sourceforge.net/). -XML-RPC: py-xmlrpc (http://sourceforge.net/projects/py-xmlrpc/), xmlrpclib (http://www.pythonware.com/products/xmlrpc/). -email, ftp, http...: Librairies standard. -Autres: Ecriture module d'extension.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 11 CORBA - Interface/Implémentation Client Compilateur d'interface langage α Interface Contractuelle (OMG-IDL) Serveur Compilateur d'interface langage β Souche Squelette Code Client Code Objet Serveur CORBA des concepts à la pratique http://corbaweb.lifl.fr/corba_des_concepts_a_la_pratique/index.html Avec CORBA, l'interface contractuelle, qui permet aux clients et objets serveurs de communiquer, est définie en OMG-IDL (Object Management Group - Interface Definition Langage). L'utilisation de CORBA avec Python est assez simple. On évite tous les problèmes mémoire (propriété des données) du C++.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 12 CORBA - Appels Client Processus 1 sur machine a Appel de méthode Référence Objet ORB du Client Serveur Processus 2 sur machine b Implémentation Servant ORB du Serveur Bus à Objet CORBA Fonctionnement simplifié (manque l'adaptateur d'objet - POA, l'activation...).

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 13 Exemple Simple - IDL /* DemoLoria.idl */ #pragma prefix "pointal.org" module DemoLoria { interface Demo { void Afficher (in string phrase) ; string Questionner (in string question) ; double Sommer (in double v1, in double v2) ; } ; } ; Compilation de l'idl: omniidl -bpython DemoLoria.idl Génération de: DemoLoria/, DemoLoria POA/, DemoLoria_idl.py On définit un module (espace de noms), ainsi qu'une interface (classe) avec des méthodes. L'interface peut aussi posséder des attributs en lecture et/ou écriture. Il est aussi possible de définir des types et des constantes en IDL.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 14 import sys from omniorb import CORBA import DemoLoria POA import CosNaming Code Serveur 1/2 class MaDemo_i (DemoLoria POA.Demo) : def Afficher(self, phrase): print "Affichage:",phrase def Questionner(self, question): return raw_input ("Question: %s"%question) def Sommer(self, v1,v2): print "Somme de",v1,"et",v2 return v1+v2 orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("rootpoa") Liste des modules importés, remarquer CORBA, DemoLoria POA qui a été généré à partir de l'idl. CosNaming est le service de noms CORBA. On définit une classe chargée de la réalisation du service, qui reprend les méthodes définies dans l'interface IDL (il y a un document sur le mapping OMG-IDL ==> Python sur le site CORBA de l'omg). Ensuite on initialise l'orb, et on accès au POA (Portable Object Adapter, chargé de faire le lien entre le côté objet distribué CORBA et l'implémentation).

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 15 Code Serveur 2/2 demoi = MaDemo_i () # Implementation du service demoo = demoi._this () # Objet corba rootcontext = orb.resolve_initial_references ("NameService")._narrow(CosNaming.NamingContext) name = [CosNaming.NameComponent("DemoLoria", "Object")] try : rootcontext.bind(name, demoo) except CosNaming.NamingContext.AlreadyBound: rootcontext.rebind(name, demoo) poamanager = poa._get_the_poamanager() poamanager.activate() orb.run() On crée une instance de la classe chargée de la réalisation du service, et on accède à son correspondant CORBA (vie _this()). Ensuite, on accède au service de noms et on y enregistre l'objet CORBA, afin que le client puisse le trouver. Finalement, on active l'adaptateur d'objet, puis on se bloque en laissant l'orb traiter les requêtes.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 16 import sys from omniorb import CORBA import DemoLoria import CosNaming Code Client 1/2 orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("rootpoa") rootcontext = orb.resolve_initial_references ("NameService")._narrow(CosNaming.NamingContext) name = [CosNaming.NameComponent("DemoLoria", "Object")] demoo = rootcontext.resolve(name)._narrow (DemoLoria.Demo) Remarquer au niveau de l'import, que pour le client on importe le module DemoLoria qui a été généré à partir de l'idl. La phase d'initialisation de l'orb est la même que pour le serveur. On se connecte au service de noms CORBA, et cette fois on récupère la référence à l'objet serveur Demo, on transtype cette référence dans le bon type CORBA.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 17 Code Client 2/2 demoo.afficher("bonjour") print "Ca marche->",demoo.questionner ("Est-ce que ca marche?") v1=float (input ("Valeur 1:")) v2=float (input ("Valeur 2:")) print "Somme:",demoo.Sommer(v1,v2) print "Termine." On utilise l'objet simplement, comme s'il était local.

PyExp - Laurent Pointal Séminaire QSL du LORIA - 24 janvier 2002 - Langage de scripts et assemblage de composants 18 Démos Client/serveur de l'exemple. Même client, serveur en C++ avec GUI (MFC). Liaison via CORBA d'un script Python avec le logiciel Igor Pro, réalisé pour l'interface de tracé de courbes de PyExp.