Diesen Blogeintrag möchte ich einer wirklich charmanten Technology mit Namen „SignalR“ widmen.

SignalR ist eine Bibliothek für ASP.NET-Entwickler, die real-time-Funktionalitäten in Webanwendungen bereitstellen kann. Der sogenannte „SignalR Hub“ ermöglicht die Kommunikation vom Client zum Server und vom Server zum Client!

Durch die Verwendung von „Owin“ (siehe Kantana-Projekt von MS) werden Server und Clients maximal voneinander entkoppelt. Owin ist eine Spezifikation die definiert, wie eine Kommunikation zwischen Server und Clients im Http-Kontext sein sollte.

Zudem unterstützt SignalR „Self-Hosting“ und ist somit nicht zwingend auf einen IIS angewiesen, um eine Kommunikation zu den Clients aufzubauen. J (http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host )

 

Wieso SignalR?

Internetseiten haben sich im Laufe der Jahre stark gewandelt. Während man früher eher statische Seiten kannte, werden heute viele Seiteninhalte asynchron, punktuell nachgeladen. Ob nun synchrones oder asynchrones Laden der Seiteninhalte; eins hat sich dabei nicht geändert: Der Client fragt den Server nach Daten!

Es wäre aber eigentlich total super, wenn der Server auch seine Clients benachrichtigen könnte, oder? Genau hier setzt SignalR an!

Das Paradebeispiel für ein Real time-Szenario in einer Webanwendung ist ein Live Chat. Ein Anwender sendet eine Nachricht an den Server und diese drückt diese direkt an die anderen Clients raus, ohne dass die Anwender die Seite neu laden müssen.

 

Ein Beispiel:

Ich habe mir ein Beispiel aus dem Internet heruntergeladen, welches ich als Demo besonders verständlich und anschaulich finde.

Das Beispiel zeigt den oben genannten, prädestinierten Anwendungsfall eines einfachen Live Chats.

image

 

Nachfolgend ist das HTML der Clientseite dargestellt. Super übersichtlich, super Kommentare, super geil!

 

image

Die Magie entsteht eigentlich durch das Referenzieren des autogenerierten „SignalR Hub Scripts“ und dem Definieren von Funktionen am chat.client-Objekt. Diese Funktionen werden ausgeführt, wenn der Server sie antriggert.

Über das chat.server-Objekt können wiederum Funktionen des Servers vom Client aufgerufen werden. (Siehe den Aufruf „chat.server.send(….).“)

 

Client und Server agieren somit wie eine Einheit sind aber architektonisch sauber voneinander entkoppelt!

 

Der als „Server Side Code“ definierte SignalR Hub ist denkbar simple und nahezu selbsterklärend.

 

image

 

Ruft einer der Clients „chat.server.send(…)“ auf, dann nimmt der Server die Anfrage entgegen und ruft durch „Client.All.broadcastMessage(…) wiederum die definierte Funktion auf den Clients auf.

(Die Methode „broadcastMessage“ ist eine dynamische Eigenschaft und muss daher nicht fest am Objekt „Clients.All“ definiert sein!)

 

SignalR und Kantana sind beides super interessante Projekte, die hier nur leicht angerissen wurden und noch so viel mehr zu bieten haben!

Ich kann jedem nur empfehlen sich diese Projekte mal näher anzuschauen!

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.