Laden...

Rechner2 von Rechner1 im LAN benachrichtigen

Erstellt von masen vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.032 Views
M
masen Themenstarter:in
10 Beiträge seit 2015
vor 8 Jahren
Rechner2 von Rechner1 im LAN benachrichtigen

Hi zusammen.

Ich zerbreche mir seit einigen Tagen den Kopf wie ich folgendes Problem angehen könnte.

Ich habe mir ein Windows Anwendung geschrieben, die sagen wir mal Personen verwaltet. Jeder Person ist ein bestimmter Raum zugeordnet. (nix unanständiges). Jetzt würde ich gern an einer Service Stelle auf nem Monitor den Status eines Zimmers ändern. Dieser Monitor hängt an nem Rechner (z.b. Raspberry) der über LAN verbunden ist.

Beispiel:
Servicekraft 1 steht am Empfang, trägt Namen in Anwendung ein und ordnet diesem noch ein Raum zu.

Servicekraft 2 sieht nun auf einem Monitor, das z.b. Raum 2 durch die eben aufgenommene Person belegt wurde.

Ich habe mir schon vieles dazu durchgelesen. Bin aber noch nicht auf dem richtigen Dampfer. Habe mir schon überlegt einfach ein textfile zu generieren, das auf nem server gespeichert wird. Der Rechner von Servicekraft 2 könnte sich diese dann vom Server holen. Problem, das ganze soll automatisch geschehen. Sprich diese zweite Rechner sollte nicht manuell aktualisiert werden müssen.

Hat jemand nen Idee wie ich das angehen könnte.

Vielen Dank schon einmal

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo masen,

im Grunde ist das Problem ähnlich wie bei Chats. Mit diesem Stichwort findest du sicherlich genügend Infos und Ansätze. Das kannst du dann auf dein Problem übertragen.

Ich würde hierzu SignalR verwenden.
Alternativ kannst du mittels WCF einen UDP-Broadcast versenden.

Wenn du darin nicht die ganze Information (welche Person hat welches Zimmer und ev. weitere Details) versenden willst, so kannst du nur einen "Auftrag zum Neuladen der Daten" versenden und die Zielrechner holen sich dann die aktuellsten Daten direkt aus der Datenbank. Es kommt hier halt darauf an wieviele Daten du versenden willst.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

D
41 Beiträge seit 2009
vor 8 Jahren

Hallo,

also ich würde mir RabbbitMQ an deiner Stelle mal angucken, oder wie gfoidl bereits geschrieben hat auch SignalR. Damit bekommst du auf jeden fall dein Vorhaben so hin, dass du nicht auf irgendwelche Textdateien pollen musst, die irgendwo liegen.

Falls du dir RabbitMQ anguckst... Es gibt eine sehr schöne Client-Library namens EasyNetQ, die dir einiges an Arbeit abnimmt.

M
masen Themenstarter:in
10 Beiträge seit 2015
vor 8 Jahren

Hi,

vielen Dank schon mal für die Tipps. Ich denke das SignalR eine gute Möglichkeit darstellt. Werde mir die anderen Alternativen auch anschauen und berichten wie ich mein PRoblem lösen konnte.

mfg

M
masen Themenstarter:in
10 Beiträge seit 2015
vor 8 Jahren

So, erster Zwischenbericht.

Kann mir vllt jemand mal was grundsätzliches erklären?

Ich habe in meiner WindowsForm Anwendung eine Klasse myHub, eine Klasse Startup. Zudem rufe ich in meiner Programm.cs folgendes auf:

 static void Main()
        {
            string url = "http://localhost:8080/";
            using (WebApp.Start<startup>(url))
            {
                Console.WriteLine(string.Format("Server running at {0}", url));
            }

myHub Klasse

 class MyHub : Hub
    {
        public void Send(string name, string message)
        {
            Clients.All.broadcastMessage(name, message);
        }
    }

Startup Klasse

public class startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR(new HubConfiguration());
        }
    }

Dies ist bestimmt den meisten aus einschlägigen Tutorials bekannt. Was mir jetzt nicht ganz klar ist, wie nehme ich z.B. den Inhalt aus einer textbox und versende diesen an meine Clients (durch buttinclick). Komme mir schon ganz doof vor.

Als Client habe ich mal alles mögliche ausprobiert. (letztendlich soll es mal eine mit Monodevelop geschriebene C# Anwendung sein.

Danke schon mal für die Hilfe

T
314 Beiträge seit 2013
vor 8 Jahren

Naja du musst eben deine Methode Send auf dem Server invoken.
Die Clients müssen entsprechend broadcastMessage abonnieren.

Dies ist jedoch super erklärt auf SignalR - Getting Started.
Für deinen SelfHosted Fall entsprechend weiterführend dann: Using SignalR in WinForms and WPF