Laden...

Datenaustausch Master Client

Erstellt von DannyDzWare vor 2 Jahren Letzter Beitrag vor 2 Jahren 1.014 Views
D
DannyDzWare Themenstarter:in
5 Beiträge seit 2022
vor 2 Jahren
Datenaustausch Master Client

Hallo zusammen.
Ich habe eine Frage, die mir gerne Denkanstöße bzw. Lösungsvorschläge liefern sollte.
Ich habe ein Programm geschrieben, dass im Netzwerk arbeitet. Es gibt dabei einen Master und theoretisch beliebig viele Clients (wobei im Anwendungsfall maximal 4 vorhanden sein werden). Im Hauptprogramm habe ich eine CSV in ein DGV geladen. Dort stehen unter anderem Schaltzeiten drin. Die CSV Datei befindet sich auf dem Master PC und die Clients haben quasi ihren Zugriff im Netzwerk auf den Ordner mit den entsprechenden Dateien.
Nun möchte ich, dass alle Clients auch diese Tabelle sehen und auch bearbeiten können. Lediglich die Ausführung, also das was geschalten werden soll, soll beim Master passieren. Ich habe das bisher so gelöst, dass ich in der Ini Datei jeweils vorgebe, ob es sich um Master oder Client handelt und dementsprechend werden einige Funktionen gestartet oder eben nicht.
Dann benutze ich einen Textdatei, die von allen gelesen wird, wo drin steht, welcher Client/Master gerade aktiv im Bearbeitungsmodus ist. Der Aktive Bearbeiter schreibt seinen eindeutigen Namen da rein und nach Abmeldung wird es wieder zurückgesetzt.
Bei allen, die nicht bearbeiten, ist dann quasi die Oberfläche gesperrt(mittels panel.enabled= false). Die Tabelle kann immer nur von einem bearbeitet werden und wird dann gespeichert. Dabei wird die CSV Datei auf dem Master PC überschrieben. In regelmäßigen Abständen schauen alle (Master/Clients) ob sich die Datei verändert hat und lesen sie dann neu ein.
Meine Frage ist jetzt, kann man das relativ einfach im Hintergrund laufen lassen?
Ich stelle mir das ungefähr so vor. Auf PC_Master wird z.B. eine Variable definiert mit dem Namen "aktiverBenutzer", und wenn ich jetzt bearbeiten will, dann schauen die Clients im Netzwerk auf PC_Master.aktiverBenutzer und sehen, dass sie den Wert "Frei"/"Belegt" hat. Oder so ähnlich. Geht das einfach umzusetzen oder muss ich mich da schon in die Tiefen reinbegeben und lasse es erstmal bei meiner "einfachen" Lösung.

Ich möchte quasi weg von den Dateien, die man ja auch manipulieren kann. Jeder kann eine Textdatei öffnen und dann Werte da verändern und so weiter.

Ich arbeite mit Visual Studio 2022 und erstelle immer Windows Forms.

Ich hoffe, es macht etwas Sinn.

vielen Dank für eure Hilfe im voraus.

LG
Daniel

16.830 Beiträge seit 2008
vor 2 Jahren

Du hast "erfunden", was es seit ca. 40 Jahren unter der Bezeichnung "Client - Server" gibt - nur mit nicht ganz so gut geeigneten Mitteln. 🙂
Dafür gibts seit ~25 Jahren sogenannte Web Services, die solche Aufgaben über das standardisierte Protokoll HTTP umsetzen können.

Im .NET Ökosystem gibts dazu seit ca. 2003 die Technologie ASP.NET (bzw. gab es mit der Zeit auch noch parallel andere); heute nennt sie sich ASP.NET Core.
Dabei erfolgt die Kommunikation lesend wie auch schreibend auf HTTP Basis.
https://docs.microsoft.com/de-de/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-6.0

Statt Ini-Dateien verwendet man seit >20 Jahren primär XML bzw. mittlerweile auch viel Json.
Konzeptionell bist also auf dem richtigen Weg - nur die Mittel sind nicht so dolle 😉

D
DannyDzWare Themenstarter:in
5 Beiträge seit 2022
vor 2 Jahren

Super. Vielen Dank für die Hinweise und die Gedankenhilfe.
Ich werde mich damit weiter beschäftigen.