SlideShare une entreprise Scribd logo
1  sur  28
SignalR 
Robin Sedlaczek
Robin Sedlaczek 
15 Jahre Erfahrung als Entwickler 
8 Jahre Erfahrung als Projektleiter 
seit 4 Jahren CTO und Gesellschafter bei der Fairmas GmbH in Berlin 
Autor für Windows Developer & DotNetPro 
MSDN Community-Mitglied/Moderator 
MVA Contributor (.NET Compiler Plattform) 
Contributor bei SharpGL (GitHub) 
robinsedlaczek@live.de 
twitter.com/RobinSedlaczek 
robinsedlaczek.wordpress.com
SignalR
Was ist SignalR? 
- Framework für Echtzeitkommunikation im Internet 
- API für RPC (Server to Client) 
- benutzt WebSockets, Long Polling, Server Sent Events, Forever Frame etc. 
- persistente Connections 
- automatisches Connection Management (connect, disconnect, grouping) 
- Broadcasts oder Messages einzelnen Clients 
- Open Source unter .NET Foundation (http://www.dotnetfoundation.org/) 
- Code auf GitHub (https://github.com/SignalR)
Einsatzgebiete 
- häufiges Aktualisieren einer Webseite durch den Benutzer 
- Dashboards 
- Monitoring-Anwendungen 
- Echtzeit-Formulare 
- Kollaborative Anwendungen (z.B. sowas wie Google Docs) 
- Real-Time Gaming
OWIN & KATANA 
OWIN 
=> Spezifikation aus der Community (owin.org) 
KATANA 
=>Referenzimplementierung von Microsoft
Quelle: Microsoft
Quelle: Microsoft
Unterstützte Betriebssysteme 
Windows Server 2012 
Windows Server 2008 r2 
Windows 8 
Windows 7 
Windows Azure
Unterstützte IIS-Versionen 
IIS 8 or IIS 8 Express. 
IIS 7 and 7.5 with support for extensionless URLs is required. 
IIS must be running in integrated mode; classic mode is not supported. 
Message delays of up to 30 seconds may be experienced if IIS is run in 
classic mode using the Server-Sent Events transport. 
The hosting application must be running in full trust mode.
Browser-Anforderungen 
Attention: jQuery version 1.6.4 or major later versions (such as 
1.7.2, 1.8.2, or 1.9.1) required! 
Transport 
Internet 
Explorer 
Chrome 
(Windows or 
iOS) 
Firefox 
Safari 
(OSX or iOS) 
Android 
WebSockets 10+ current - 1 current - 1 current - 1 N/A 
Server-Sent 
Events 
N/A current - 1 current - 1 current - 1 N/A 
ForeverFrame 8+ N/A N/A N/A 4.1 
Long Polling 8+ current - 1 current - 1 current - 1 4.1
Desktop/Silverlight-Anforderungen 
Transport .NET Application Silverlight 
Web Sockets Windows 8+ and .NET 4.5+ N/A 
Forever Frame N/A N/A 
Server-Sent Events .NET 4+ 5+ 
Long Polling .NET 4+ 5+
Windows Store/Phone- 
Anforderungen 
Transport 
Windows Store/ 
.NET 
Windows Store/ 
JavaScript 
Windows Phone/ 
IE 
Windows Phone/ 
.NET 
WebSockets N/A Win8+ 8+ N/A 
Forever Frame N/A Win8+ 7.5+ N/A 
Server-Sent Events Win8+ N/A N/A 8+ 
Long Polling Win8+ Win8+ 7.5+ 8+
Demo
Tracing
Tracing - Nachrichtentypen 
Source Messages 
SignalR.SqlMessageBus 
SQL Message Bus scaleout provider setup, database operation, error, and 
timeout events 
SignalR.ServiceBusMessageBus 
Service bus scaleout provider topic creation and subscription, error, and 
messaging events 
SignalR.RedisMessageBus Redis scaleout provider connection, disconnection, and error events 
SignalR.ScaleoutMessageBus Scaleout messaging events 
SignalR.Transports.WebSocketTransport WebSocket transport connection, disconnection, messaging, and error events 
SignalR.Transports.ServerSentEventsTransport 
ServerSentEvents transport connection, disconnection, messaging, and error 
events 
SignalR.Transports.ForeverFrameTransport 
ForeverFrame transport connection, disconnection, messaging, and error 
events 
SignalR.Transports.LongPollingTransport LongPolling transport connection, disconnection, messaging, and error events 
SignalR.Transports.TransportHeartBeat Transport connection, disconnection, and keepalive events 
SignalR.ReflectedHubDescriptorProvider Hub discovery events
Demo
Tracing - Konfiguration 
- in Anwendungskonfigurationsdatei (app.config, web.config) für Server 
- im Client so 
_connection.TraceLevel = TraceLevels.All; 
_connection.TraceWriter = Console.Out; 
oder: 
var writer = new StreamWriter("SignalRClient.log"); 
writer.AutoFlush = true; 
_connection.TraceLevel = TraceLevels.All; 
_connection.TraceWriter = writer;
Security
Security 
- SignalR besitzt keinen eigenen Authentifizierungsmechanismus 
- unterliegt dem Anwendungs-Authentifizierungsmechanismus (z.B. Forms 
Authentication, oAuth etc.) 
- stellt das Authorize-Attribut zur Verfügung
Quelle: Microsoft
Quelle: Microsoft
Security 
- SignalR benutzt Connection Token in jedem Request 
- Connection Token besteht aus Connection Id und Username 
- Connection Token wir mit jedem Request verifiziert 
Frage: Wie kommt SignalR zu einen Username?
Cookie-Authentifizierung 
Cookie cookie = AuthenticateUser(username, password); 
var connection = new HubConnection(url); 
connection.CookieContainer = new CookieContainer(); 
connection.CookieContainer.Add(cookie); 
connection.Start().Wait(); 
private Cookie AuthenticateUser(object username, object password) 
{ 
Cookie cookie = null; 
// Get Cookie from FormsAuthentication response. 
return cookie; 
}
Windows-Authentifizierung 
var connection = new HubConnection(url); 
connection.Credentials = CredentialCache.DefaultCredentials; 
connection.Start().Wait();
Header-Authentifizierung 
var connection = new HubConnection(url); 
connection.Headers.Add("myauthtoken", /* token data */); 
connection.Start().Wait();
Zertifikat-Authentifizierung 
var connection = new HubConnection(url); 
connection.AddClientCertificate( 
X509Certificate.CreateFromCertFile("MyCert.cer")); 
connection.Start().Wait();
Demo

Contenu connexe

Similaire à SignalR

Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
 
Citrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahCitrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahDigicomp Academy AG
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Torsten Kleiber
 
Ivory Soa Suite
Ivory Soa SuiteIvory Soa Suite
Ivory Soa SuitePredrag61
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Nico Orschel
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3Ralf Eggert
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformStefan Adolf
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Patrick Lauke
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Ralf Sigmund
 
Lasttest auf Zuruf CloudTest On Demand
Lasttest auf Zuruf CloudTest On DemandLasttest auf Zuruf CloudTest On Demand
Lasttest auf Zuruf CloudTest On DemandSOASTA
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndré Krämer
 
ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)
ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)
ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)dmc digital media center GmbH
 

Similaire à SignalR (20)

Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Citrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahCitrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nah
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
Ivory Soa Suite
Ivory Soa SuiteIvory Soa Suite
Ivory Soa Suite
 
Cloud – Intune
Cloud – IntuneCloud – Intune
Cloud – Intune
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API Platform
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 
Lasttest auf Zuruf CloudTest On Demand
Lasttest auf Zuruf CloudTest On DemandLasttest auf Zuruf CloudTest On Demand
Lasttest auf Zuruf CloudTest On Demand
 
JavaFX Real-World Apps
JavaFX Real-World AppsJavaFX Real-World Apps
JavaFX Real-World Apps
 
Apache Solr Revisited 2015
Apache Solr Revisited 2015Apache Solr Revisited 2015
Apache Solr Revisited 2015
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
 
ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)
ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)
ECM-Webinar: Effektives Viren Scannen mit Alfresco (Norman Network Protection)
 

Plus de Robin Sedlaczek

Developer Week 2019: .NET, .NET Core und .NET Standard - Ein Richtungskompass
Developer Week 2019: .NET, .NET Core und .NET Standard - Ein RichtungskompassDeveloper Week 2019: .NET, .NET Core und .NET Standard - Ein Richtungskompass
Developer Week 2019: .NET, .NET Core und .NET Standard - Ein RichtungskompassRobin Sedlaczek
 
Developer Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der RealitaetDeveloper Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der RealitaetRobin Sedlaczek
 
Developer Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-AnwendungenDeveloper Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
.NET Core Architecture (UI)
.NET Core Architecture (UI).NET Core Architecture (UI)
.NET Core Architecture (UI)Robin Sedlaczek
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
Azure Hybrid Connections
Azure Hybrid ConnectionsAzure Hybrid Connections
Azure Hybrid ConnectionsRobin Sedlaczek
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Robin Sedlaczek
 
Magdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellMagdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellRobin Sedlaczek
 
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...Robin Sedlaczek
 
BASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
BASTA! Spring 2018 - Architekturen für .NET Core-AnwendungenBASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
BASTA! Spring 2018 - Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!Robin Sedlaczek
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot FrameworkBASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot FrameworkRobin Sedlaczek
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
 
ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?Robin Sedlaczek
 
DNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net StandardDNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net StandardRobin Sedlaczek
 
.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET StandardRobin Sedlaczek
 
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...Robin Sedlaczek
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionRobin Sedlaczek
 

Plus de Robin Sedlaczek (20)

Developer Week 2019: .NET, .NET Core und .NET Standard - Ein Richtungskompass
Developer Week 2019: .NET, .NET Core und .NET Standard - Ein RichtungskompassDeveloper Week 2019: .NET, .NET Core und .NET Standard - Ein Richtungskompass
Developer Week 2019: .NET, .NET Core und .NET Standard - Ein Richtungskompass
 
Developer Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der RealitaetDeveloper Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der Realitaet
 
Developer Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-AnwendungenDeveloper Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-Anwendungen
 
.NET Core Architecture (UI)
.NET Core Architecture (UI).NET Core Architecture (UI)
.NET Core Architecture (UI)
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-Anwendungen
 
Azure Hybrid Connections
Azure Hybrid ConnectionsAzure Hybrid Connections
Azure Hybrid Connections
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
 
Magdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellMagdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
 
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
 
BASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
BASTA! Spring 2018 - Architekturen für .NET Core-AnwendungenBASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
BASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
 
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot FrameworkBASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
 
ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?
 
DNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net StandardDNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net Standard
 
.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard
 
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in Action
 

SignalR

  • 2. Robin Sedlaczek 15 Jahre Erfahrung als Entwickler 8 Jahre Erfahrung als Projektleiter seit 4 Jahren CTO und Gesellschafter bei der Fairmas GmbH in Berlin Autor für Windows Developer & DotNetPro MSDN Community-Mitglied/Moderator MVA Contributor (.NET Compiler Plattform) Contributor bei SharpGL (GitHub) robinsedlaczek@live.de twitter.com/RobinSedlaczek robinsedlaczek.wordpress.com
  • 4. Was ist SignalR? - Framework für Echtzeitkommunikation im Internet - API für RPC (Server to Client) - benutzt WebSockets, Long Polling, Server Sent Events, Forever Frame etc. - persistente Connections - automatisches Connection Management (connect, disconnect, grouping) - Broadcasts oder Messages einzelnen Clients - Open Source unter .NET Foundation (http://www.dotnetfoundation.org/) - Code auf GitHub (https://github.com/SignalR)
  • 5. Einsatzgebiete - häufiges Aktualisieren einer Webseite durch den Benutzer - Dashboards - Monitoring-Anwendungen - Echtzeit-Formulare - Kollaborative Anwendungen (z.B. sowas wie Google Docs) - Real-Time Gaming
  • 6. OWIN & KATANA OWIN => Spezifikation aus der Community (owin.org) KATANA =>Referenzimplementierung von Microsoft
  • 9. Unterstützte Betriebssysteme Windows Server 2012 Windows Server 2008 r2 Windows 8 Windows 7 Windows Azure
  • 10. Unterstützte IIS-Versionen IIS 8 or IIS 8 Express. IIS 7 and 7.5 with support for extensionless URLs is required. IIS must be running in integrated mode; classic mode is not supported. Message delays of up to 30 seconds may be experienced if IIS is run in classic mode using the Server-Sent Events transport. The hosting application must be running in full trust mode.
  • 11. Browser-Anforderungen Attention: jQuery version 1.6.4 or major later versions (such as 1.7.2, 1.8.2, or 1.9.1) required! Transport Internet Explorer Chrome (Windows or iOS) Firefox Safari (OSX or iOS) Android WebSockets 10+ current - 1 current - 1 current - 1 N/A Server-Sent Events N/A current - 1 current - 1 current - 1 N/A ForeverFrame 8+ N/A N/A N/A 4.1 Long Polling 8+ current - 1 current - 1 current - 1 4.1
  • 12. Desktop/Silverlight-Anforderungen Transport .NET Application Silverlight Web Sockets Windows 8+ and .NET 4.5+ N/A Forever Frame N/A N/A Server-Sent Events .NET 4+ 5+ Long Polling .NET 4+ 5+
  • 13. Windows Store/Phone- Anforderungen Transport Windows Store/ .NET Windows Store/ JavaScript Windows Phone/ IE Windows Phone/ .NET WebSockets N/A Win8+ 8+ N/A Forever Frame N/A Win8+ 7.5+ N/A Server-Sent Events Win8+ N/A N/A 8+ Long Polling Win8+ Win8+ 7.5+ 8+
  • 14. Demo
  • 16. Tracing - Nachrichtentypen Source Messages SignalR.SqlMessageBus SQL Message Bus scaleout provider setup, database operation, error, and timeout events SignalR.ServiceBusMessageBus Service bus scaleout provider topic creation and subscription, error, and messaging events SignalR.RedisMessageBus Redis scaleout provider connection, disconnection, and error events SignalR.ScaleoutMessageBus Scaleout messaging events SignalR.Transports.WebSocketTransport WebSocket transport connection, disconnection, messaging, and error events SignalR.Transports.ServerSentEventsTransport ServerSentEvents transport connection, disconnection, messaging, and error events SignalR.Transports.ForeverFrameTransport ForeverFrame transport connection, disconnection, messaging, and error events SignalR.Transports.LongPollingTransport LongPolling transport connection, disconnection, messaging, and error events SignalR.Transports.TransportHeartBeat Transport connection, disconnection, and keepalive events SignalR.ReflectedHubDescriptorProvider Hub discovery events
  • 17. Demo
  • 18. Tracing - Konfiguration - in Anwendungskonfigurationsdatei (app.config, web.config) für Server - im Client so _connection.TraceLevel = TraceLevels.All; _connection.TraceWriter = Console.Out; oder: var writer = new StreamWriter("SignalRClient.log"); writer.AutoFlush = true; _connection.TraceLevel = TraceLevels.All; _connection.TraceWriter = writer;
  • 20. Security - SignalR besitzt keinen eigenen Authentifizierungsmechanismus - unterliegt dem Anwendungs-Authentifizierungsmechanismus (z.B. Forms Authentication, oAuth etc.) - stellt das Authorize-Attribut zur Verfügung
  • 23. Security - SignalR benutzt Connection Token in jedem Request - Connection Token besteht aus Connection Id und Username - Connection Token wir mit jedem Request verifiziert Frage: Wie kommt SignalR zu einen Username?
  • 24. Cookie-Authentifizierung Cookie cookie = AuthenticateUser(username, password); var connection = new HubConnection(url); connection.CookieContainer = new CookieContainer(); connection.CookieContainer.Add(cookie); connection.Start().Wait(); private Cookie AuthenticateUser(object username, object password) { Cookie cookie = null; // Get Cookie from FormsAuthentication response. return cookie; }
  • 25. Windows-Authentifizierung var connection = new HubConnection(url); connection.Credentials = CredentialCache.DefaultCredentials; connection.Start().Wait();
  • 26. Header-Authentifizierung var connection = new HubConnection(url); connection.Headers.Add("myauthtoken", /* token data */); connection.Start().Wait();
  • 27. Zertifikat-Authentifizierung var connection = new HubConnection(url); connection.AddClientCertificate( X509Certificate.CreateFromCertFile("MyCert.cer")); connection.Start().Wait();
  • 28. Demo