you’re already a web site dev you’re interested in more simply making your web sites more...

39
ASP.NET SignalR: Real-time Web for On-Time Applications Anthony Clayton .NET Senior Architect – Bennett Adelson @anthonyclayton [email protected]

Upload: rosaline-daniel

Post on 12-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

ASP.NET SignalR:Real-time Web for On-Time ApplicationsAnthony Clayton• .NET Senior Architect – Bennett Adelson@anthonyclayton [email protected]

Page 2: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Who am I?

Page 3: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Who are you?

Page 4: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

We’ll Discuss…

Core Concepts SignalR in action

(demos!) It’s only for the web,

right!?

Page 5: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

You’re already a Web Site Dev

You’re interested in more simply making your web sites more responsive

If you’re not already hosting sites in Windows Azure, what’s the value proposition? Ubiquitous & ready-to-go ecosystem Pre-made plumbing (security, data, etc) Pay as you go, use what you need

Assumptions

Page 6: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

SignalR is an abstraction that intelligently decides how to enable real-time over HTTP.

What is it?

Page 7: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Currently using polling Client to client communication Dashboards and monitoring Collaboration Progress reporting Gaming

When would I use it?

Page 8: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Durable messaging

When would I NOT use it?

Page 9: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Server-side ASP.NET, self-hosted service

Client-side Web and others

Where does it fit in my application?

Page 10: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Simplicity Reach Performance

Why should I use it?

Page 11: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Simplicity

Page 12: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Connection Represents a simple endpoint for sending single-recipient, grouped or

broadcast messages

Hub A more high-level pipeline built upon the Connections API that allows

your client and server to call methods on each other directly

Backplane Allows you to scale your application to multiple servers.

3 Core Concepts

Page 13: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

SignalR on Old-school Servers & ClientsWhen some lower-common denominator polling mechanism is neededWeb

Server

HTML

Client

Got Data?Got Data?

Got Data?

Got Data?

Got Data?Got Data?

Got Data?

Got Data?

Here’s some data

Page 14: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

SignalR on Modern Servers & ClientsWhen WebSockets or some other real-time layer is supportedWeb

Server

HTML

Client

Can you real-time?

YES!

Let’s do this!

Page 15: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Demo – Connections

Page 16: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

The format of the actual message sent needs to be specified.

The developer prefers to work with a messaging and dispatching model rather than a remote invocation model.

An existing application that uses a messaging model is being ported to use SignalR.

Persistent Connections

Page 17: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Demo – Hit Counter

Page 18: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Create OWIN Startup class Create Hub class Create HTML file

Include JQuery and SignalR Javascript libraries Create connection Create Hub proxy Create client-side handlers Start the connection When connection is complete, wire up client-side events

Using a Hub - Steps

Page 19: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

More about Hubs

A hub is a .NET class that inherits fromMicrosoft.AspNet.SignalR.Hub

Since Hubs are called on the client by name, the name can be customized if needed

The Clients property of a Hub class exposes dynamic properties useful for targeting specific clientsHub classes also have virtual methods useful for responding to connected/disconnected events

Page 20: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Sending messages to all connected clients

Tom

John

SamHub

Clients.All.doWork()

Page 21: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Sending messages to the calling client

Tom

John

SamHub

Clients.Caller.doWork()

Page 22: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Sending messages to other connected clients

Tom

John

SamHub

Clients.Others.doWork()

Page 23: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Sending messages to specific users

Tom

John

SamHub

Clients.Users(“Sam”).doWork()

Page 24: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Demo – Move Shape

Page 25: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Demo – Stock Ticker

Page 26: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Reach

Page 27: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Windows Server 2012 Windows Server 2008 r2 Windows 8 Windows 7 Windows Azure IIS 8 or IIS 8 Express, IIS 7 and 7.5.

Servers Supported

Page 28: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Internet Explorer 8+ (Modern, Desktop, Mobile)

Chrome, Firefox, Safari (Windows and Mac) current version – 1

Opera – Windows only Android browser Windows Desktop (WinForms, WPF,

Silverlight) Windows Store Applications Windows Phone Xamarin platforms (iOS, Android)

Clients Supported

Page 29: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

JavaScript Client .NET Client

SignalR JavaScript & .NET Client Parity

Page 30: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Demo – WinForms, WPF

Page 31: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Security

Page 32: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Allowing Authorized Users Only

Page 33: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Controlling Access by Role

Page 34: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Performance & Scale

Page 35: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

How do Backplanes Work?What does SignalR do without a backplane?

Web Server B

Web Server A

Page 36: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

How do Backplanes Work?Here’s how the Backplane solves the problem

Web Server A

Web Server B

Backplane

Page 37: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Recap

Page 38: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

Q & A

[email protected]

Page 39: You’re already a Web Site Dev  You’re interested in more simply making your web sites more responsive  If you’re not already hosting sites in

March .NET SIG3/10/2015Bennett Adelson Web Team

Lessons Applying Responsive Design to Our Company Website