SlideShare une entreprise Scribd logo
1  sur  35
claudio.pattarello@dotdotnet.org
luca.milan@dotdotnet.org
 Cosa vedremo oggi ?
 Introduzione e concetti
 Event Driven Patterns
 Conversare tra “Componenti”
 Demo Moto GP di AngularJSDay
”Le grandi cose non sono
fatte d'impulso, ma
attraverso una serie di
piccole cose messe
insieme”
Vincent Van Gogh
Un framework Javascript per sviluppare Applicazioni
Web (non Web Sites)
Vedremo come promuovere la modularità delle
applicazioni web tramite l’utilizzo patterns architetturali
guidati da eventi.
Il loro pregio è incentivare il dialogo tra i componenti
dell’applicazione senza introdurre ulteriori livelli di
accoppiamento (maggiore coesione).
Scopriremo inoltre che AngularJS “out of the box” ha
tutto quello che serve per realizzare architetture “event
o message driven”.
Imparare a pensare ad eventi per
sviluppare applicazioni SOLIDE
OBIETTIVO:
MODULARITA’
Infrastruttura / Architettura “CLASSICA”
 Pull System
Request / Response
Client Server
Infrastruttura / Architettura “CLASSICA”
 Pull System
Request / Response
Clients Server
Infrastruttura / Architettura “ad eventi”
 Push System
Message
Clients ServerServiceBus
Message
Message
Infrastruttura / Architettura “ad eventi”
 Pattern publisher / subscriber
Client Server
Subscribe
Infrastruttura / Architettura “ad eventi”
 Pattern publisher / subscriber
Client Server
Infrastruttura / Architettura “ad eventi”
 Pattern publisher / subscriber
Clients Server
Infrastruttura / Architettura “ad eventi”
 Pattern publisher / subscriber
Clients Server
Infrastruttura / Architettura “ad eventi”
 Pattern publisher / subscriber
Clients Server
Message
 Attori:
◦ Server
 Api & Commands: REST via WebApi
 Event Stream: SignalR
◦ Client
 Commands: REST AngularJS ($resource)
 Event Stream: JQuery Proxy for SignalR
 Channel: Service AngularJS ($scope, $emit/$on)
Imparare a pensare ad eventi per
sviluppare applicazioni SOLIDE
FACCIAMO
CONVERSAZIONE!
“Qual è il modo migliore per
condividere informazioni tra
componenti ?”
Ci sono più opzioni in “pista” …
Services
(Singleton)
$scope
(event
system)
$scope
(prototypal
inheritance)
Scope Tree
“Gli scopes sono organizzati in una struttura
gerarchica ed hanno una radice comune: il
$rootScope …”
Questo li rende idonei ad essere usati come un bus per
gli eventi…
Ogni controller ha il
suo scope che eredita
in modo prototipale
dallo scope padre.
Il livello di
annidamento tra gli
scope ricalca l’albero
del DOM …
Grazie alla gerarchia degli scopes possiamo spedire
eventi in qualsiasi e direzione.
$emit(name,args)
$on(name, listener)
Per sfruttare a fondo l’Event System di AngularJS
possiamo usare il pattern publish-subscribe. Grazie a
questo pattern possiamo:
1. Diminuire l’accoppiamento tra i componenti
2. Incapsulare i dettagli legati ai meccanismi di
comunicazione
3. Incrementare modularità, riuso e testabilità
E’ indicato:
 quando abbiamo più “subscribers” in ascolto su un
evento e questi “subscribers” fanno molto più che
portare informazioni sulla “view”;
E’ meno indicato:
 per replicare o sostituire logiche di databinding
all’interno delle direttive;
 per osservare servizi “state based” che vengono
utilizzati per aggiornare la “view”
“E’ un’API che incapsula le logiche dei messaggi
ed espone una coppia di metodi publish e
subscribe per ogni tipologia di messaggio da
inviare”
Ci sono 2 messaggi, uno per il settore e uno lo status del GP
E per ognuno di questi esiste una coppia di metodi pub/sub
Simulazione del moto GP di Ancona
http://angularjsday.azurewebsites.net

Contenu connexe

Similaire à "Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 
SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006
SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006
SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006Emanuele Della Valle
 
2011.06.30 scenari applicativi per il cloud computing
2011.06.30   scenari applicativi per il cloud computing2011.06.30   scenari applicativi per il cloud computing
2011.06.30 scenari applicativi per il cloud computingMarco Parenzan
 
Introduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the Cloud
Introduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the CloudIntroduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the Cloud
Introduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the CloudMarco Parenzan
 
Predictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTPredictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTMarco Parenzan
 
Sviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTSviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTCristiano Costantini
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...Emanuele Della Valle
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
 
Seminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forzaSeminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forzaMauro Fava
 
Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017Bagubits
 
La rivoluzione del web 2.0
La rivoluzione del web 2.0La rivoluzione del web 2.0
La rivoluzione del web 2.0Luca Mascaro
 
Cefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa BifCefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa BifEmanuele Della Valle
 
Web 2.0: le sfide per le moderne dot-com
Web 2.0: le sfide per le moderne dot-comWeb 2.0: le sfide per le moderne dot-com
Web 2.0: le sfide per le moderne dot-comEmanuele Della Valle
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Visualizzazione dei network
Visualizzazione dei networkVisualizzazione dei network
Visualizzazione dei networkmttdlllbr
 

Similaire à "Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture (20)

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Open domus 2016
Open domus 2016Open domus 2016
Open domus 2016
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006
SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006
SWE-ET: la soluzione Italiana alla Semantic Web Service Challenge 2006
 
2011.06.30 scenari applicativi per il cloud computing
2011.06.30   scenari applicativi per il cloud computing2011.06.30   scenari applicativi per il cloud computing
2011.06.30 scenari applicativi per il cloud computing
 
Introduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the Cloud
Introduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the CloudIntroduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the Cloud
Introduzione al Cloud Computing - Edizione 2013 - 2 - Definition of the Cloud
 
Predictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTPredictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoT
 
Sviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTSviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWT
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
 
Il web 2.0
Il web 2.0Il web 2.0
Il web 2.0
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 
Seminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forzaSeminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forza
 
Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017
 
La rivoluzione del web 2.0
La rivoluzione del web 2.0La rivoluzione del web 2.0
La rivoluzione del web 2.0
 
Cefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa BifCefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa Bif
 
Web 2.0: le sfide per le moderne dot-com
Web 2.0: le sfide per le moderne dot-comWeb 2.0: le sfide per le moderne dot-com
Web 2.0: le sfide per le moderne dot-com
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Visualizzazione dei network
Visualizzazione dei networkVisualizzazione dei network
Visualizzazione dei network
 

"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture

  • 2.  Cosa vedremo oggi ?  Introduzione e concetti  Event Driven Patterns  Conversare tra “Componenti”  Demo Moto GP di AngularJSDay
  • 3. ”Le grandi cose non sono fatte d'impulso, ma attraverso una serie di piccole cose messe insieme” Vincent Van Gogh
  • 4. Un framework Javascript per sviluppare Applicazioni Web (non Web Sites)
  • 5. Vedremo come promuovere la modularità delle applicazioni web tramite l’utilizzo patterns architetturali guidati da eventi. Il loro pregio è incentivare il dialogo tra i componenti dell’applicazione senza introdurre ulteriori livelli di accoppiamento (maggiore coesione). Scopriremo inoltre che AngularJS “out of the box” ha tutto quello che serve per realizzare architetture “event o message driven”.
  • 6. Imparare a pensare ad eventi per sviluppare applicazioni SOLIDE
  • 8. Infrastruttura / Architettura “CLASSICA”  Pull System Request / Response Client Server
  • 9. Infrastruttura / Architettura “CLASSICA”  Pull System Request / Response Clients Server
  • 10. Infrastruttura / Architettura “ad eventi”  Push System Message Clients ServerServiceBus Message Message
  • 11. Infrastruttura / Architettura “ad eventi”  Pattern publisher / subscriber Client Server Subscribe
  • 12. Infrastruttura / Architettura “ad eventi”  Pattern publisher / subscriber Client Server
  • 13. Infrastruttura / Architettura “ad eventi”  Pattern publisher / subscriber Clients Server
  • 14. Infrastruttura / Architettura “ad eventi”  Pattern publisher / subscriber Clients Server
  • 15. Infrastruttura / Architettura “ad eventi”  Pattern publisher / subscriber Clients Server Message
  • 16.  Attori: ◦ Server  Api & Commands: REST via WebApi  Event Stream: SignalR ◦ Client  Commands: REST AngularJS ($resource)  Event Stream: JQuery Proxy for SignalR  Channel: Service AngularJS ($scope, $emit/$on)
  • 17. Imparare a pensare ad eventi per sviluppare applicazioni SOLIDE
  • 19. “Qual è il modo migliore per condividere informazioni tra componenti ?” Ci sono più opzioni in “pista” …
  • 22. “Gli scopes sono organizzati in una struttura gerarchica ed hanno una radice comune: il $rootScope …” Questo li rende idonei ad essere usati come un bus per gli eventi…
  • 23. Ogni controller ha il suo scope che eredita in modo prototipale dallo scope padre. Il livello di annidamento tra gli scope ricalca l’albero del DOM …
  • 24. Grazie alla gerarchia degli scopes possiamo spedire eventi in qualsiasi e direzione. $emit(name,args) $on(name, listener)
  • 25. Per sfruttare a fondo l’Event System di AngularJS possiamo usare il pattern publish-subscribe. Grazie a questo pattern possiamo: 1. Diminuire l’accoppiamento tra i componenti 2. Incapsulare i dettagli legati ai meccanismi di comunicazione 3. Incrementare modularità, riuso e testabilità
  • 26. E’ indicato:  quando abbiamo più “subscribers” in ascolto su un evento e questi “subscribers” fanno molto più che portare informazioni sulla “view”; E’ meno indicato:  per replicare o sostituire logiche di databinding all’interno delle direttive;  per osservare servizi “state based” che vengono utilizzati per aggiornare la “view”
  • 27. “E’ un’API che incapsula le logiche dei messaggi ed espone una coppia di metodi publish e subscribe per ogni tipologia di messaggio da inviare”
  • 28.
  • 29.
  • 30. Ci sono 2 messaggi, uno per il settore e uno lo status del GP E per ognuno di questi esiste una coppia di metodi pub/sub
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. Simulazione del moto GP di Ancona http://angularjsday.azurewebsites.net

Notes de l'éditeur

  1. Secondo me questaèl’approcciosu cui poggianoAngularJS e le Applicazioni Web Moderne. In entrambiicasisitratta di far collaborare I moduli dell’applicazionetralorosenzaintrodurreaccoppiamentiforti.