2012-04-03 12 views
0

Ich habe ein LAN bestehend aus 3 PC. In PC1 ist die MS SQL-Datenbank installiert. Dieser Computer wird als Server fungieren.LAN-Anwendung

Der PC2 und der PC3 haben jeweils eine Desktop-Anwendung, die die Daten von PC1 anzeigt.

Mein Problem hier ist, wie jeder PC (PC2 und PC3) die gleiche Kopie der Daten haben. Angenommen, in PC2 Mitarbeiter 0001 Vorname wird von John zu Peter aktualisiert und speichern speichern. Ohne die Anwendung in PC3 zu aktualisieren, hat Mitarbeiter 0001 immer noch John für den Vornamen.

Was wäre der beste Ansatz dafür? Mein Niveau in der Programmierung ist nicht so gut, aber ich bin offen für alle Vorschläge/Konzepte/Beispiel/etc ..

Vielen Dank.

Antwort

2

Wenn Sie sofort nach dem Ändern der Daten ein sofortiges Update auf allen Clients wünschen, benötigen Sie eine Art von Benachrichtigungssystem, entweder in einer gepollten oder gepushten Weise.

Sie können einen Push-Mechanismus implementieren, der beispielsweise WCF mit Rückrufvertrag verwendet. Ihre Client-PCs müssen eine entsprechende Callback-Schnittstelle implementieren und ständig mit dem WCF-Dienst des Server-PCs verbunden sein. Ein Rückruf könnte die neuen Daten tatsächlich tragen. Jeder Client muss Benachrichtigungen filtern, die aus den eigenen Änderungen resultieren. Push-Mechanismus ist schnell und effizient.

Überprüfen Sie this stackoverflow Antwort zum Beispiel WCF Callback.

Pull-Mechanismus würde einen Hintergrund-Thread für alle Client-Anwendungen erfordern, der den Server auf Änderungen prüft. Sie können eine separate Datenbanktabelle mit einem Versionszähler verwenden, der bei jeder Änderung auf dem Server inkrementiert wird. Client-Anwendungen würden diesen Zähler abfragen, mit der neuesten Version vergleichen und die Daten aktualisieren, wenn eine neue Version entdeckt wird. Es ist jedoch viel weniger effektiv Mechanismus, wie Sie die Abfrage häufig durchführen müssen und alle Daten jedes Mal erhalten, wenn es eine neue Version gibt. Sie können die Versionsverwaltung verfeinern und erkennen, was genau geändert wurde, aber dies kann bei mehreren Clients schnell kompliziert werden. Insgesamt skaliert es nicht sehr gut. Es ist in der Regel einfacher als Push und für einfache Anwendungen mit nicht zu vielen Daten würde es reichen.

+0

+1 gute Verbindung, nützliche Informationen – Simon

+0

Danke dafür. – yonan2236

-2

gut utivich ... das ist das gleiche wie eine Webanwendung wirklich. Es ist ein häufiges Problem. Normalerweise haben die anderen Clients veraltete Daten, bis der Datensatz neu geladen wird, oder wenn sie speichern, wird der Server möglicherweise eine Ausnahme für veraltete Daten basierend auf sql timestamp auslösen. Mit einer Desktop-Anwendung können Sie jedoch ein System mit Ereignisbenachrichtigung einrichten, genau wie eine Chat-Anwendung, bei der der Server Ereignisse an Abonnenten sendet und die Clients in der Lage sind, den Datensatz zu aktualisieren oder was immer Sie tun müssen.

0

Sie müssen den anderen Rechnern mitteilen, wann sie aktualisieren sollen. Dies könnte durch einfache Nachrichten erreicht werden, die über das Netzwerk mittels UDP-Broadcast gesendet werden. Dann könnte der andere PC seine Refresh-Methode ausführen.