Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu.

Post on 05-Apr-2015

105 views 0 download

Transcript of Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu.

Uwe HabermannUwe@VandU.eu

Datenbanksynchronisation

Venelina JordanovaVenelina@VandU.eu

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