Datenbanksynchronisation - dFPUG

Werbung
Datenbanksynchronisation
Venelina Jordanova
Uwe Habermann
[email protected]
[email protected]
Synchronisierung
* Wofür brauche ich das?
* Datenabgleich mit Filialen
* Datenabgleich mit Vertretern
* Datenabgleich mit Außenstellen
* Wenn Online-Verbindung nicht (immer)
möglich ist
Synchronisierung
* Features
* Mehrere Datenbanken in einem Ordner
oder in verschiedenen Ordnern
* Freie Tabellen
* Berücksichtigung von Berechtigungen
durch eigenen Code möglich
* Unterstützung von Löschungen
Wie geht das?
* FTP Protokoll
* 1 Server – viele Clients
* Austausch von Ini Dateien
* Austausch von Zip Dateien mit Daten
* Parallelbetrieb von Server und Client
Voraussetzungen beim Server
* Ab Windows 2000
* IIS und FTP Server
* Benutzerkonto mit FTP Zugriffsrechten
* Die Zungangsdaten sind den Clients bekannt
* Ordner mit FTP Zugriffsrechten
* Dienst installieren
* Dll registrieren
Installation des Servers
* Benutzerkonto mit FTP Zugriffsrechten
anlegen
* Ordner mit FTP Zugriffsrechten anlegen
* Dienst installieren
* Dll registrieren
* Server.ini Datei anlegen
Server.ini
[FOLDERS]
CLIENTINIFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTINI
SERVERINIFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERINI
CLIENTDATAFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTDATA
SERVERDATAFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERDATA
CLIENTCONFIRMATIONFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTCONFIRMATION
SERVERCONFIRMATIONFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERCONFIRMATION
CREATEDATABASEPRGFOLDER=DATABASES
[\FOLDERS]
[DATABASES]
[C:\FTPSYNC\DATA\vfp],[vfp]
[\DATABASES]
[TIMER]
SYNCHRONIZATIONEXE=C:\FTPSync\FTPSyncServer.exe
*!* Timeouts and delay are in seconds
INITIMEOUT=60
DATATIMEOUT=60
CONFIRMATIONTIMEOUT=60
DELAY=0.5
*!* In log files it will be written if only the file exist
SERVICELOGFILE=C:\TEMP\SYNCSERVICE.LOG
SERVERLOGFILE=C:\TEMP\SYNCSERVER.LOG
[\TIMER]
Voraussetzungen beim Client
* Internetverbindung
* FTP muss möglich sein (frei in Firewall)
* Port konfigurierbar, Standard 21
* Normale VFP 9 Anwendung muss laufen
* Ini Datei mit Pfadeinstellungen
* Protokollierung in Log Datei möglich
Voraussetzungen beim Client
* Die Synchronisierung von gelöschten
Datensätzen funktioniert nur, wenn mit
Cursoradaptern gearbeitet wird
Server Komponenten
* Windows Dienst
* Exe Datei?
* DLL auf dem Server
Client Komponenten
* Klassenbibliotheken
* VfxFtpSync.vcx
* VfxFtpSyncClient.vcx
* VfxFtpSyncClientBase.vcx
Integration in VFPizza
* Vorbereitetes Projekt verwenden!
Anforderungen an die Datenbank
* Wir empfehlen GUIDs zu verwenden
* Feldtyp C(36)
* Von der Datenbank vergebene
Primärschlüssel werden nicht unterstützt!
Anforderungen an die Datenbank
* Es müssen folgende Felder in allen zu
synchronisierenden vorhanden sein:
* Edt_Date T
* Edt_Usr C(36)
* Ins_Date T
* Ins_Usr C(36)
* Del_Flag N(1)
* Sync_Date T
Appl.vcx - cFoxAppl
* .cDel_Fld = Del_Flag
* .lFillEditDateForNewRecords = .T.
* .lUseGUIDsKeys = .T.
* .lUseUTCTime = .T.
VFXSDef.dbf
* Ein Datensatz enthält alle für FTP
erforderlichen Einstellungen
VFXSDef.dbf
* FtpUrl = www.outsourcingitservices.net
* FtpPort = 21
* FtpUpIni = FTPSync/CLIENTINI
* FtpDwnIni = FTPSync/SERVERINI
* FtpUpData = FTPSync/CLIENTDATA
* FtpDwnData = FTPSync/SERVERDATA
VFXSDef.dbf
* FtpUpConf =
FTPSync/CLIENTCONFIRMATION
* Ftpdwnconf =
FTPSync/SERVERCONFIRMATION
* Ftpuser =
* Ftppass =
Start der Synchronisierung
* Neues Formular basierend auf cForm
* Per Drag&Drop cFtpsyncclient aus
VfxFtpSyncClient auf das Formular
fallenlassen
* Commandbutton auf das Formular
ziehen
Start der Synchronisierung
* Im Click Ereignis schreiben:
llRes =
ThisForm.oFtpSyncClient.Execute()
Wait Window llRes
Vfxfopen.dbf
* Eintrag für das neue Formular
hinzufügen
Client.ini
[DATABASES]
[DATA\vfp],[vfp]
[\DATABASES]
[TIMER]
INITIMEOUT=30
DATATIMEOUT=30
CONFIRMATIONTIMEOUT=30
DELAY=0.5
CLIENTLOGFILE=SYNCCLIENT.LOG
[\TIMER]
Jetzt kann getestet werden!

Und jetzt auch noch Code…
* VfxFtpSyncClient.vcx
* cFtpSyncClient
* Kann bei Bedarf angepasst werden
* Insbesondere SELECT
Ablauf der Synchronisierung
* Ini Upload
* Datenaufbereitung beim Server
* Datenaufbereitung beim Client
* Upload einer Zip Datei
* Download einer Zip Datei
* Auspacken des Archivs
* Integration der Daten in die Datenbank
Das Mittagessen wartet…
Um 14.00 Uhr geht es weiter
Herunterladen