orchestration dactivités web avec hiphop gérard berry chaire algorithmes, machines et langages...

20
Orchestration d’activités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Co ll èg e de Fr

Upload: dorothee-calvez

Post on 03-Apr-2015

108 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

Orchestration d’activités Web avec HipHop

Gérard Berry

Chaire Algorithmes, machines et langages

Collège de France

Cours 7, 28 mai 2013

Page 2: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 2

Page 3: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

3G. Berry, Collège de France 21/05/2013

Page 4: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France

• 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

21/05/2013 4

Que veut dire orchestrer?

Exactement l’objectif d’Esterel, mais en plus ambitieux :intégration dans Hop, récursivité, dynamicité, client / serveur, etc.

Page 5: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 5

Méthode classique, Javascript / HOP

(add-event-listener! ev (lambda (e) ...))

ev (lambda (e) ...)).........

ev

risque d’interférence:listener dans listenersi listener compliqué

seulementsi idle

Page 6: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France

ev1 (lambda (x) ...))ev2 (lambda (x) ...))

21/05/2013 6

L’approche synchrone

ev1

1515

code réactif

ev2

réaction décidée !

machine réactive

séquence, parallélisme, communication, préemptionsynchrone, en temps conceptuellement nul

Page 7: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France

• ReactiveC, F. Boussinot : intégration dans C– successeurs : Junior (Java), SugarCubes, FunLoft, etc.

21/05/2013 7

Précurseurs*

• 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

• Esterel, Lustre, Signal– intégration dans l’environnement non précisée

• Machines d’exécution Esterel (C. André, D. Gaffé)

Page 8: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France

• Status de présence / absence, unique à chaque instant(now& s) ;; expression Hop(pre& s)

21/05/2013 8

Evénements HipHop

(class HipHopEvent ...) ;; similaire aux événements Esterel v7

• 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 (default 0)) (op (default +)))

Page 9: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 9

HipHop Noyau : constructeurs d’ASTstmt :

(nothing&) 0

(emit& event hop*) ! s(v)

(atom& hop)

(pause&) 1

(if& hop stmt stmt) s ? p, q

(seq& stmt+) p ; q

(loop& stmt+) p*

(par& stmt+) p | q

(suspend& event stmt+) s p (trap& trap-ident stmt+) { p }

(exit& trap-ident) k, k 0

(local& (local-sig+) stmt+) s \ p

Page 10: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 10

HipHop dérivé – définitions fonctionnelles

(halt&)

(sustain& event hop)

(await& [ :immediate bool ] delay stmt*)

(abort& [ :immediate bool ] delay stmt+)

(until& [ :immediate bool ] delay stmt+) ;; weak abort

(loop-each& delay stmt+)

(every& [ :immediate bool ] delay stmt+)

(define (sustain& event . hop-list) (loop& (emit& (cons event hop-list) (pause&)))

construit en HOPl’AST de sustain&

Page 11: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

11G. Berry, Collège de France 21/05/2013

(define (repeat& N::int stmt) ;; declare a fresh private Hop counter (let ((count::int N)) ;; install a mark to exit after N steps (trap& end ;; reset the local counter (atom& (set! count 0)) ;; loop forever (loop& ;; execute the user stmt stmt ;; decrement the Hop counter (atom& (set! count (+fx count 1))) (if& (= count 0) ;; the end, escape from the loop (exit& end))))))

Vraie fonction,pas macro !

Page 12: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 12

ABRO paramétrique en HipHop

;; Hop function(define (ABRO& A B R O) (loop-each& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O)))

// Esterel modulemodule ABRO : input A, B, R; output O;

loop { await A || await B }; emit O; each Rend module

Emettre O dès que A et B sont arrivésRéinitialiser le comportement à chaque R

Page 13: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 13

Variante de ABRO

A partir du premier R, émettre O dès que A et B sont arrivésarrê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)))))

Page 14: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 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

Page 15: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 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 comportementsgenpar&, dyngenpar& : calculer l’instruction

dynamiquement au moment même de la réaction

Page 16: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 17

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

(define M (instantiate::HipHopMachine (program P&)))

A

B :: int

MP& : code HipHop

A B val& B

X

Y :: intX Y val& Y

Page 17: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 18

Machines d’exécution – entrées

(hiphop-input! M A)...(hiphop-input! M B 1515)...(hiphop-react!)

(hiphop-input-and-react! M A)

(hiphop-input-and-react! M B 1515)

A

B :: int

X

Y :: int

MP& : code HipHop

A B val& BX Y val& Y

Appel de fonction hiphop-input!dans le code principal ou dans un event-handler

Page 18: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 19

Machines d’exécution - entrées

• Stratégies de gestion des entrées entre deux réactions

A ARRÊT DEMANDÉ : un seul appui suffit à tourner le bit...B Toc : on compte les Toc Toc Toc Toc (hiphop-input! M Toc 3)

A

B :: int

X

Y :: int

MP& : code HipHop

A B val& BX Y val& Y

Page 19: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

G. Berry, Collège de France 21/05/2013 20

Machines d’exécution

• Définition d’un event-listener pour chaque sortie appelé par M si le signal est émis

A

B :: int

X

Y :: int

MP& : code HipHop

A B val& BX Y val& Y

(hiphop-add-event-listener! M X (lambda () (action) ))

(hiphop-add-event-listener! M Y (lambda (V) (action V) ))

Page 20: Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

21G. Berry, Collège de France 21/05/2013

Retour à Manuel Serrano