2016-08-11 2 views
1

Ich habe silverlight Web App. Diese Web-App läuft auf 4 Servern mit einem NLB vor ihnen. Ich muss SignalR in meiner Web-App verwenden.SignalR - NLB Server Änderung und empfohlene Möglichkeit zur Skalierung

Lass uns über dieses Szenario nachdenken. Client # 1 ist mit Server # 1 verbunden und alles ist in Ordnung. Sie kommunizieren sich gegenseitig über einen Hub perfekt. Dann hat NLB plötzlich Client # 1 dem Server # 2 zugewiesen.

Nun, was wird mit Connection und Hub passieren? Wie werden sie kommunizieren? Wie wird die Verbindung zwischen Client # 1 und Server # 1 festgelegt?

PS: Ich weiß nicht viel über NLB. Vielleicht ist es eine dumme Frage, aber ich konnte keine gute Erklärung finden.

Meine zweite Frage ist, welcher Weg unter Skalierung (Azure, SQL, Redis) ist das Beste für .NET Silverlight App mit möglicherweise nicht viele Clients (weniger als 10K)?

Nicht: Ich benutze MS SQL, SQL Server hoch in meiner App.

+1

Sie müssen eine Rückwandplatine verwenden. SignalR bietet Hooks in Redis, SQL Server und Service Bus. –

Antwort

1

Nachdem ich dieses sehr informative video geschaut habe, fand ich Antworten auf meine Fragen.

Grundsätzlich wird die neue Verbindung automatisch hergestellt, wenn der Client einem anderen Serverknoten zugewiesen wird. Die alte Verbindung ist verloren, aber in jedem Fall können alle Clients benachrichtigt werden, wenn Sie Back-Plane verwenden. Dies ist also kein Problem.

Das Hub-Objekt ist auch kein Problem, da es ein transientes Objekt ist, d. H. In jeder neuen einzelnen Operation wird ein neues Hub-Objekt erzeugt. Somit ist dies auch kein Problem. Es gibt kein beständiges Hub-Objekt zwischen Server und Client. Selbst wenn es einen Server und einen Client gibt, wird der Hub bei jeder Operation zerstört und erstellt.

Das einzige Problem ist, dass wenn Sie Gruppen verwenden, die Gruppeninformationen für den Client verloren gehen, wenn er sich mit dem anderen Server verbindet. Der Server verwaltet keine Listen von Gruppen oder Gruppenmitgliedschaften. In diesem Fall müssen Sie eine Datenbank verwenden und Sie können manuell von Ihrer Datenbank aktualisieren. Wenn die neue Verbindung zwischen Client und neuem Server eingerichtet wird, können Sie diesen Client in der Datenbank durchsuchen. Wenn Sie eine Gruppeninformation dieses Clients finden, können Sie sich erneut manuell bei dieser Gruppe erneut registrieren.

Für die Wahl der Rückwandplatine gibt es keinen schnellsten oder besten Weg. Niemand kann sagen, dass dieser Weg unter Azure Service Bus, Redis, SQL schneller oder besser ist. Es hängt wirklich von Ihrer Anwendung ab. Wenn Sie bereits MS Azure-Dienste verwenden, wählen Sie die Azure-Implementierung für Ihre Webanwendung aus. Wenn Sie Redis in Ihrer App verwenden, gehen Sie mit Redis. Andernfalls können Sie SQL auswählen. Wie gesagt, alle sind mehr oder weniger gleich. Wählen Sie eine, die für Ihre Web-App am besten geeignet ist.

Das sind alles, was von Video und der offiziellen Website des SignalR Diese Website ist eine der besten SignalR Tutorial und API Guide-Site. Es wird dringend empfohlen, alle Abschnitte zu durchlaufen.

Verwandte Themen