SlideShare une entreprise Scribd logo
1  sur  40
Alex Konduforov
About me
 Live in Kharkov
 Work at AltexSoft
 Blogger (merle-amber.blogspot.com)
 Speaker at different conferences

and .NET user groups
 Kharkov AI club co-organizer
Web evolution
Event-based, real-time UI

Partial page updates (Ajax), RIA

Dynamic pages, forms

Static HTML pages
Users Want the
Latest Info
NOW!
Social networks
Auctions
Stock tickers
Web chats
Other applications
 Live scores
 Real-time notifications
 Interactive games
 Collaborative apps

 Live user analytics
 etc.
Standard solutions
 Frequent Polling
 Long polling
 Server-Sent events (HTML5)
 WebSocket (HTML5)
Polling
 Get updates frequently using Ajax requests

Pros:
 --Cons:
 Delay in results
 Wastes bandwidth & latency
Long polling
 Similar to usual polling (Ajax requests)
 Request waits longer (1-2 minutes)

Pros:
 Lower load on server
 No delays
Cons:
 Consumes server threads & connection resources
Server-Sent events
 HTML5, works over HTTP
 EventSource JavaScript API
 Content-type: text/event-stream

Pros:
 No need to reconnect
 No need in a special protocol or server implementation
Cons:
 Works in server-t0-client direction
WebSocket
 HTML5, new protocol (ws:// and wss://) on top of TCP

Pros:
 Full-duplex persistent connection (both ways)
Cons:
 Require Web Socket protocol support on client (IE10)
 Require Web Socket protocol support on server (IIS8)
What to do?
WebSocket

Best solution

Not supported on all
browsers and server

Server-Sent events + Very good
Ajax to send data
Long Polling
Not so good

Not supported in IE
(damn!)
Supported everywhere

Mix

Do I need to implement
it on my own???

Very good
Superman SignalR to the rescue!
Authors

Damian Edwards

David Fowler
What is SignalR?
 Official MS technology to build real-time multi-user

ASP.NET applications: http://signalr.net/
 Out-of-box solution that consists of server and client
side
 Abstraction over the set of transports
 Open-source solution available on GitHub that can be
installed via NuGet
Transports priority
WebSockets

Server-Sent events

Forever Frame (IE hack)

Long Polling
Architecture
Client side
JS, .NET/WinRT, WP, Silverlight, iOS/Android

Hub API

PersistentConnection API
Hubs
 High-level API

 Similar to Controller (actions, thread per call)
Supported scenarios
 Client calling the server
 Server calling clients (all, group, one)
 State round-tripping between client and server
 Binding complex objects (JSON)

 Detecting connect, disconnect and reconnect clients
 Broadcasting from outside of a Hub
 Async scenarios (return Task/Task<T> to client)
Server calling the client
 dynamic Clients property

 JSON serialization
Managing Groups
 Add/remove connections to groups
Broadcasting from outside
 Notify clients from another server-side code
JavaScript client
 $.connection.hub


connection for all hubs (url points to /signalr)

 $.connection.hub.id


client id for the hub connection

 $.connection.hub.start()


starts the connection for all hubs

 $.connection.{hubname}


access a client side hub from the generated proxy
Exposing methods on the client
 The JavaScript client can declare methods that the

server can invoke:
 myHub.{method} = callback
 declares a function the server can invoke.
 method - name of the client side method
 callback - function to execute when the server invokes
the method
JavaScript example
Asynchronous execution
DEMO
Authentication
 Uses ASP.NET authentication mechanisms
 Provides the Authorize attribute for Hubs
 Forms and Windows authentications

 Certificates are available as well
Authentication
 Connection token uniquely identifies clients
Security
 Cross-Site Request Forgery (CSRF) prevention
 Disable cross domain requests
 Pass connection token in query string, not cookie
 Verify connection token
 If authenticated user changes,

SignalR requires a re-connection
Configuring SignalR
Set in IConfigurationManager:
Settings

Description

ConnectionTimeout amount of time to leave a connection
open (110 sec default)

Default value

110 seconds

DisconnectTimeout

amount of time to wait after a
20 seconds
connection goes away before raising the
disconnect event

HeartBeatInterval

interval for checking the state of a
connection

KeepAlive

amount of time to wait before sending a 30 seconds
keep alive packet over an idle
connection. Set to null to disable keep
alive

10 seconds
SignalR and web farm
 Azure Service Bus
 Windows Server Service Bus
 SQL Server
 Redis
SignalR over Redis
 Step 1


Download and install Redis as Windows service

 Step 2


Install-Package SignalR.Redis

 Step 3
New features in v2.0
 .NET 4.5 only!
 iOS and Android support via Xamarin
 Portable .NET clients
 Self hosting package
 Backwards compatibility server support

 Cross domain support
 Easier unit testing
 JavaScript error handling

 New HubException exception
Safe to use?
 Version 2.0 released
 Dynamically evolving
 Proven and stable technology
 Used in many real-time .NET applications

 Open-source
Materials
 https://github.com/SignalR
 http://jabbr.net
 http://www.hanselman.com/blog/CategoryView.aspx?cate

gory=SignalR
 http://www.asp.net/signalr/overview/signalr-20
 http://merle-amber.blogspot.com/2012/11/real-timeaspnet-signalr.html
Thanks for listening!
 merle-amber.blogspot.com
 aikharkov.wordpress.com
 @konduforov

31337

Contenu connexe

Tendances

Tendances (20)

Automation Testing using Selenium
Automation Testing using SeleniumAutomation Testing using Selenium
Automation Testing using Selenium
 
REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
Kong API Gateway
Kong API Gateway Kong API Gateway
Kong API Gateway
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
 
Api testing
Api testingApi testing
Api testing
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
 
React Native - Getting Started
React Native - Getting StartedReact Native - Getting Started
React Native - Getting Started
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Introduction To Dotnet
Introduction To DotnetIntroduction To Dotnet
Introduction To Dotnet
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
Rest API
Rest APIRest API
Rest API
 
Kong API
Kong APIKong API
Kong API
 
Web Services
Web ServicesWeb Services
Web Services
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQ
 
Progressive Web-App (PWA)
Progressive Web-App (PWA)Progressive Web-App (PWA)
Progressive Web-App (PWA)
 
Ajax ppt
Ajax pptAjax ppt
Ajax ppt
 
An Introduction To Automated API Testing
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API Testing
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
 

En vedette

Real time websites and mobile apps with SignalR
Real time websites and mobile apps with SignalRReal time websites and mobile apps with SignalR
Real time websites and mobile apps with SignalRRoy Cornelissen
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияAlexey Kachayev
 
ELEIÇÕES 2012 - ASTORGA: Toninho 31123
 ELEIÇÕES 2012 - ASTORGA: Toninho 31123 ELEIÇÕES 2012 - ASTORGA: Toninho 31123
ELEIÇÕES 2012 - ASTORGA: Toninho 31123Joao Carlos Passari
 
Real time web applications with SignalR (BNE .NET UG)
Real time web applications with SignalR (BNE .NET UG)Real time web applications with SignalR (BNE .NET UG)
Real time web applications with SignalR (BNE .NET UG)brendankowitz
 
Building Realtime Web Applications With ASP.NET SignalR
Building Realtime Web Applications With ASP.NET SignalRBuilding Realtime Web Applications With ASP.NET SignalR
Building Realtime Web Applications With ASP.NET SignalRShravan Kumar Kasagoni
 
«Real Time» Web Applications with SignalR in ASP.NET
«Real Time» Web Applications with SignalR in ASP.NET«Real Time» Web Applications with SignalR in ASP.NET
«Real Time» Web Applications with SignalR in ASP.NETAlessandro Giorgetti
 
SignalR. Code, not toothpaste - TechDays Belgium 2012
SignalR. Code, not toothpaste - TechDays Belgium 2012SignalR. Code, not toothpaste - TechDays Belgium 2012
SignalR. Code, not toothpaste - TechDays Belgium 2012Maarten Balliauw
 
Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008maddinapudi
 
Module 4: Introduction to ASP.NET 3.5 (Material)
Module 4: Introduction to ASP.NET 3.5 (Material)Module 4: Introduction to ASP.NET 3.5 (Material)
Module 4: Introduction to ASP.NET 3.5 (Material)Mohamed Saleh
 
Asp.net Training at NCrypted Learning Center
Asp.net Training at NCrypted Learning CenterAsp.net Training at NCrypted Learning Center
Asp.net Training at NCrypted Learning CenterNCrypted Learning Center
 
Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)
Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)
Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)Mohamed Saleh
 

En vedette (20)

NLP Project Full Cycle
NLP Project Full CycleNLP Project Full Cycle
NLP Project Full Cycle
 
SignalR
SignalRSignalR
SignalR
 
Real time websites and mobile apps with SignalR
Real time websites and mobile apps with SignalRReal time websites and mobile apps with SignalR
Real time websites and mobile apps with SignalR
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использования
 
ELEIÇÕES 2012 - ASTORGA: Toninho 31123
 ELEIÇÕES 2012 - ASTORGA: Toninho 31123 ELEIÇÕES 2012 - ASTORGA: Toninho 31123
ELEIÇÕES 2012 - ASTORGA: Toninho 31123
 
Real time web applications with SignalR (BNE .NET UG)
Real time web applications with SignalR (BNE .NET UG)Real time web applications with SignalR (BNE .NET UG)
Real time web applications with SignalR (BNE .NET UG)
 
Building Realtime Web Applications With ASP.NET SignalR
Building Realtime Web Applications With ASP.NET SignalRBuilding Realtime Web Applications With ASP.NET SignalR
Building Realtime Web Applications With ASP.NET SignalR
 
«Real Time» Web Applications with SignalR in ASP.NET
«Real Time» Web Applications with SignalR in ASP.NET«Real Time» Web Applications with SignalR in ASP.NET
«Real Time» Web Applications with SignalR in ASP.NET
 
SignalR
SignalRSignalR
SignalR
 
SignalR. Code, not toothpaste - TechDays Belgium 2012
SignalR. Code, not toothpaste - TechDays Belgium 2012SignalR. Code, not toothpaste - TechDays Belgium 2012
SignalR. Code, not toothpaste - TechDays Belgium 2012
 
Real time web with SignalR
Real time web with SignalRReal time web with SignalR
Real time web with SignalR
 
Asp.net Mvc 5 y Azure
Asp.net Mvc 5 y AzureAsp.net Mvc 5 y Azure
Asp.net Mvc 5 y Azure
 
Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008
 
Module 4: Introduction to ASP.NET 3.5 (Material)
Module 4: Introduction to ASP.NET 3.5 (Material)Module 4: Introduction to ASP.NET 3.5 (Material)
Module 4: Introduction to ASP.NET 3.5 (Material)
 
Learn ASP
Learn ASPLearn ASP
Learn ASP
 
Startups Getting Started
Startups Getting StartedStartups Getting Started
Startups Getting Started
 
Asp.net Training at NCrypted Learning Center
Asp.net Training at NCrypted Learning CenterAsp.net Training at NCrypted Learning Center
Asp.net Training at NCrypted Learning Center
 
Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)
Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)
Module 4: Introduction to ASP.NET 3.5 (PowerPoint Slides)
 
CUDA & CAFFE
CUDA & CAFFE CUDA & CAFFE
CUDA & CAFFE
 

Similaire à Real-time ASP.NET with SignalR

Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Deepak Gupta
 
Web Services Container
Web Services ContainerWeb Services Container
Web Services ContainerJorgen Thelin
 
CTU June 2011 - Windows Azure App Fabric
CTU June 2011 - Windows Azure App FabricCTU June 2011 - Windows Azure App Fabric
CTU June 2011 - Windows Azure App FabricSpiffy
 
Realtime web experience with signal r
Realtime web experience with signal rRealtime web experience with signal r
Realtime web experience with signal rRan Wahle
 
AWS IoT - Best of re:Invent Tel Aviv
AWS IoT - Best of re:Invent Tel AvivAWS IoT - Best of re:Invent Tel Aviv
AWS IoT - Best of re:Invent Tel AvivAmazon Web Services
 
SharePoint Client Object Model (CSOM)
SharePoint Client Object Model (CSOM)SharePoint Client Object Model (CSOM)
SharePoint Client Object Model (CSOM)Kashif Imran
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf euXie ChengChao
 
HTML5 Server Sent Events/JSF JAX 2011 Conference
HTML5 Server Sent Events/JSF  JAX 2011 ConferenceHTML5 Server Sent Events/JSF  JAX 2011 Conference
HTML5 Server Sent Events/JSF JAX 2011 ConferenceRoger Kitain
 
New microsoft office power point presentation
New microsoft office power point presentationNew microsoft office power point presentation
New microsoft office power point presentationteach4uin
 
Windows Azure AppFabric
Windows Azure AppFabricWindows Azure AppFabric
Windows Azure AppFabricDavid Chou
 
Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares Nino Ho
 
Connected Web Systems
Connected Web SystemsConnected Web Systems
Connected Web SystemsDamir Dobric
 
IoT with SignalR & .NET Gadgeteer - NetMF@Work
IoT with SignalR & .NET Gadgeteer - NetMF@WorkIoT with SignalR & .NET Gadgeteer - NetMF@Work
IoT with SignalR & .NET Gadgeteer - NetMF@WorkMirco Vanini
 
Fancy Features in Asp.Net Core SignalR
Fancy Features in Asp.Net Core SignalRFancy Features in Asp.Net Core SignalR
Fancy Features in Asp.Net Core SignalRVladimir Georgiev
 

Similaire à Real-time ASP.NET with SignalR (20)

Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)
 
Signal r
Signal rSignal r
Signal r
 
Introduction To Cloud Computing
Introduction To Cloud ComputingIntroduction To Cloud Computing
Introduction To Cloud Computing
 
Web Services Container
Web Services ContainerWeb Services Container
Web Services Container
 
CTU June 2011 - Windows Azure App Fabric
CTU June 2011 - Windows Azure App FabricCTU June 2011 - Windows Azure App Fabric
CTU June 2011 - Windows Azure App Fabric
 
Realtime web experience with signal r
Realtime web experience with signal rRealtime web experience with signal r
Realtime web experience with signal r
 
AWS IoT - Best of re:Invent Tel Aviv
AWS IoT - Best of re:Invent Tel AvivAWS IoT - Best of re:Invent Tel Aviv
AWS IoT - Best of re:Invent Tel Aviv
 
SharePoint Client Object Model (CSOM)
SharePoint Client Object Model (CSOM)SharePoint Client Object Model (CSOM)
SharePoint Client Object Model (CSOM)
 
Day6
Day6Day6
Day6
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf eu
 
WebSockets in JEE 7
WebSockets in JEE 7WebSockets in JEE 7
WebSockets in JEE 7
 
HTML5 Server Sent Events/JSF JAX 2011 Conference
HTML5 Server Sent Events/JSF  JAX 2011 ConferenceHTML5 Server Sent Events/JSF  JAX 2011 Conference
HTML5 Server Sent Events/JSF JAX 2011 Conference
 
New microsoft office power point presentation
New microsoft office power point presentationNew microsoft office power point presentation
New microsoft office power point presentation
 
Windows Azure AppFabric
Windows Azure AppFabricWindows Azure AppFabric
Windows Azure AppFabric
 
Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares
 
Connected Web Systems
Connected Web SystemsConnected Web Systems
Connected Web Systems
 
IoT with SignalR & .NET Gadgeteer - NetMF@Work
IoT with SignalR & .NET Gadgeteer - NetMF@WorkIoT with SignalR & .NET Gadgeteer - NetMF@Work
IoT with SignalR & .NET Gadgeteer - NetMF@Work
 
Webconnection
WebconnectionWebconnection
Webconnection
 
Windows Azure
Windows AzureWindows Azure
Windows Azure
 
Fancy Features in Asp.Net Core SignalR
Fancy Features in Asp.Net Core SignalRFancy Features in Asp.Net Core SignalR
Fancy Features in Asp.Net Core SignalR
 

Plus de Alexander Konduforov

Recommender systems for E-commerce
Recommender systems for E-commerceRecommender systems for E-commerce
Recommender systems for E-commerceAlexander Konduforov
 
Machine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningMachine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningAlexander Konduforov
 
ИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumAlexander Konduforov
 
Ling to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisAlexander Konduforov
 

Plus de Alexander Konduforov (8)

Recommender systems for E-commerce
Recommender systems for E-commerceRecommender systems for E-commerce
Recommender systems for E-commerce
 
Fast data munging in R
Fast data munging in RFast data munging in R
Fast data munging in R
 
Machine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningMachine Learning and Azure Machine Learning
Machine Learning and Azure Machine Learning
 
ИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере Survarium
 
Design Principles
Design PrinciplesDesign Principles
Design Principles
 
New in Entity Framework 4.0
New in Entity Framework 4.0New in Entity Framework 4.0
New in Entity Framework 4.0
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Ling to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysis
 

Dernier

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Dernier (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Real-time ASP.NET with SignalR

  • 2. About me  Live in Kharkov  Work at AltexSoft  Blogger (merle-amber.blogspot.com)  Speaker at different conferences and .NET user groups  Kharkov AI club co-organizer
  • 3. Web evolution Event-based, real-time UI Partial page updates (Ajax), RIA Dynamic pages, forms Static HTML pages
  • 9. Other applications  Live scores  Real-time notifications  Interactive games  Collaborative apps  Live user analytics  etc.
  • 10. Standard solutions  Frequent Polling  Long polling  Server-Sent events (HTML5)  WebSocket (HTML5)
  • 11. Polling  Get updates frequently using Ajax requests Pros:  --Cons:  Delay in results  Wastes bandwidth & latency
  • 12. Long polling  Similar to usual polling (Ajax requests)  Request waits longer (1-2 minutes) Pros:  Lower load on server  No delays Cons:  Consumes server threads & connection resources
  • 13. Server-Sent events  HTML5, works over HTTP  EventSource JavaScript API  Content-type: text/event-stream Pros:  No need to reconnect  No need in a special protocol or server implementation Cons:  Works in server-t0-client direction
  • 14. WebSocket  HTML5, new protocol (ws:// and wss://) on top of TCP Pros:  Full-duplex persistent connection (both ways) Cons:  Require Web Socket protocol support on client (IE10)  Require Web Socket protocol support on server (IIS8)
  • 15. What to do? WebSocket Best solution Not supported on all browsers and server Server-Sent events + Very good Ajax to send data Long Polling Not so good Not supported in IE (damn!) Supported everywhere Mix Do I need to implement it on my own??? Very good
  • 16. Superman SignalR to the rescue!
  • 18. What is SignalR?  Official MS technology to build real-time multi-user ASP.NET applications: http://signalr.net/  Out-of-box solution that consists of server and client side  Abstraction over the set of transports  Open-source solution available on GitHub that can be installed via NuGet
  • 20. Architecture Client side JS, .NET/WinRT, WP, Silverlight, iOS/Android Hub API PersistentConnection API
  • 21. Hubs  High-level API  Similar to Controller (actions, thread per call)
  • 22. Supported scenarios  Client calling the server  Server calling clients (all, group, one)  State round-tripping between client and server  Binding complex objects (JSON)  Detecting connect, disconnect and reconnect clients  Broadcasting from outside of a Hub  Async scenarios (return Task/Task<T> to client)
  • 23. Server calling the client  dynamic Clients property  JSON serialization
  • 24. Managing Groups  Add/remove connections to groups
  • 25. Broadcasting from outside  Notify clients from another server-side code
  • 26. JavaScript client  $.connection.hub  connection for all hubs (url points to /signalr)  $.connection.hub.id  client id for the hub connection  $.connection.hub.start()  starts the connection for all hubs  $.connection.{hubname}  access a client side hub from the generated proxy
  • 27. Exposing methods on the client  The JavaScript client can declare methods that the server can invoke:  myHub.{method} = callback  declares a function the server can invoke.  method - name of the client side method  callback - function to execute when the server invokes the method
  • 30. DEMO
  • 31. Authentication  Uses ASP.NET authentication mechanisms  Provides the Authorize attribute for Hubs  Forms and Windows authentications  Certificates are available as well
  • 32. Authentication  Connection token uniquely identifies clients
  • 33. Security  Cross-Site Request Forgery (CSRF) prevention  Disable cross domain requests  Pass connection token in query string, not cookie  Verify connection token  If authenticated user changes, SignalR requires a re-connection
  • 34. Configuring SignalR Set in IConfigurationManager: Settings Description ConnectionTimeout amount of time to leave a connection open (110 sec default) Default value 110 seconds DisconnectTimeout amount of time to wait after a 20 seconds connection goes away before raising the disconnect event HeartBeatInterval interval for checking the state of a connection KeepAlive amount of time to wait before sending a 30 seconds keep alive packet over an idle connection. Set to null to disable keep alive 10 seconds
  • 35. SignalR and web farm  Azure Service Bus  Windows Server Service Bus  SQL Server  Redis
  • 36. SignalR over Redis  Step 1  Download and install Redis as Windows service  Step 2  Install-Package SignalR.Redis  Step 3
  • 37. New features in v2.0  .NET 4.5 only!  iOS and Android support via Xamarin  Portable .NET clients  Self hosting package  Backwards compatibility server support  Cross domain support  Easier unit testing  JavaScript error handling  New HubException exception
  • 38. Safe to use?  Version 2.0 released  Dynamically evolving  Proven and stable technology  Used in many real-time .NET applications  Open-source
  • 39. Materials  https://github.com/SignalR  http://jabbr.net  http://www.hanselman.com/blog/CategoryView.aspx?cate gory=SignalR  http://www.asp.net/signalr/overview/signalr-20  http://merle-amber.blogspot.com/2012/11/real-timeaspnet-signalr.html
  • 40. Thanks for listening!  merle-amber.blogspot.com  aikharkov.wordpress.com  @konduforov 31337

Notes de l'éditeur

  1. ПредставлениеПеред тем как начать доклад, хотелось бы спросить, что вы понимаете под понятием Real-time и как это может быть применимо к веб-приложениям?Сколько людей уже пробовали SignalR?
  2. Рассмотрим развитие вебы-программирования.Веб начинался 20 лет назад со статических HTML страниц. Потом появились скриптовые серверные языки программирования, которые позволили начать создавать динамические страницы, загружать данные на сервер. Следующий значительный этап – частичное обновление страницы (AJAX), появление Rich Internet Applications. Казалось бы, вот оно, счастье. Но и это не решает всех проблем. Все, что мы рассматривали до этого – следование парадигме запрос-ответ. Сервер ничего не знает о клиентах и не может посылать им сообщения. А без этого нельзя строить по-настоящему real-time UI.Сколько людей сталкивались с задачами обеспечения real-time UI, с какими именно?
  3. Есть еще и некоторые другие примеры.
  4. Какие есть стандартные решения для перечисленных задач.Самый первый исторически появившийся – Polling, т.е. постоянное обращение на сервер за обновлениямиЗатем программисты подумали и решили, что можно держать запрос открытым подольше, чтобы не забрасывать сервер запросами – Long Polling. Добиться большего на старой спецификации HTML и HTTP было сложно.Но когда появилась спецификация HTML5, то в нее было добавлено сразу 2 механизма: Server-Sent events и WebSockets. И если о последнем уже многие слышали, то про Server-Sent events не догадываешься, пока не столкнешься с соответств
  5. Итак, использоватьWebSocketеще рано, т.к. он пока не поддерживается во всех браузерах, и даже не на всех серверах. Если вам этого достаточно – отлично, а если нет?Можно использовать Server-SentEvents + отправку данных через старый-добрый XmlHttpRequest (Ajax), но он не поддерживается в IE (слава тебе).Можно всегда использовать Long Polling, но это бОльшая нагрузка на сервер + большинство браузеров все же поддерживают SSE.Хотелось бы иметь разные решения в разных ситуациях
  6. На данный момент