Es gibt zwei Möglichkeiten.
erste Option
Sie können Ihre „Konsole apps“ auf die signalR Backplane verbinden, und diese Anwendungen werden in der Lage sein, Kunden Methoden, mit etwas zu nennen wie
var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hub.Clients.All.doSomething("blah-blah");
Sie einen beliebigen Port verwenden können, für die signalR config aber gleiche Backplane Konfiguration und gleiche Hubs. Sie können Owin für das Selbsthosting verwenden. Niemand stellt eine Verbindung zu diesen Konsolen-Apps her.
Nachteile:
1) braucht Ihre Konsolenanwendungen SignalR.SelfHosting und Ihre Hubs Klassen zu verweisen. Aus Sicht der Architektur ist das nicht gut.
2) Ihre Konsolen-Anwendungen hören einige Ports (da sie SignalR-Server sind). Theoretisch könnte sich jemand mit diesen Hubs verbinden und etwas tun. Dies ist weder aus Sicht der Architektur noch aus Sicherheitsgründen gut.
Zweite Option
Sie können Hub implementieren Methode wie "PushSomeDataToClients" und nennen es von der Konsole apps SignalR Client wie in @bartbje Kommentar erwähnt werden.
Vorteile: keine Nachteile von der ersten Option.
Nachteile: Sie müssen einige Sicherheitsmaßnahmen implementieren, um zu verhindern, dass jemand außerhalb des Systems diese Methode aufruft. SignalR hat eine Menge zu tun, also googeln Sie einfach. Sie können beispielsweise einen separaten Hub für die Kommunikation zwischen Systemen erstellen.
dritte Option
Interact mit Web-Server-Anwendungen mit einer anderen Art und Weise dann SignalR. Wahrscheinlich benutzen Sie bereits etwas wie rabbitMq oder irgendeine Art von Servicebus. Sie können es auch mit einem separaten ApiController in Ihrer Web-Server-App implementieren. Aber es scheint näher an der zweiten Option zu liegen.
Aufgrund meiner, würde ich wahrscheinlich die dritte Option wählen, da es aus Sicht der Architektur sauber ist.
Mögliche Duplikate [Beispiel App der SignalR-Konsole] (http://stackoverflow.com/questions/11140164/signalr-console-app-example) – bartbje
Nicht sicher, ob es das ist.Das Beispiel, das Sie verlinkt haben, zeigt, dass der Client sich direkt mit der Konsolen-App verbindet und die Konsolen-App einen SignalR-Endpunkt an Port 8088 anbietet. In meinem Fall wird sich der Client mit einem Webserver verbinden, der den Endpunkt und die Verbindung mit Clients verwaltet Die Konsolen-App überträgt Daten über die SignalR-Scaleout-Rückwandplatine, die der Webserver abrufen und an verbundene Clients senden muss. –