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?
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
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
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 from Microsoft.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 clients Hub classes also have virtual methods useful for responding to connected/disconnected events
Sending messages to all connected clients Clients.All.doWork()
Sending messages to the calling client Clients.Caller.doWork()
Sending messages to other connected clients Clients.Others.doWork()
Sending messages to specific users Clients.Users(“Sam”).doWork()
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
Allowing Authorized Users Only
Controlling Access by Role
Lessons Applying Responsive Design to Our Company Website