Presentation is loading. Please wait.

Presentation is loading. Please wait.

IoT with SignalR & .NET Gadgeteer

Similar presentations

Presentation on theme: "IoT with SignalR & .NET Gadgeteer"— Presentation transcript:

1 IoT with SignalR & .NET Gadgeteer
Internet of Things & .NET Gadgeteer & Microsoft SignalR Mirco Vanini Microsoft® MVP Windows Embedded

2 Agenda Perché real-time e come ? SignalR Connections and Hubs Clients Demo Q&A Links

3 Perché real-time e come ?
Gli utenti vogliono le ultime informazioni, ORA ! Twitter – live searches/updates Stock streamers Auctions Live scores Real-time notifications Interactive games Collaborative apps Live user analytics

4 Perché real-time e come ?
HTTP is an old beast… Never designed for real-time communications Web is request-response Web is stateless HTML5 WebSockets to the rescue, right? Extension to HTTP Provide raw sockets over HTTP Full-duplex Traverses proxies It’s still a draft… Not every proxy server supports it Not every webserver supports it Not every browser supports it They are raw sockets!

5 Perché real-time e come ?
Come implementare il real-time con HTTP: Polling. Long Polling. Forever Frame. Server Sent Events

6 Perché real-time e come ?
Polling: the stubborn approach Server Response Request Client delay Time: requests event ‘n’ seconds (fixed time) Twitter clients

7 Perché real-time e come ?
Polling High overhead on requests: headers and such… High overhead on response: same as before… High latency. Waste of bandwith. Waste of resources.

8 Perché real-time e come ?
Long Polling: the kind gentleman approach Server Response Request Client Variable delay Time: requests event ‘n’ seconds (variable) Facebook chat

9 Perché real-time e come ?
Long Polling (Hanging GET) High overhead on requests: headers and such… High overhead on response: same as before… Medium latency. Waste less of bandwith. Waste of resources. Better than the previous one: less requests

10 Perché real-time e come ?
Forever Frame Server HTTP/ OK Content-Type: text/plain Transfer-Encoding: chunked Server tells client that response is chuncked Client keeps connection open untill server closes it Server pushes data to the client followed by \0 Consumes server threads <script>eval("... ")</script>\0 <script>eval("... ")</script>\0 Client \0. \0. Client.", "width": "800" }

11 Perché real-time e come ?
Server-Sent Events Server-Sent Events (SSE) are a standard describing how servers can initiate data transmission towards clients once an initial client connection has been established. They are commonly used to send message updates or continuous data streams to a browser client and designed to enhance native, cross-browser streaming through a JavaScript API called EventSource, through which a client requests a particular URL in order to receive an event stream. Stream Updates with Server-Sent Events

12 Real-time: How to survive ?
So many options and a big Headache !

13 SignalR Persistent Connection Abstraction communication library.
Abstracts protocol and transfer (choses the best one). A single programming model (a unified development experience). Extremely simple to use. Server-side it can be hosted in different «environments» (ASP.NET, console apps, windows services, etc…). Client-side there’s support for: Javascript clients, .NET clients, WP; provide by the community: iOS, Android.

14 Try WebSocket then fallback to:
SignalR Works everywhere !!! Try WebSocket then fallback to: Server Sent Events Forever Frame Long Polling Bet to keep the logic connection up include retry logic Scale out to web-farms

15 SignalR Complete rewrite of the internals for 1.0.0 Very hight performance on a single box ’s of messages per seconds Very low memory overhead Full async 1000’s of connection per server Cross-platform: run it on OSX or Linux with Mono Supported part of ASP.NET family

16 SignalR Persistent Connections: «Low level» API, manages the connection and the «raw» stream of data. Hubs: «High level» API, provide advanced support for internal routing (calling functions on server & clients), connection and disconnection tracking, grouping etc… Automatic client proxy generation (JavaScript)

17 SignalR Install-Package Microsoft.AspNet.SignalR
Install-Package Microsoft.AspNet.SignalR.Sample

18 SignalR packages Core Meta package Hosts
Microsoft.AspNet.SignalR.Core: Server side components needed to build SignalR endpoints Meta package Microsoft.AspNet.SignalR: - A meta package that brings in everything you need to run it on IIS and ASP.NET Hosts Microsoft.AspNet.SignalR.SystemWeb - Pulls in the required packages to host SignalR in ASP.NET (via OWIN ASP.NET host) Microsoft.AspNet.SignalR.Owin - OWIN* host for SignalR * OWIN stands for “Open Web Interface for .NET” and it is a specification for the communication between .NET Web Server and Web applications.

19 SignalR packages Clients Scaleout Buses Sample
Microsoft.AspNet.SignalR.Js - Javascript client for SignalR Microsoft.AspNet.SignalR.Client - .NET client for SignalR (includes WinRT, Windows Phone 8 and Silverlight5 clients) Scaleout Buses Microsoft.AspNet.SignalR.Redis - Redis scaleout for SignalR Microsoft.AspNet.SignalR.ServiceBus - Service bus scaleout for SignalR Sample Microsoft.AspNet.SignalR.Sample - A sample stock ticker you can quickly and easily bring into your app to get a working sample up and running.

20 Demo Web Plant Monitor PlantHub PlantMonitor PlantManager Plant Device PlantCommand PlantData TcpCommandListener

21 Demo Data Flow HUB Device Page Page Page updatePlaintData SendCommand
21000 HUB data Device command 22000 command data updatePlaintData SendCommand Page Page Page

22 Q&A

23 Links Getting Started with ASP.NET SignalR ASP.NET SignalR
Building Real-time Web Apps with ASP.NET SignalR Engaging the Realtime Web with SignalR SignalR. Code, not toothpaste.

24 Contatti Blog Web

Download ppt "IoT with SignalR & .NET Gadgeteer"

Similar presentations

Ads by Google