Übersicht über gelegentlich verbundene Anwendungen

Aktualisiert: Juli 2008

Eine gelegentlich verbundene Anwendung ist eine Anwendung, die Daten einer Remotedatenbank verwendet, jedoch möglicherweise nicht immer Zugriff auf die Remotedatenbank hat. Gelegentlich verbundene Anwendungen werden auch verwendet, wenn zwar ein ständiger Zugriff möglich ist, es jedoch nicht sinnvoll ist, in der Remotedatenbank ständig Daten abzufragen, die sich selten ändern, wie z. B. eine Zustandsliste oder Produktkategorien. In solchen Fällen können die Anwendungen Daten einer lokalen Datenbank auf dem Client verwenden und die Daten von Zeit zu Zeit mit der Remotedatenbank auf dem Server synchronisieren.

Wenn Ihre Anwendung also von einer Remotedatenbank Daten anfordert, die nicht ständig aus der Datenbank abgerufen werden müssen, können Sie die Daten in einem lokalen Datenbankcache auf dem Clientcomputer oder direkt in Ihrer Anwendung speichern. Angenommen, eine Bestandskontrollanwendung verwendet Daten aus mehreren Tabellen einer Datenbank. Die Anzahl vorrätiger Artikel für einzelne Produkte ist eine wichtige Information, die sich ständig ändert. Daher sollte die Anwendung nach Möglichkeit die aktuellen Werte in der Datenbank wiedergeben. Die Anwendung zeigt jedoch auch eine sich selten ändernde Liste gültiger Transportunternehmen an. Diese gültigen Transportunternehmen sind in der Tabelle der Spediteure gespeichert und müssen nicht bei jeder Abfrage aus der Datenbank abgerufen werden. Wenn Sie diese Tabelle der Spediteure in einem Cache für die lokale Datenbank speichern, können Sie die Anzahl unnötiger Roundtrips der Anwendung zur Remotedatenbank verringern. Einen Cache für die lokale Datenbank sollten Sie also nicht nur für gelegentlich verbundene Anwendungen verwenden, sondern auch zum Speichern von Daten, die sich selten oder in bestimmten Abständen ändern.

Sie können die Zwischenspeicherung für einzelne Tabellen, Gruppen von Tabellen oder für bestimmte Datensätze konfigurieren, die aus einer Tabelle abgefragt werden (z. B. nur Kunden mit einem bestimmten Handelsvertreter).

Die Synchronisierung von Daten zwischen Client- und Serverdatenbanken wird durch Microsoft Synchronization Services für ADO.NET (den Microsoft.Synchronization.Data-Namespace) erleichtert. In Visual Studio können Sie die Synchronisierung visuell im Dialogfeld Datensynchronisierung konfigurieren konfigurieren.

Ab Visual Studio 2008 SP1 können Sie zusätzlich zum Dialogfeld Datensynchronisierung konfigurieren auch den Assistenten zum Konfigurieren von Datenquellen zur Konfiguration der Synchronisierung verwenden. Wählen Sie bei der Konfiguration eines typisierten Datasets auf der Seite Datenbankobjekte auswählen des Assistenten die Option Zwischenspeichern der lokalen Datenbank aktivieren aus. Weitere Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung mit dem Assistenten zum Konfigurieren von Datenquellen.

Hinweis:

In Projekten für intelligente Geräte kann der Synchronisierungs-Designer nicht im Assistenten zum Konfigurieren von Datenquellen gestartet werden. Weitere Informationen hierzu finden Sie unter Gelegentlich verbundene Anwendungen (Geräte).

Darüber hinaus wurde in Visual Studio 2008 SP1 die Unterstützung des Nachverfolgungsfeatures von SQL Server 2008 hinzugefügt. Sie können die Änderungsnachverfolgung von SQL Server 2008 aktivieren, wenn Sie die Synchronisierung im Dialogfeld Datensynchronisierung konfigurieren oder im Assistenten zum Konfigurieren von Datenquellen konfigurieren. Weitere Informationen hierzu finden Sie unter Gewusst wie: Konfigurieren der Datensynchronisierung zum Verwenden der SQL Server-Änderungsverfolgung.

Synchronization Services-API (Microsoft.Synchronization.Data)

Microsoft Synchronization Services für ADO.NET ist für gelegentlich verbundene Anwendungen vorgesehen. Sie können damit Daten aus unterschiedlichen Quellen über zwei- oder n-schichtige sowie dienstbasierte Architekturen synchronisieren. Die Synchronization Services-API repliziert nicht nur eine Datenbank und deren Schema, sondern stellt auch verschiedene Komponenten zum Synchronisieren von Daten zwischen Datendiensten und einem lokalen Speicher bereit. Anwendungen werden in zunehmendem Maße auf mobilen Clients wie tragbaren Computern und Geräten eingesetzt, die nicht über eine ständige oder zuverlässige Netzwerkverbindung mit einem zentralen Server verfügen. Diese Anwendungen sind auf eine lokale Kopie der Daten auf dem Client angewiesen. Entscheidend ist jedoch auch, dass die lokale Kopie der Daten mit den Daten auf einem zentralen Server synchronisiert werden kann, wenn eine Netzwerkverbindung verfügbar ist. Die Synchronization Services-API, die nach den APIs für den ADO.NET-Datenzugriff konzipiert ist, ermöglicht die Synchronisierung der Daten auf intuitive Weise. Mit dieser API findet das Erstellen von Anwendungen, die eine ständige Netzwerkverbindung erfordern, seine logische Fortsetzung im Erstellen von gelegentlich verbundenen Umgebungen.

Hinweis:

In Projekten für intelligente Geräte wird 2-Tier-Architektur nicht unterstützt. Weitere Informationen hierzu finden Sie unter Gelegentlich verbundene Anwendungen (Geräte).

Installieren der Synchronization Services-API und -Dokumentation

Die Synchronization Services-API gehört nicht zu .NET Framework. Sie wird zusammen mit SQL Server Compact 3.5 installiert. (SQL Server Compact 3.5 wird bei der Installation von Visual Studio standardmäßig installiert.) Die Synchronization Services-Dokumentation wird standardmäßig nicht installiert. Sie ist daher nur verfügbar, wenn die Hilfe für die Onlineverwendung konfiguriert ist. Wenn Sie die Synchronization Services-Dokumentation für die lokale Verwendung installieren möchten, müssen Sie zunächst die Hilfesammlung von der Website Microsoft Synchronization Services for ADO.NET Books Online herunterladen.

Integrieren der Datensynchronisierung in Anwendungen mithilfe von Visual Studio

Für die Integration der Datensynchronisierung in Ihre Anwendung wird von Visual Studio eine Vorlage mit der Bezeichnung Cache für lokale Datenbanken bereitgestellt. Cache für lokale Datenbanken ist als neue Projektelementvorlage verfügbar. (Klicken Sie im Menü Projekt auf Neues Element hinzufügen.) Weitere Informationen hierzu finden Sie unter Gewusst wie: Konfigurieren der Datensynchronisierung in einer Anwendung.

Hinweis:

Einem Projekt für intelligente Geräte kann die Vorlage Cache für lokale Datenbanken nicht direkt hinzugefügt werden. Fügen Sie die Vorlage Cache für lokale Datenbanken stattdessen dem WCF- oder Webdienstprojekt auf mittlerer Ebene hinzu, und teilen Sie anschließend die generierten Synchronisierungskomponenten innerhalb des Projekts für intelligente Geräte. Weitere Informationen hierzu finden Sie unter Gelegentlich verbundene Anwendungen (Geräte).

Ab Visual Studio 2008 SP1 können Sie zusätzlich zum Dialogfeld Datensynchronisierung konfigurieren auch den Assistenten zum Konfigurieren von Datenquellen zur Konfiguration der Synchronisierung verwenden. Wählen Sie bei der Konfiguration eines typisierten Datasets auf der Seite Datenbankobjekte auswählen des Assistenten die Option Zwischenspeichern der lokalen Datenbank aktivieren aus. Weitere Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung mit dem Assistenten zum Konfigurieren von Datenquellen.

Wenn Sie einen Cache für lokale Datenbanken hinzufügen, wird das Dialogfeld Datensynchronisierung konfigurieren geöffnet. In diesem Dialogfeld geben Sie Informationen über den Client und Server an, um die erforderlichen Synchronisierungskomponenten einzurichten. Der Cache für die lokale Datenbank speichert Daten lokal in einer SQL Server Compact 3.5-Datenbank auf dem Client. Sie können eine vorhandene SQL Server Compact 3.5-Datenbank als Cache für die lokale Datenbank verwenden. Falls noch keine lokale Datenbank vorhanden ist, können Sie mit dem Dialogfeld Datensynchronisierung konfigurieren eine neue lokale Datenbank erstellen. Zum Erstellen einer neuen lokalen SQL Server Compact 3.5-Datenbank legen Sie die Clientverbindung (im Dialogfeld Datensynchronisierung konfigurieren) fest, sodass auf Grundlage der für die Serververbindung ausgewählten Tabellen eine neue SQL Server Compact 3.5-Datenbank erstellt wird.

Hinweis:

Mit dem Dialogfeld Datensynchronisierung konfigurieren können Sie Microsoft Synchronization Services für ADO.NET nur für Downloadszenarien konfigurieren. Das bedeutet, dass nach der Konfiguration der Datensynchronisierung mithilfe dieses Dialogfelds der Aufruf von Microsoft.Synchronization.Data.SyncAgent.Synchronize nur die lokale Datenbank mit Änderungen aus der Remotedatenbank aktualisiert. Änderungen, die an den Daten in der lokalen Datenbank vorgenommen wurden, werden nicht zur Remotedatenbank hochgeladen. Nachdem Sie die Datensynchronisierung mithilfe des Dialogfelds Datensynchronisierung konfigurieren konfiguriert haben, können Sie Uploads (bidirektionale Synchronisierung) während der Synchronisierung programmgesteuert aktivieren. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren einer lokalen und einer Remotedatenbank für bidirektionale Synchronisierung.

Konfigurieren der Remotedatenbank für die Synchronisierung

Damit die Datensynchronisierung funktioniert, müssen für jede Tabelle der Remotedatenbank, mit der eine Synchronisierung durchgeführt werden soll, einige zusätzliche Schritte ausgeführt werden. Mit dem Dialogfeld Datensynchronisierung konfigurieren werden SQL-Skripts erstellt, die in der Datenbank ausgeführt werden, um die erforderlichen Objekte zu erzeugen (siehe nachfolgende Tabelle). Alle SQL-Skripts, die vom Synchronisierungs-Designer erstellt werden, werden im Projekt im Ordner SQLScripts gespeichert.

Hinweis:

Die vom Dialogfeld Datensynchronisierung konfigurieren generierten SQL-Skripts werden standardmäßig ausgeführt. Sie können wählen, ob die Skripts generiert und ausgeführt werden, indem Sie die Optionen für die Skriptgenerierung im Dialogfeld Tabellen für die Offlineverwendung konfigurieren festlegen.

In der Standardeinstellung erfolgen die Ausführung der Skripts und die Aktualisierung der Remotedatenbank mithilfe des Dialogfelds Datensynchronisierung konfigurieren automatisch, sobald das Dialogfeld geschlossen wird. Deaktivieren Sie das Kontrollkästchen Skripts beim Schließen dieses Dialogfelds ausführen, wenn die Skripts nicht automatisch ausgeführt werden sollen. Wenn die Remotedatenbank bereits über die erforderlichen Nachverfolgungsspalten, Trigger und die Tabelle für gelöschte Elemente verfügt, werden keine Skripts generiert. Wenn also keine Änderungen an der Remotedatenbank erforderlich sind, werden keine Skripts erstellt.

Die folgende Tabelle enthält eine Liste der erforderlichen Elemente der Remotedatenbank sowie Erklärungen zu den einzelnen Elementen:

Ergänzungen für jede synchronisierte Tabelle der Remotedatenbank

Erklärung

Spalte LastEditDate

Diese Spalte muss in jeder Tabelle, die synchronisiert wird, einen DateTime- oder TimeStamp-Wert enthalten. Sie wird mit der Spalte LastEditDate auf dem Client verglichen, um Datensätze zu ermitteln, die seit dem letzten Synchronisierungsaufruf auf dem Server geändert wurden.

Spalte CreationDate

Diese Spalte muss in jeder Tabelle, die synchronisiert wird, einen DateTime- oder TimeStamp-Wert enthalten. Sie wird mit der Spalte CreationDate auf dem Client verglichen, um Datensätze zu ermitteln, die seit dem letzten Synchronisierungsaufruf auf dem Server hinzugefügt wurden.

Tabelle gelöschter Elemente (Tabellenname_Deleted)

Elemente werden in diese Tabelle verschoben, wenn sie aus der Tabelle auf dem Datenbankserver gelöscht werden. Dies geschieht, um seit dem letzten Synchronisierungsaufruf vom Server gelöschte Datensätze zu ermitteln. Jede Tabelle, die synchronisiert wird, benötigt eine Tabelle gelöschter Elemente, um aus der Remotetabelle gelöschte Datensätze zu verfolgen.

DeletionTrigger (Tabellenname_DeletionTrigger)

Dieser Trigger wird immer dann ausgeführt, wenn ein Datensatz aus der Serverdatenbanktabelle gelöscht wird. Gelöschte Datensätze werden in die Tabelle gelöschter Elemente verschoben. Sie werden deshalb in die Tabelle gelöschter Elemente verschoben, da Datensätze in der Clientdatenbank, die nicht in der Serverdatenbank enthalten sind, sonst als neue Datensätze behandelt und wieder auf dem Server hinzugefügt würden. Die Synchronisierungsdienste stellen anhand der Tabelle gelöschter Elemente fest, dass ein Datensatz aus der Clientdatenbank gelöscht werden muss und nicht wieder der Serverdatenbank hinzugefügt werden soll.

InsertTrigger (Tabellenname_InsertTrigger)

Dieser Trigger füllt die Spalte CreationDate mit dem aktuellen Datum und der aktuellen Uhrzeit auf, wenn neue Datensätze hinzugefügt werden.

UpdateTrigger (Tabellenname_UpdateTrigger)

Dieser Trigger füllt die Spalte LastEditDate mit dem aktuellen Datum und der aktuellen Uhrzeit auf, wenn vorhandene Datensätze geändert werden.

Starten des Synchronisierungsprozesses in einer Anwendung

Fügen Sie nach der Angabe der erforderlichen Informationen im Dialogfeld Datensynchronisierung konfigurieren der Anwendung Code zum Starten der Synchronisierung hinzu. Es ist wichtig zu verstehen, dass durch die Datensynchronisierung die lokale Datenbank aktualisiert wird, nicht jedoch die Tabelle im Dataset oder ein anderes Objekt in der Anwendung. Denken Sie daran, die Datenquelle der Anwendung mit den aktualisierten Daten aus der lokalen Datenbank neu zu laden. Rufen Sie z. B. die TableAdapter.Fill-Methode auf, um die Datentabelle des Datasets mit den aktualisierten Daten der lokalen Datenbank zu laden.

Fügen Sie der Anwendung, in der Sie die Synchronisierung starten möchten, den folgenden Code hinzu:

' Call SyncAgent.Synchronize() to initiate the synchronization process.
' Synchronization only updates the local database, not your project's data source.
Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()

' Add code here to refill your application's data source
' with the updated data from the local database.
// Call SyncAgent.Synchronize() to initiate the synchronization process.
// Synchronization only updates the local database, not your project's data source.
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats =
syncAgent.Synchronize();

// Add code to refill your application's data source
// with the updated data from the local database.

Siehe auch

Aufgaben

Gewusst wie: Konfigurieren der Datensynchronisierung in einer Anwendung

Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung

Gewusst wie: Konfigurieren einer lokalen und einer Remotedatenbank für bidirektionale Synchronisierung

Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung für intelligente Geräte

Konzepte

SQL Server Compact 3.5 und Visual Studio

Gelegentlich verbundene Anwendungen (Geräte)

Weitere Ressourcen

Zugreifen auf Daten (Visual Studio)

Änderungsverlauf

Date

Versionsgeschichte

Grund

Juli 2008

Zusätzlicher Absatz zur Integration der Datensynchronisierung mithilfe des Assistenten zum Konfigurieren von Datenquellen

SP1-Featureänderung.

Juli 2008

Zusätzlicher Absatz zum Aktivieren der SQL Server-Änderungsnachverfolgung beim Konfigurieren der Datensynchronisierung.

SP1-Featureänderung.

Juli 2008

Zusätzliche Hinweise zur Synchronisierung in Projekten für intelligente Geräte.

SP1-Featureänderung.