Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
ACANDO GROUP
Jörg Neumann
Principal bei der Resco GmbH in Hamburg
Associate bei Thinktecture
Beratung, Schulung, Coaching
Buchautor, Referent
Schwerpunkte:
SQL Server
Client-Technologien
Mail: Joerg.Neumann@Resco.de
Blog: WWW.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com 2
Agenda
Herausforderungen
SQL Server Compact Edition
Sync Framework
Ausblick
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Herausforderungen
SQL Server Compact Edition
Sync Framework
Ausblick
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Herausforderungen
Anwendung soll Online & Offline arbeiten
Lokale Datenspeicherung
Automatische Synchronisation
Konfliktlösung
Transparenter Datenzugriff
Automatische Online/Offline-Erkennung
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Lösungsansatz
Lokale Datenspeicherung
SQL Server Compact Edition
Automatische Synchronisation
Synchronization Services for ADO.NET
Transparenter Datenzugriff
DbProviderFactory-Klasse
Online/Offline-Erkennung
NetworkInterface-Klasse
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Herausforderungen
SQL Server Compact Edition
Sync Framework
Ausblick
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
SQL Server Compact Edition
Nachfolger der Mobile Edition
Vormals „Everywhere Edition“
Kostenloser Download
Version 3.5 kommt mit Visual Studio 2008
Für Devices und Desktop
Synchronisation
Läuft im Prozess der Anwendung
Leichtes Deployment
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Einsatzgebiete
Mobile Applications
Runtime und Datenbanken sind sehr schlank
Offline-fähige Clients
Leichte Synchronisation möglich
Single-User-Applications
Lokaler Datenspeicher
Online-Clients
Lokaler Cache
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Funktionsumfang
Bis zu 4 GB pro Datenbank
Eine Datei pro Datenbank (*.sdf)
Sicherheit durch Passwort und
Verschlüsselung
Query Engine des SQL Servers
Zugriff über ADO.NET-Provider oder OleDb
Transaktionen werden unterstützt
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Einschränkungen
Keine Netzwerkfunktionalität
Kein Locking
IIS & ASP.NET werden nicht unterstützt
Keine Views, Prozeduren, Funktionen,
usw.
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Deployment
Runtime ca. 1,5 MB (8 DLLs)
XCopy-Deployment/ClickOnce/CAB-File
Keine Admin-Berechtigung notwendig
Unterstützung durch Visual Studio
DLLs im Anwendungsverzeichnis
MSI-Packet
Erfordert Admin-Rechte
Installiert Assemblies im GAC
Unterstützung durch Microsoft Update
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Zugriff auf CE-Datenbanken
System.Data.SqlServerCe
SqlCeConnection
SqlCeDataAdapter
SqlCeDataReader
SqlCeCommand
SqlCeResultSet
Serverseitige Cursor
Unterstützt Data Binding
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Herausforderungen
SQL Server Compact Edition
Sync Framework
Ausblick
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Synchronization Services for
ADO.NET
Framework zur Synchronisation von DBs
Teil des Sync Frameworks
Als Add-On oder über SQL CE 3.5 verfügbar
Läuft ab .NET 2.0
Zur Zeit noch nicht für Mobile Devices
Client-DB: Compact Edition
Server-DB: ADO.NET Data Provider
Datenbankerweiterungen notwendig
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
15
Architektur
Client
Web
ADO.NET Local Services Remote
SyncAgent
Provider Provider
SyncGroup
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
16
Synchronisationsmethoden
Snapshot-Download
Alle Daten auf die Clients verteilen
Inkrementeller Download
Datenänderungen auf die Clients verteilen
Upload
Alle Client-Daten auf den Server hochladen
Bidirektional
Kombination aus Download und Upload
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Schema-Änderungen
LastChange
Timestamp
Timestamp
Tombstone
Tombstone
Schduled
Client_ID
Creation
Deletion
LastEdit
Cleanup
Trigger
Methode / DB-Feld
Table
Snapshot Download
Inkrementeller Download
Bidirection
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Deployment
Two-Tier
Client hat eine direkte Verbindung zum Server
ServerSync
SyncAgent
Provider
ClientSync
SyncAdapter
Provider
Client-Seite Server-Seite
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Deployment
N-Tier
Synchronisation über Middle-Tier
Sync ServerSync
SyncAgent WS
Proxy Provider
ClientSync
SyncAdapter
Provider
Client-Seite Server-Seite
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Online-/Offline-Erkennung
Namespace System.Net.NetworkInformation
NetworkChange-Klasse
NetworkAvailabilityChanged-Event
NetworkAddressChanged-Event
Klasse NetworkInterface
GetIsNetworkAvailable()
GetAllNetworkInterfaces()
Achtung: Loopback-Adapter beachten!
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Herausforderungen
SQL Server Compact Edition
Sync Framework
Ausblick
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
SQL Server 2008
Change Data Capture
Automatische Änderungsverfolgung
Keine Trigger/Tombstone Tables nötig
Abfrage von Änderungen über Views
Unterstützung für Konfliktsteuerung
Bidirektionale Synchronisation ohne
Custom Code!
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Ressourcen: SQL Compact
SQL Server Compact Edition
Microsoft-Produktseite
http://www.microsoft.com/sql/compact
Compact Edition Team Blog
Blogs.msdn.com/SqlServerCompact
Blog von Steve Lasker
http://blogs.msdn.com/SteveLasker
Blog vom Smart Client Data Team
http://blogs.msdn.com/smartclientdata
Compact Edition Forum
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=15
2&SiteID=1
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Ressourcen: Sync Framework
Sync Framework Developer Center
http://msdn2.microsoft.com/en-us/sync/default.aspx
ADO.NET Synchronization Services
Artikel in Dotnetpro 11/2007 von Jörg Neumann &
Matthias Hönig
Blogs
www.SyncGuru.com
blogs.msdn.com/Synchronizer
http://blogs.msdn.com/SteveLasker
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
{ In-depth support and consulting for
software architects and developers }
http://www.thinktecture.com/
joerg.neumann@thinktecture.com
http://HeadWriteLine.BlogSpot.com
28
SQL Server Compact Edition
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Unterstützte Plattformen
Mobile Devices
Windows CE
Windows Mobile
Desktop
Windows XP
Windows Vista
Windows Tablet PC Edition
Server
Windows Server 2003
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Erstellung von Wartung von
Datenbanken
SqlCeEngine
CreateDatabase()
Shrink()
Compact()
Verify()
Repair()
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Datenbankablage
Standardsuchverzeichnis
MSI/XCopy: Ausführungsverzeichnis
ClickOnce: Datenverzeichnis
|DataDirectory|-Makro
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
33
Application.Run(new MainForm());
}
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Synchronization Services
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Beteiligte Komponenten I
SyncAgent
Verbindet Client- und Server-DB
SyncTable
Definiert die zu synchronisierenden Tabellen
SyncGroup
Gruppierung mehrere SyncTable
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
35
Beteiligte Komponenten II
LocalProvider
Zugriff auf Clientdatenbank
SqlCeClientSyncProvider ist enthalten
RemoteProvider
Zugriff auf die Serverdatenbank
DbServerSyncProvider ist enthalten
SyncAdapter
Serverseitige Synchronisation der Daten
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
36
Beteiligte Assemblies
Microsoft.Synchronization.Data.dll
SyncAgent, SyncTable, SyncGroup, SyncProvider
Clientseite, bei N-Tier auch auf Serverseite
Microsoft.Synchronization.Data.SqlServerCe.dll
SqlCeClientSyncProvider
Clientseite
Microsoft.Synchronization.Data.Server.dll
DbServerSyncProvider, SyncAdapter
Client- (Two-Tier) oder Serverseite (N-Tier)
System.Data.SqlServerCe.dll
ADO.NET Data Provider
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com