Real time client server communication on web

Preview:

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.

Citation preview

Real Time Client-Server Communication on Web

Nicolò Carandininicolo.carandini@domusdotnet.org

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...

Recommended