1 / 20

Orchestration d’activités Web avec HipHop

Orchestration d’activités Web avec HipHop. Gérard Berry Chaire Algorithmes, machines et langages. Collège de France Cours 7, 28 mai 2013. Que veut dire orchestrer?. Avoir une vision logique unifiée des événements à traiter événements d’IHM chez le client

halle
Download Presentation

Orchestration d’activités Web avec HipHop

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. Orchestration d’activités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

  2. G. Berry, Collège de France

  3. G. Berry, Collège de France

  4. Que veut dire orchestrer? • Avoir une vision logique unifiée des événements à traiter • événements d’IHM chez le client • événements provenant de services • événements provenant d’objets sur le Web • événements temporels • événements engendrés par Hop • Définir comment réagir au cours du temps à ces événements, en fonction de la mémoire des événements passés • Eviter tous les problèmes de synchronisation de threads / event-listeners grâce à l’hypothèse synchrone Exactement l’objectif d’Esterel, mais en plus ambitieux : intégration dans Hop, récursivité, dynamicité, client / serveur, etc. G. Berry, Collège de France

  5. Méthode classique, Javascript / HOP (add-event-listener! ev (lambda (e) ...)) seulement si idle ev risque d’interférence: listener dans listener si listener compliqué ev (lambda (e) ...)) ... ... ... G. Berry, Collège de France

  6. L’approche synchrone machine réactive ev1  (lambda (x) ...)) ev2  (lambda (x) ...)) ev1 ev2   1515 réaction décidée ! code réactif séquence, parallélisme, communication, préemption synchrone, en temps conceptuellement nul G. Berry, Collège de France

  7. Précurseurs* • Esterel, Lustre, Signal • intégration dans l’environnement non précisée • ReactiveC, F. Boussinot : intégration dans C • successeurs : Junior (Java), SugarCubes, FunLoft, etc. • Machines d’exécution Esterel (C. André, D. Gaffé) • Reactive ML, L. Mandel : intégration dans CAML • signaux comme valeurs de première classe • récursivité, dynamicité, etc. • Timed CCP, V. Saraswat : • Intégration dans la programmation par contraintes parallèles • contrôle beaucoup plus implicite *plus exactement : plagiats par anticipation G. Berry, Collège de France

  8. Evénements HipHop (class HipHopEvent ...) ;; similaire aux événements Esterel v7 • Status de présence / absence, unique à chaque instant (now& s) ;; expression Hop (pre& s) • valeur de type quelconque, unique à chaque instant (val& s) ;; expression Hop (preval& s) • fonction de combinaison des valeurs émises simultanément (class CountEvent::HipHopEvent (status (default #f)) (init(default0)) (op (default +))) G. Berry, Collège de France

  9. HipHop Noyau : constructeurs d’AST stmt : (nothing&) 0 (emit& eventhop*) ! s(v) (atom& hop) (pause&) 1 (if& hopstmt stmt) s ? p, q (seq& stmt+) p; q (loop& stmt+) p* (par& stmt+) p|q (suspend& event stmt+) sp (trap& trap-identstmt+) { p } (exit& trap-ident) k, k0 (local& (local-sig+) stmt+) s \ p G. Berry, Collège de France

  10. HipHop dérivé – définitions fonctionnelles (halt&) (sustain& eventhop) (await& [ :immediatebool]delaystmt*) (abort& [ :immediatebool]delaystmt+) (until& [ :immediatebool]delaystmt+) ;; weakabort (loop-each& delaystmt+) (every& [ :immediatebool]delaystmt+) (define (sustain& event .hop-list) (loop& (emit& (cons eventhop-list) (pause&))) construit en HOP l’AST de sustain& G. Berry, Collège de France

  11. (define (repeat& N::int stmt) ;; declare a fresh private Hop counter (let ((count::intN)) ;; install a mark to exit after N steps (trap& end ;; reset the local counter (atom& (set! count 0)) ;; loopforever (loop& ;; execute the user stmt stmt ;; decrement the Hop counter (atom& (set! count (+fxcount1))) (if& (= count 0) ;; the end, escape from the loop (exit& end)))))) Vraie fonction, pas macro ! G. Berry, Collège de France

  12. ABRO paramétrique en HipHop Emettre O dès que A et B sont arrivés Réinitialiser le comportement à chaque R // Esterel module module ABRO : input A, B, R; output O; loop { await A || await B }; emit O; each R end module ;; Hop function (define (ABRO& A B R O) (loop-each& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O))) G. Berry, Collège de France

  13. Variante de ABRO A partir du premier R, émettre O dès que A et B sont arrivés arrêter tout si A et B en même temps (define (ABRObis& A B R O) (trap& Done (every& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O) (if& (and (now& A) (now& B)) (exit& Done))))) G. Berry, Collège de France

  14. Modularité héritée de Hop (let ((s (instantiate::HipHopEvent))) (par& (emitter& s) (receiver& s))) (define (emitter& s) ... (emit& s) ...) (define (receiver& s) ... (await& s) ...) s G. Berry, Collège de France

  15. Instructions calculées (define (await-last-of-list& . sig-list) (par& (map await& sig-list))) (await-last-of-list& A B C) (par& (await& A) (await& B) (await& C)) Définition dynamique de comportements genpar&, dyngenpar& : calculer l’instruction dynamiquement au moment même de la réaction G. Berry, Collège de France

  16. Machines d’exécution • But : gère les événements d’entrée et de sortie • But : déclenche la réaction sur appel externe M A X P& : code HipHop A X B Y val& B val& Y B :: int Y :: int (define M (instantiate::HipHopMachine(program P&))) G. Berry, Collège de France

  17. Machines d’exécution – entrées Appel de fonction hiphop-input! dans le code principal ou dans un event-handler M A X P& : code HipHop A X Y B val& Y val& B B :: int Y :: int (hiphop-input! MA) ... (hiphop-input! MB 1515) ... (hiphop-react!) (hiphop-input-and-react! MA) (hiphop-input-and-react! MB 1515) G. Berry, Collège de France

  18. Machines d’exécution - entrées • Stratégies de gestion des entrées entre deux réactions M A X P& : code HipHop A X B Y val& B val& Y B :: int Y :: int A ARRÊT DEMANDÉ: un seul appui suffit à tourner le bit ... B Toc : on compte les Toc Toc TocToc (hiphop-input! MToc 3) G. Berry, Collège de France

  19. Machines d’exécution • Définition d’un event-listener pour chaque sortie appelé par M si le signal est émis M A X P& : code HipHop A X Y B val& B val& Y B :: int Y :: int (hiphop-add-event-listener! MX (lambda () (action))) (hiphop-add-event-listener! MY (lambda (V) (action V))) G. Berry, Collège de France

  20. Retour à Manuel Serrano G. Berry, Collège de France

More Related