real time client server communication on web
DESCRIPTION
Le applicazioni web utilizzano il protocollo di comunicazione HTTP che è basato sul meccanismo request/response. Il Client fa una richiesta ad un server che fornisce una risposta. Ma ci sono scenari dove questo non è sufficiente ed è necessario invertire i ruoli. La libreria SignalR consente di ottenere tutto ciò e in questa sessione vi mostreremo com'è facile realizzare applicazioni web real-time col minimo sforzo e il massimo risultato.TRANSCRIPT
Real Time Client-Server Communication on Web
Nicolò [email protected]
blogs.ugidotnet.org/Nick60
Twitter: TPCWare
Se fai una richiesta
Avrai una risposta!
Il protocollo HTTP
• La Request è attivata dal Client• La Response è restituita dal Server
Flusso dei dati • Esempio: il Client richiede i dati al Server
Invertire i ruoli
• E se è il Server a dover chiamare il Client?
Possibili soluzioni:– Polling– Long Polling– HTML5/WebSocket
Polling
1. Il Client chiede al Server se ci sono novità2. Il Server risponde alla richiesta3. Il Client aspetta un lasso di tempo e poi fa una nuova
richiesta
Long Polling
1. Il Client fa la richiesta2. Il Server risponde quando ha novità3. Appena riceve risposta, il client fa una nuova richiesta
HTML5 - WebSockets
• Fanno parte delle nuove specifiche di HTML5• Estendono il protocollo HTTP fornendo il supporto alle
raw sockets• Consentono la comunicazione full-duplex• Traversano gli HTTP proxies
Problemi?
• Polling:Se l’intervallo è breve, troppe richieste inutiliSe l’intervallo è lungo, le informazioni arrivano in ritardo
• Long polling:Il Server deve gestire le richieste in modo asincronoaltrimenti va in saturazione e non accetta altre richieste
• HTML5 – WebSocket:Protocollo di basso livello, suscettibile di cambiamenti
• In generale:Applicazioni real-time o sono intrinsecamente inefficienti o richiedono la scrittura di molto codice
SignalR è la soluzione!• E’ un insieme completo di librerie Client – Server
sviluppate in Javascript sul Client e ASP.NET nel Server per creare applicazioni web interattive tra più utenti in real-time
• E’ una libreria Open Source sviluppata da Microsoft
• Licenza MIT• Si trova su GitHub e si installa con NuGet• Richiede C# , .NET4+ e jQuery
Software Developer on the ASP.NET team, working on NuGet, SignalR and other cool things.
Program Manager at Microsoft on the Visual Studio Web Tooling team.
Punti di forza
• Fornisce una connessione client/server persistente utilizzando il miglior trasporto disponibile
• Offre un unico modello di programmazione indipendente dal tipo di trasporto
• Semplice da configurare e da usare
SignalR packages
• SignalR.Server (Server side components)• SignalR.Js (Javascript client)• SignalR.WebSockets (WebSocket transport)• SignalR.Hosting.AspNet (ASP.NET host)• SignalR.Client.Silverlight (Silverlight client)• SignalR.Client.WP7 (Windows Phone client)• SignalR.Client (.NET client)• …e altri ancora
Broadcast demo
Demo
Riferimenti
• Website: http://signalr.net• GitHub: https://github.com/SignalR• Twitter: @davidfowl
Question Time
Un grazie agli sponsor...