uwe habermann [email protected] datenbanksynchronisation venelina jordanova [email protected]
TRANSCRIPT
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