you’re already a web site dev you’re interested in more simply making your web sites more...
TRANSCRIPT
ASP.NET SignalR:Real-time Web for On-Time ApplicationsAnthony Clayton• .NET Senior Architect – Bennett Adelson@anthonyclayton [email protected]
Who am I?
Who are you?
We’ll Discuss…
Core Concepts SignalR in action
(demos!) It’s only for the web,
right!?
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
SignalR is an abstraction that intelligently decides how to enable real-time over HTTP.
What is it?
Currently using polling Client to client communication Dashboards and monitoring Collaboration Progress reporting Gaming
When would I use it?
Durable messaging
When would I NOT use it?
Server-side ASP.NET, self-hosted service
Client-side Web and others
Where does it fit in my application?
Simplicity Reach Performance
Why should I use it?
Simplicity
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
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
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!
Demo – Connections
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
Demo – Hit Counter
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
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
Sending messages to all connected clients
Tom
John
SamHub
Clients.All.doWork()
Sending messages to the calling client
Tom
John
SamHub
Clients.Caller.doWork()
Sending messages to other connected clients
Tom
John
SamHub
Clients.Others.doWork()
Sending messages to specific users
Tom
John
SamHub
Clients.Users(“Sam”).doWork()
Demo – Move Shape
Demo – Stock Ticker
Reach
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
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
JavaScript Client .NET Client
SignalR JavaScript & .NET Client Parity
Demo – WinForms, WPF
Security
Allowing Authorized Users Only
Controlling Access by Role
Performance & Scale
How do Backplanes Work?What does SignalR do without a backplane?
Web Server B
Web Server A
How do Backplanes Work?Here’s how the Backplane solves the problem
Web Server A
Web Server B
Backplane
Recap
Q & A
March .NET SIG3/10/2015Bennett Adelson Web Team
Lessons Applying Responsive Design to Our Company Website