Technik (en) in einer C # -Multiuser-Anwendung, in der alle Clients ihre Daten aus einer zentralen Datenbank aktuell halten

8

In einer Mehrbenutzerumgebung: Wie stellen Sie sicher, dass alle Kunden Änderungen sehen? Was ist der beste Weg, dies zu tun?

In der Vergangenheit habe ich eine C # -Anwendung erstellt und auf 2 PCs installiert. Es wurde mit einem zentralen SQL Express-Server verbunden (die Client-Anwendung arbeitete mit Entity Framework Code First als ORM). Wenn client1 einen Datensatz zur Datenbank hinzugefügt hat, war dies nicht direkt sichtbar für client2. Nur wenn client2 alle Daten erneut abgerufen hat (Hard Refresh), war die Änderung sichtbar.

Jetzt suche ich nach einer Lösung, wie diese 'Synchronisierung' (?) durchgeführt werden kann oder sollte. Ich mag es, Entity Framework Code zu arbeiten. Zuerst wäre es schön, wenn eine Lösung dies halten könnte. Auch die Anwendung ist noch in einem sehr frühen Stadium. Ich dachte mir eine zentrale Datenbank und mehrere Clients zu haben, aber ich bin mir nicht sicher, ob das eine gute Lösung ist. Wenn Ihre Vorschläge / Lösungen eine zentrale Server-Anwendung erfordern, mit der sich die Clients verbinden (und die Server-Anwendung die Datenbankverwaltung übernimmt), wäre das kein Problem.

Wenn möglich, wäre eine grundlegende Beispiellösung oder ein einfacher Code, der zeigt, wie man immer mit den neuesten Daten arbeitet, sehr hilfreich!

Ähnliche Fragen:

Vielen Dank im Voraus

    
juFo 25.07.2012, 19:36
quelle

2 Antworten

2

Dies hängt von Ihrer Umgebung und den von Ihnen verwalteten Daten und der gewünschten Architektur ab.

Wenn es OK / akzeptabel ist, Clients Kopien der Daten zu geben, mit denen sie arbeiten können, müssen sie mit den Daten arbeiten, wenn sie nicht mit dem zentralen Server verbunden sind, dann können Sie das Sync-Framework verwenden.

Sie haben Ihren zentralen SQL Server wie gewohnt und verwenden das Sync Framework zum Synchronisieren mit Clients.

Sie würden einen "Provider" schreiben, der entscheiden würde, wie Änderungen, die von verschiedenen Clients an den gleichen Daten vorgenommen wurden, behoben werden können.

Sie müssten SQL Express (oder möglicherweise LocalDB (neuer Name für SQLCE)) auf den Client-Rechnern ablegen.

Machen Sie dann Ihr Entity Framework Model / Code für den Zugriff auf die lokale Datenbank anstatt auf eine zentrale Datenbank.

Ссылка

Ansonsten müssen einige "Tiers" entworfen und implementiert werden und eine verteilte Internet- / Datenbankarchitektur / SOA verfolgt werden.

Eine nette kostenlose Ressource:

Ссылка

Ссылка

Einige nützliche Bücher:

Ссылка

    
Colin Smith 25.07.2012, 19:59
quelle
1

Eine andere Lösung besteht darin, eine "Schnittstelle" für Ihre Datenbank zu erstellen und jede Datenoperation von einem Client kann andere Clients benachrichtigen. Sie können eine solche Schnittstelle von WCF mit ihren Callbacks implementieren. Ich habe keinen einfachen Code für die gesamte Architekturlösung ... Wenn Sie konkretere Fragen zum Erstellen einer N-Tier-Anwendung mit WCF stellen, werde ich versuchen, Ihnen zu helfen.

    
Eugene Griaznov 28.10.2013 10:05
quelle