SlideShare a Scribd company logo
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”
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
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
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
Simulazione del moto GP di Ancona
http://angularjsday.azurewebsites.net

More Related Content

PPTX
Fe02 ria con breeze e knockout
PDF
Architetttura Della Soluzione
PPTX
Web Api – The HTTP Way
PPTX
Azure WebSites for Developers
PPTX
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
PDF
Java scriptpatterns
PPT
Loosely Coupled Complexity - Unleash the power of your domain model
PPT
SUE AGILE Architettura (Italiano)
Fe02 ria con breeze e knockout
Architetttura Della Soluzione
Web Api – The HTTP Way
Azure WebSites for Developers
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Java scriptpatterns
Loosely Coupled Complexity - Unleash the power of your domain model
SUE AGILE Architettura (Italiano)

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

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

"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”
  • 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
  • 35. Simulazione del moto GP di Ancona http://angularjsday.azurewebsites.net

Editor's Notes

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