Ich versuche mal eine kurze Zusammenfassung:
- Nur beim Start der Clientanwendung wird die Liste mit den 10.000 Datensätzen in ein 2D-Array geladen und dann in einer ListView angezeigt
- Auf dem SQL-Server wird eine separate Sperrliste inkl. RecID, Sperrstatus (gesperrt/aufgehoben) und Timestamp geführt.
- Jede Clientanwendung trägt neue Sperrungen oder Aufhebungen in die separate Sperrliste per StoredProcedure ein
- Alle Clientanwendungen fragen die Sperrliste regelmäßig oder bei Bedarf über eine StoredProcedure ab und ermitteln alle Änderungen (Sperrungen/Aufhebungen) seit dem letzten Abruf der Sperrliste (Letzter Timestamp als Parameter).
Ein Problem habe ich aber immer noch:
Stellen wir uns das mal praktisch vor: In einer Kiste liegen viele Teile, die ziemlich zügig und von vielen Mitarbeitern bearbeitet werden müssen. Ein Mitarbeiter nimmt sich ein Teil aus der Kiste um es zu bearbeiten. Und schon in diesem Augenblick muss feststehen (er sieht es ja auch), dass kein anderer Mitarbeiter dieses Teil in der Hand hat. Würde er es erst merken, wenn er das Teil in der Hand hält und müsste es dann zurücklegen, wäre wertvolle Arbeitszeit verschwendet worden. Daher müsste unsere Clientanwendung immer sehr zeitnah über Sperrungen informiert werden.
Und das habe ich euch verschwiegen: Unsere Datenbanken laufen auf
SQL-Servern, auf denen noch zahlreiche andere Datenbanken der Kunden laufen. Wenn jede Clientanwendung 1 x pro Sekunde die Sperr-Procedure abfragen würde, wären das locker 100 Abfragen pro Sekunden oder 6.000 pro Minute. Selbst wenn das hyper-performant wäre, würde der
SQL-Admin schon bei der kleinsten Störung irgendeiner
DB bei mir anrufen, weil auf unserer
DB so viel Betrieb ist.
Daher hatte mir die UDP-Broadcast-Idee ziemlich gut gefallen - wenn sie denn zuverlässig funktionieren würde. Damit gäbe es dann eine aktive Sperrbenachrichtigung und im Netzwerk würde sich nur etwas tun, wenn jemand tatsächlich arbeitet. Ansonsten wäre Funkstelle.
Sieht so aus, als müsste man dann doch einen separaten
TCP-Server oder so basteln, an dem sich alle Clients anmelden und aktiv über die Sperrungen benachrichtigt werden. Das scheint mir dann aber doch etwas zu aufwändig für so verrückte Kundenideen.
Nochmals vielen Dank für eure Vorschläge.