2009-07-25 9 views
1

Microsoft Sync Framework mit SQL 2005? Ist es möglich? Es scheint darauf hinzuweisen, dass die OOTB-Provider SQL2008-Funktionalität verwenden. Ich suche ein paar schnelle Gewinne in Bezug auf ein Sync-Projekt. Die Client-App ist für einige Tage offline. Es wird einen zentralen Server geben, der SQL Server 2005 sein muss. Ich kann .net 3.5 verwenden.Sync Framework Überlegungen für Smart Client-App

Grundsätzlich könnte die Client-App für eine Woche offline gehen. Wenn es wieder online ist, muss es seine Daten synchronisieren. Aber das Gute ist, dass die Daten nur auf den Server übertragen werden müssen. Das Zeug, das mit dem Client synchronisiert wird, sind nur Nachschlagedaten, die der Client niemals ändert. Das bedeutet, dass Sync-Kollisionen nicht wichtig sind.

Um das Szenario für Sie zu vereinfachen, geht dieser Smart Client offline und der Benutzer untersucht Daten über einige Beobachtungen. Sie geben die Daten in das System ein. Wenn der Laptop wieder mit dem Netzwerk verbunden ist, synchronisiert er alle diese Daten mit dem Server. Es wird andere Kunden geben, die dasselbe tun, aber niemand berührt die Daten des anderen. Dann gibt es einige Berichte auf dem Server zum Anzeigen der Daten, die an den Server gesendet wurden. Dies muss auch ClickOnce verwenden.

Meine größte Sorge ist, dass es eine Zwischenversion gibt, während ein Client offline ist. Diese Version erfordert möglicherweise ein neues Feld in der Datenbank und ein neues Feld für die Umfrage. Offensichtlich wird dieses neue Feld Nullable sein, da wir alte Daten nicht aktualisieren können, das ist in Ordnung, als eine Annahme festzulegen. Aber wenn der Client eine Verbindung herstellt und sein lokales Datenschema und das Serverschema nicht übereinstimmen, kann das sync-Framework damit umgehen? Nachdem die Daten auf den Server übertragen wurden, werden sie lokal verworfen.

Ich hoffe mein Problem macht Sinn.

Antwort

1

Ich habe das Microsoft Sync-Framework für eine Anwendung verwendet, die mit Kollisionen umgehen muss, und es ist miserabel. Die * .sdf-Datei ist für bestimmte Schemaänderungen (wie das Löschen einer Spalte usw.) gesperrt.

Ihr Szenario klingt wie das Sync Framwork würde für Sie arbeiten, out of the Box ... erzwingen Sie keine referenzielle Integrität, da das Sync Framework Insert-Probleme in diesen Fällen verursachen wird.

Soweit Sie das Schema aktualisieren, wenn Sie den Sync Framework-Foren folgen, werden Sie angewiesen, eine temporäre Tabelle so zu erstellen, wie die Tabelle am Ende aussehen soll, Ihre Daten zu kopieren und dann die alte Tabelle zu löschen. Sobald Sie fertig sind, fahren Sie fort und benennen Sie die neue Tabelle so um, wie sie sein sollte, und schließen Sie die Daten in SQL Server CE erneut an, damit Sie die Synchronisierungsklassen verarbeiten können.

IMHO, ich werde an der Beseitigung der Sync-Funktion aus meiner Anwendung arbeiten, weil es eher eine Behinderung als eine Hilfe ist.

+0

Danke, schätze das Feedback. Auch habe ich herausgefunden, dass ClickOnce automatisch Ihr Schema aktualisiert, unabhängig vom Sync-Framework oder nicht. In meinem Fall füge ich nur neue NULL-fähige Felder auf dem zentralen Server hinzu, so dass dies für mich ganz gut funktioniert. – DarkwingDuck

+0

Wie beendet ClickOnce die automatische Aktualisierung der Datenbank? Ich habe dieses Szenario noch nicht gesehen, und ich bin ziemlich fasziniert. –

+0

Also, was ich fand, war, dass ClickOnce nur einige Änderungen sicher in Ihrer kompakten Datenbank bereitstellen wird. Zum Beispiel funktionierte das Entfernen einer Spalte gut. Durch das Hinzufügen einer Spalte wurden jedoch alle lokalen Daten zerstört. Was ich stattdessen getan habe, war während des "Sync" -Prozesses, dass ich die App ihre Daten posten ließ, und DANN die System.Deployment.CurrentDeployment-Klasse aufrufen, die statische Methoden hat, um Ihre Bereitstellung zu aktualisieren. Das hat mir Spaß gemacht. Es funktioniert jedoch möglicherweise nicht so gut, wenn Sie WCF als Proxy für Ihre Datenbank verwenden (dies ist ein unterstütztes Sync-Framework-Szenario), da Sie Ihre Verträge versionieren müssen. – DarkwingDuck

Verwandte Themen