SlideShare a Scribd company logo
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
ASP01 - Web in real
time con SignalR
Nicolò Carandini
n.carandini@tpcware.com - @tpcware
http://blog.tpcware.com/
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Grazie a
Sponsor
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Agenda
 Comunicare in Real Time
 HTTP & HTLM5/WebSockets
 ASP.NET SignalR
 Casi d’uso
 Demo
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Comunicazione full duplex con HTTP ?
Il protocollo HTTP prevede che il Client faccia una richiesta e
il Server dia una risposta. Il Server non ha modo di mandare
un messaggio al Client di sua iniziativa.
INTERNET
REQUEST
INTERNET
RESPONSE
<HTML> Page
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Comunicazione real time tra clienti
Se voglio comunicare tra vari client, quando il server riceve
dati da un client, deve poter inviare dati agli altri client:
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Possibili soluzioni
Polling
Long Polling
SERVER
CLIENT
tempo
Request
Response
Request
Response
Request
Response
Request
Response
Request
Response
Intervallo di polling Intervallo di polling Intervallo di polling Intervallo di polling
SERVER
CLIENT
tempo
Request
Response
Request
Response
Request
Response
Response
Request
Request
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Controindicazioni?
• Polling:
Se l’intervallo è breve, troppe richieste inutili
Se l’intervallo è lungo, le informazioni arrivano in ritardo
• Long polling:
Il Server deve gestire le richieste in modo asincrono
altrimenti va in saturazione e non accetta altre richieste
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
HTLM5/WebSockets
• Fanno parte delle specifiche di HTML5
• Estendono il protocollo HTTP fornendo il supporto alle raw sockets
• Consentono la comunicazione full-duplex
• Traversano gli HTTP proxies (solo se i proxies sono "moderni"…)
Client Proxy Server / Firewall Origin Server
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Tutto risolto?
Non proprio, perché HTML5/WebSocket è un protocollo di
basso livello che richiede la scrittura di molto codice per
implementare le funzionalità richieste da una applicazione
real-time.
Inoltre le condizioni d’uso delle WebSockets sono molto
restrittive.
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Condizioni d’uso delle WebSockets
Funzionano quando:
• Il Web Server le supporta
• Il Web browser le supporta
• Il load balancer/reverse proxy le supporta
• Il client proxy server/NAT le supporta
• Tutto ciò che sta tra il client e il server le supporta
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
ASP.NET SignalR
SignalR è la libreria ASP.NET che rende incredibilmente
semplice aggiungere funzionalità Real-Time alle applicazioni
web
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Punti di forza
• Implementa, ove possibile, WebSockets.
• Fa il downgrade in modo trasparente alle altre tecniche di
polling
• Fornisce una API di alto livello, molto semplice da usare,
per fare RPC tra server e client
• Offre funzionalità di gestione degli eventi di connessione
e sconnessione e la gestione delle autorizzazioni
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Diagramma architetturale di SignalR
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
SignalR API
PersistentConnection
 Implementa le funzionalità minime necessarie
 Consente l’invio e la ricezione di stringhe
 Broadcast a tutti, a gruppi o a singoli utenti
 Connessione, riconnessione e disconnessione
Hub
 Utilizza la PersistentConnection
 Consente l’uso delle RPC da client a server e viceversa
 Genera automaticamente i proxy RPC per i web client
(in JavaScript)
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
PersistentConnection Vs. Hub
Nella maggior parte dei casi si usa l’Hub.
La PersistentConnection viene utilizzata nei seguenti casi:
• Si usa un messaggio con formato custom
• Si preferisce lavorare tramite invio di messaggi invece di
utilizzare RPC (remote Procedure Call)
• Occorre fare il porting a SignalR di un’applicazione
preesistente che è basta sull’invio di messaggi e non usa
le RPC
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
RPC (Remote Procedure Call)
Si possono chiamare funzioni JavaScript lato client da
codice .NET lato server, e viceversa
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Per fare cosa?
Oltre ai classici scenari di chat, SignalR è perfetto
per tutti quei casi in cui si abbia necessità di
update ad alta frequenza, come nei giochi in
real-time o implementare funzionalità di
comunicazione full duplex all’interno di un
applicativo.
Interessante notare che Visual Studio 2013 usa
SignalR per implementare la funzionalità di
Browser Link.
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Chat: JabbR
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Real Time Game: ShootR
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Browser Link in Visual Studio 2013
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Client disponibili
• JavaScript(jQuery)
• .NET 4.x
• Silverlight 5
• Windows Phone Silverlight
• Windows Store apps
• Windows Phone Store apps
• iOS
• Android
• Java
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Performances
Throughtput
• Un singolo server riesce a gestire da 100.000 a 500.000 messaggi al
secondo.
• Con un’occupazione di memoria estremamente ridotta.
Scalabilità
• Fully async
• Circa 1.000 connessioni per server
• Supporta la scalabilità orizzontale utilizzando un message bus (Service
Bus, Redis, SQL)
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Scalabilità
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Riferimenti
ASP.NET SignalR
http://www.asp.net/signalr
JabbR
https://jabbr.net
ShootR
http://shootr.signalr.net
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
demo
Titolo demo
#CDays14 – Roma - 23, 24 e 25 Settembre 2014
Q&A
Tutto il materiale di questa sessione su
http://www.communitydays.it/
Lascia il feedback su questa sessione dal sito,
potrai essere estratto per i nostri premi!
Seguici su
Twitter @CommunityDaysIT
Facebook http://facebook.com/cdaysit
#CDays14

More Related Content

Similar to Web in real time con signalR

WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1
Dan Ardelean
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Par-Tec S.p.A.
 
Swagger pertutti
Swagger pertuttiSwagger pertutti
Swagger pertutti
Nicolò Carandini
 
SignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancavaSignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancava
Andrea Tosato
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @Codemotion
Roberto Pozzi
 
Xamarin Robotics
Xamarin RoboticsXamarin Robotics
Xamarin Robotics
Fabio Cozzolino
 
Cmdays mxm ugc
Cmdays mxm ugcCmdays mxm ugc
Cmdays mxm ugc
Lorenzo Glielmi
 
Musixmatch Cloud: Microsoft Azure Media Services and UGC Content
Musixmatch Cloud: Microsoft Azure Media Services and UGC ContentMusixmatch Cloud: Microsoft Azure Media Services and UGC Content
Musixmatch Cloud: Microsoft Azure Media Services and UGC Content
Loreto Parisi
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
Soluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
Valerio Versace
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
Emerasoft, solutions to collaborate
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloud
Davide Benvegnù
 
Ibm bluemix r pozzi
Ibm bluemix r pozziIbm bluemix r pozzi
Ibm bluemix r pozzi
Roberto Pozzi
 
Mobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con XamarinMobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con Xamarin
Nicolò Carandini
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
Roberto Messora
 
Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...
Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...
Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...
Aruba S.p.A.
 
Tutto il Cloud di Seeweb
Tutto il Cloud di SeewebTutto il Cloud di Seeweb
Tutto il Cloud di Seeweb
seeweb
 
TFS - Quale source control
TFS - Quale source controlTFS - Quale source control
TFS - Quale source control
Gian Maria Ricci
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
Marcello Teodori
 

Similar to Web in real time con signalR (20)

WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Swagger pertutti
Swagger pertuttiSwagger pertutti
Swagger pertutti
 
SignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancavaSignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancava
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @Codemotion
 
Xamarin Robotics
Xamarin RoboticsXamarin Robotics
Xamarin Robotics
 
Cmdays mxm ugc
Cmdays mxm ugcCmdays mxm ugc
Cmdays mxm ugc
 
Musixmatch Cloud: Microsoft Azure Media Services and UGC Content
Musixmatch Cloud: Microsoft Azure Media Services and UGC ContentMusixmatch Cloud: Microsoft Azure Media Services and UGC Content
Musixmatch Cloud: Microsoft Azure Media Services and UGC Content
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloud
 
Ibm bluemix r pozzi
Ibm bluemix r pozziIbm bluemix r pozzi
Ibm bluemix r pozzi
 
Mobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con XamarinMobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con Xamarin
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
 
Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...
Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...
Workshop 'Il Cloud di Aruba: efficienza e flessibilità a servizio delle start...
 
Tutto il Cloud di Seeweb
Tutto il Cloud di SeewebTutto il Cloud di Seeweb
Tutto il Cloud di Seeweb
 
TFS - Quale source control
TFS - Quale source controlTFS - Quale source control
TFS - Quale source control
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 

More from Nicolò Carandini

Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
Nicolò Carandini
 
The absolute need of Secure Http
The absolute need of Secure HttpThe absolute need of Secure Http
The absolute need of Secure Http
Nicolò Carandini
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
Nicolò Carandini
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
Nicolò Carandini
 
Code review e pair programming con Visual Studio Live Share
Code review e pair programming con Visual Studio Live ShareCode review e pair programming con Visual Studio Live Share
Code review e pair programming con Visual Studio Live Share
Nicolò Carandini
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
Nicolò Carandini
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
Nicolò Carandini
 
The Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure GalaxyThe Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure Galaxy
Nicolò Carandini
 
Swagger loves WebAPI
Swagger loves WebAPISwagger loves WebAPI
Swagger loves WebAPI
Nicolò Carandini
 
Xamarin Workbooks
Xamarin WorkbooksXamarin Workbooks
Xamarin Workbooks
Nicolò Carandini
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
Nicolò Carandini
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
Nicolò Carandini
 
Windows 10 design
Windows 10 designWindows 10 design
Windows 10 design
Nicolò Carandini
 
Windows 10 IoT
Windows 10 IoTWindows 10 IoT
Windows 10 IoT
Nicolò Carandini
 
Universal Apps localization and globalization
Universal Apps localization and globalizationUniversal Apps localization and globalization
Universal Apps localization and globalization
Nicolò Carandini
 
Applicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaApplicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e Katana
Nicolò Carandini
 
Azure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET FrameworkAzure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET Framework
Nicolò Carandini
 
Xaml introduction
Xaml introductionXaml introduction
Xaml introduction
Nicolò Carandini
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWin
Nicolò Carandini
 
Web api 2.0
Web api 2.0Web api 2.0
Web api 2.0
Nicolò Carandini
 

More from Nicolò Carandini (20)

Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
The absolute need of Secure Http
The absolute need of Secure HttpThe absolute need of Secure Http
The absolute need of Secure Http
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
 
Code review e pair programming con Visual Studio Live Share
Code review e pair programming con Visual Studio Live ShareCode review e pair programming con Visual Studio Live Share
Code review e pair programming con Visual Studio Live Share
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
The Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure GalaxyThe Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure Galaxy
 
Swagger loves WebAPI
Swagger loves WebAPISwagger loves WebAPI
Swagger loves WebAPI
 
Xamarin Workbooks
Xamarin WorkbooksXamarin Workbooks
Xamarin Workbooks
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 
Windows 10 design
Windows 10 designWindows 10 design
Windows 10 design
 
Windows 10 IoT
Windows 10 IoTWindows 10 IoT
Windows 10 IoT
 
Universal Apps localization and globalization
Universal Apps localization and globalizationUniversal Apps localization and globalization
Universal Apps localization and globalization
 
Applicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaApplicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e Katana
 
Azure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET FrameworkAzure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET Framework
 
Xaml introduction
Xaml introductionXaml introduction
Xaml introduction
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWin
 
Web api 2.0
Web api 2.0Web api 2.0
Web api 2.0
 

Web in real time con signalR

  • 1. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 ASP01 - Web in real time con SignalR Nicolò Carandini n.carandini@tpcware.com - @tpcware http://blog.tpcware.com/
  • 2. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Grazie a Sponsor
  • 3. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Agenda  Comunicare in Real Time  HTTP & HTLM5/WebSockets  ASP.NET SignalR  Casi d’uso  Demo
  • 4. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Comunicazione full duplex con HTTP ? Il protocollo HTTP prevede che il Client faccia una richiesta e il Server dia una risposta. Il Server non ha modo di mandare un messaggio al Client di sua iniziativa. INTERNET REQUEST INTERNET RESPONSE <HTML> Page
  • 5. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Comunicazione real time tra clienti Se voglio comunicare tra vari client, quando il server riceve dati da un client, deve poter inviare dati agli altri client:
  • 6. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Possibili soluzioni Polling Long Polling SERVER CLIENT tempo Request Response Request Response Request Response Request Response Request Response Intervallo di polling Intervallo di polling Intervallo di polling Intervallo di polling SERVER CLIENT tempo Request Response Request Response Request Response Response Request Request
  • 7. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Controindicazioni? • Polling: Se l’intervallo è breve, troppe richieste inutili Se l’intervallo è lungo, le informazioni arrivano in ritardo • Long polling: Il Server deve gestire le richieste in modo asincrono altrimenti va in saturazione e non accetta altre richieste
  • 8. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 HTLM5/WebSockets • Fanno parte delle specifiche di HTML5 • Estendono il protocollo HTTP fornendo il supporto alle raw sockets • Consentono la comunicazione full-duplex • Traversano gli HTTP proxies (solo se i proxies sono "moderni"…) Client Proxy Server / Firewall Origin Server
  • 9. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Tutto risolto? Non proprio, perché HTML5/WebSocket è un protocollo di basso livello che richiede la scrittura di molto codice per implementare le funzionalità richieste da una applicazione real-time. Inoltre le condizioni d’uso delle WebSockets sono molto restrittive.
  • 10. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Condizioni d’uso delle WebSockets Funzionano quando: • Il Web Server le supporta • Il Web browser le supporta • Il load balancer/reverse proxy le supporta • Il client proxy server/NAT le supporta • Tutto ciò che sta tra il client e il server le supporta
  • 11. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 ASP.NET SignalR SignalR è la libreria ASP.NET che rende incredibilmente semplice aggiungere funzionalità Real-Time alle applicazioni web
  • 12. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Punti di forza • Implementa, ove possibile, WebSockets. • Fa il downgrade in modo trasparente alle altre tecniche di polling • Fornisce una API di alto livello, molto semplice da usare, per fare RPC tra server e client • Offre funzionalità di gestione degli eventi di connessione e sconnessione e la gestione delle autorizzazioni
  • 13. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Diagramma architetturale di SignalR
  • 14. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 SignalR API PersistentConnection  Implementa le funzionalità minime necessarie  Consente l’invio e la ricezione di stringhe  Broadcast a tutti, a gruppi o a singoli utenti  Connessione, riconnessione e disconnessione Hub  Utilizza la PersistentConnection  Consente l’uso delle RPC da client a server e viceversa  Genera automaticamente i proxy RPC per i web client (in JavaScript)
  • 15. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 PersistentConnection Vs. Hub Nella maggior parte dei casi si usa l’Hub. La PersistentConnection viene utilizzata nei seguenti casi: • Si usa un messaggio con formato custom • Si preferisce lavorare tramite invio di messaggi invece di utilizzare RPC (remote Procedure Call) • Occorre fare il porting a SignalR di un’applicazione preesistente che è basta sull’invio di messaggi e non usa le RPC
  • 16. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 RPC (Remote Procedure Call) Si possono chiamare funzioni JavaScript lato client da codice .NET lato server, e viceversa
  • 17. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Per fare cosa? Oltre ai classici scenari di chat, SignalR è perfetto per tutti quei casi in cui si abbia necessità di update ad alta frequenza, come nei giochi in real-time o implementare funzionalità di comunicazione full duplex all’interno di un applicativo. Interessante notare che Visual Studio 2013 usa SignalR per implementare la funzionalità di Browser Link.
  • 18. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Chat: JabbR
  • 19. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Real Time Game: ShootR
  • 20. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Browser Link in Visual Studio 2013
  • 21. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Client disponibili • JavaScript(jQuery) • .NET 4.x • Silverlight 5 • Windows Phone Silverlight • Windows Store apps • Windows Phone Store apps • iOS • Android • Java
  • 22. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Performances Throughtput • Un singolo server riesce a gestire da 100.000 a 500.000 messaggi al secondo. • Con un’occupazione di memoria estremamente ridotta. Scalabilità • Fully async • Circa 1.000 connessioni per server • Supporta la scalabilità orizzontale utilizzando un message bus (Service Bus, Redis, SQL)
  • 23. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Scalabilità
  • 24. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Riferimenti ASP.NET SignalR http://www.asp.net/signalr JabbR https://jabbr.net ShootR http://shootr.signalr.net
  • 25. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 demo Titolo demo
  • 26. #CDays14 – Roma - 23, 24 e 25 Settembre 2014 Q&A Tutto il materiale di questa sessione su http://www.communitydays.it/ Lascia il feedback su questa sessione dal sito, potrai essere estratto per i nostri premi! Seguici su Twitter @CommunityDaysIT Facebook http://facebook.com/cdaysit #CDays14

Editor's Notes

  1. Slide da mostrare prima di iniziare la sessione – non rimuovere!
  2. Ultima slide, obbligatoria