real time client server communication on web

17
Real Time Client- Server Communication on Web Nicolò Carandini nicolo.carandini@domusdo tnet.org blogs.ugidotnet.org/ Nick60 Twitter: TPCWare

Upload: nicolo-carandini

Post on 17-Jun-2015

835 views

Category:

Technology


4 download

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

Page 1: Real time client server communication on web

Real Time Client-Server Communication on Web

Nicolò [email protected]

blogs.ugidotnet.org/Nick60

Twitter: TPCWare

Page 2: Real time client server communication on web

Se fai una richiesta

Page 3: Real time client server communication on web

Avrai una risposta!

Page 4: Real time client server communication on web

Il protocollo HTTP

• La Request è attivata dal Client• La Response è restituita dal Server

Page 5: Real time client server communication on web

Flusso dei dati • Esempio: il Client richiede i dati al Server

Page 6: Real time client server communication on web

Invertire i ruoli

• E se è il Server a dover chiamare il Client?

Possibili soluzioni:– Polling– Long Polling– HTML5/WebSocket

Page 7: Real time client server communication on web

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

Page 8: Real time client server communication on web

Long Polling

1. Il Client fa la richiesta2. Il Server risponde quando ha novità3. Appena riceve risposta, il client fa una nuova richiesta

Page 9: Real time client server communication on web

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

Page 10: Real time client server communication on web

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

Page 11: Real time client server communication on web

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.

Page 12: Real time client server communication on web

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

Page 13: Real time client server communication on web

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

Page 14: Real time client server communication on web

Broadcast demo

Demo

Page 15: Real time client server communication on web

Riferimenti

• Website: http://signalr.net• GitHub: https://github.com/SignalR• Twitter: @davidfowl

Page 16: Real time client server communication on web

Question Time

Page 17: Real time client server communication on web

Un grazie agli sponsor...