MSDN WebCast - Teil 04 Arbeiten mit Client/Server - dFPUG

Werbung
C/S
Client / Server mit
Visual FoxPro 9.0
deutschsprachige FoxPro User Group
Rainer Becker
Microsoft Visual FoxPro 9.0 WebCast
Teil 4: Arbeiten mit C/S


Mittwoch, 13.7.2005, 16:00 – 17:00 Uhr
Microsoft Visual FoxPro ist schon seit einem Jahrzehnt ein
beliebtes Frontend für Client/Server-Datenbanken wie
Microsoft SQL-Server. Über die Hälfte der FoxPro-Entwickler
weltweit entwickelt auch oder ausschliesslich Anwendungen
auf Basis von MSDE und/oder SQL-Server. In der neuen
Version 9.0 von Microsoft Visual FoxPro werden diese
Möglichkeiten noch weiter ausgebaut. Unter anderem wurde
die Cursor Adaptor-Klasse stark verbessert und weitere
Werkzeuge wie der Dataexplorer werden zur Verfügung
gestellt.
Rainer Becker

dFPUG







Online-Angebote
Loseblattsammlung
VFP-Entwicklerkonferenz
VFP-Lokalisierung
Framework Visual Extend
MVP, MCP, ISV
Wizards & Builders GmbH
Wie bekomme ich VFP ?

Update von 6.0, 7.0, 8.0 sowie VS 97


Internationale und US/Canada-Version




Nicht von VFP 5.0 oder früher
Preisunterschied durch Dollarverfall
Technisch identisch
Kein Support / Marketingbudget für US-Version in BRD
dFPUG bietet exklusiv „Deutsche Version“

Benutzeroberfläche, Berichtsdesigner, Werkzeuge
Zum Warmlaufen: DataExplorer






Vorstellung: Neues Werkzeug DataExplorer
Aufrufbar aus der Taskpane oder direkt
Datenzugriff (Ersatz für Enterprise Manager)
Codegenerierung
Anpassbarkeit direkt oder über Quellcode
Ab VFP 9.0 SP1: evtl. freie Mitlieferbarkeit
Die Idee


Eine Anwendung soll so
erstellt werden, dass beim
Kunden entschieden werden
kann, ob mit einer VFPDatenbank oder mit einem
SQL Server gearbeitet werden
soll.
Alle Formulare und Klassen
müssen unabhängig von der
Datenquelle sein.
Die Möglichkeiten

Remote Views


SPT (SQL Pass Through)






Basierend auf einer Connection im DBC gespeichert
Native Datenbank- oder ODBC-Syntax
Beliebige Befehle/Scripts verarbeitbar
(Fast) vollständige Kontrolle über Befehlsausführung
Für „normale“ Anwendungsfälle eher umständlich
Nichts für die einfache Portierbarkeit
CursorAdapter
Remote Views vs. CursorAdapter


Remote View und Connection im DBC gespeichert
Nachteil:



DBC muss verwendet werden
Verbindungsinformationen im Klartext lesbar (!)
CursorAdapter als programmatische oder visuelle
Klasse in die Exe-Datei eingebunden



Zur Laufzeit beliebig konfigurierbar
Mit DBC und Remote Datenbanken einsetzbar
Vererbung möglich für bessere Wartbarkeit
Vorteile SQL Server

Verfügbarkeit



Datensicherheit



Clients haben keinen Einfluss auf die Serverdatenbank
Wartungsaufgaben und Backup im laufenden Betrieb
Datenbank ist vor direktem Zugriff geschützt
Security-Modell
Skalierbarkeit
Nachteile SQL Server

Betreuungsaufwand



Qualifiziertes Betreuungspersonal notwendig
Einzelne Tabellen können nicht kopiert oder ersetzt werden
Lizenzkosten

Oder kostenlos für den Einstieg:



SQL Server Desktop Engine (MSDE)
SQL Server 2005 Express
Oder VAR-Vertrag mit Microsoft
Optimierungsmöglichkeiten DBF






Verzeichniskomprimierung (+10% Performance!)
Virusfilter für Endungen abschalten
Verzicht auf Verschlüsselung (siehe oben)
Verzicht auf Indizes mit wenig Unterscheidung
Abschaltung Opportunistic Locking
Hardware




Mehrere / schnellere Netzwerkkarten
User auf Stränge verteilen (z.B. 10 User/Strang)
Gute HD-Controller mit viel Cache
(notfalls) Verteilung von DBF und CDX auf versch. Festplatten
Querverweise

03-21 Schützen einer Tabelle in einem DBC


03-23 Schützen von VFP Daten


Verwendung von Datenbankcontainerereignissen
Verhindert Sichtbarkeit des Datenverzeichnisses und somit
Zugriff durch Endanwender!
03-24 Die Normalisierung von Daten

generell und immer sinnvoll und notwendig
Upsizing

VFP Upsizing Wizard


xCase (und andere Tools)



Update für SQL-Server 2005 angekündigt
Gute VFP-Unterstützung
Möglichkeit zur Massenänderung (DBFs!)
Ankündigung in eigener Sache

VFX Upsizing Wizard
Die Lösung


CursorAdapter
Vorteile:







Klasse – Vererbung, Eigenschaften, Methoden
Erstellter Cursor ähnlich Ansicht
Einheitlicher Datenzugriff
Datenzugriff auf DBC und SQL Server möglich
Umschaltbarkeit zur Laufzeit
Typkonvertierung möglich
Builder in VFP vorhanden -> Beispiel 
Wie macht man es richtig?




CursorAdapter-Klasse verwenden
ConnectionManager
ConnectionManager liest Datenbankinformationen
aus Konfigurationsdatei
Wichtig: CursorAdapter-Funktionalität unbedingt in
einer Klasse speichern -> keine Änderung in der
Datenumgebung von Formularen beim Wechsel der
Datenquelle
Programmstart




Im Init Ereignis des Anwendungsobjekts wird der
ConnectionManager instanziiert
Aus einer verschlüsselten Tabelle werden die
Datenbankinformationen gelesen
Beim Instanziieren eines CursorAdapters wird vom
ConnectionManager eine Connection geholt
Die CursorAdapter-Klasse verwendet die
Informationen des ConnectionManagers
(Der gezeigte Code ist frei downloadbar)
CursorAdapter Klasse




Herstellen der Verbindung zur Datenbank über den
ConnectionManager
Holen von ID-Werten
Wartbarkeit
Eingriffsmöglichkeit an vielen Stellen

BeforeUpdate, AfterUpdate
IDs



IDs sollten von der Datenbank vergeben werden
CursorAdapter ermöglichen diese IDs nach dem
Speichern aus der Datenbank zu holen
InsertCmdRefreshCmd – wird nach dem Insert
ausgeführt – Hier können IDs geholt werden

GETAUTOINCVALUE() bei DBC
select * from <myTable> where <IdField>=GETAUTOINCVALUE()

@@IDENTITY bei SQL Server
Connection Manager Klasse


Instanziierung ohne Datenanbindung
Herstellen einer(!) Verbindung beim ersten Bedarf



Auslesen der Datenbankinformationen aus einer Datei
möglich
Eine Connection für alle Datenzugriffe der Anwendung
Verwendung mehrerer Datenbanken in einer
Anwendung

In einer Eigenschaft jedes CursorAdapters steht der zu
verwendende Connection Manager
Planen einer neuen Anwendung



Nur mit CusorAdapter Klasse arbeiten!
Connection Manager verwenden
Vorteile:




Es wird nur 1 Verbindung benötigt
Austauschbarkeit der Datenquelle
Wechsel von DBC zu SQL möglich
Entscheidung je Kunde ob DBC oder SQL verwendet
werden soll
Ein Beispiel aus der Praxis




VFP
VFP?
Venelina´ Fanstastic Pizzas

VFPizza


Customers.scx
Erstellt mit dem VFX - Form Builder



Steuerlemente zur Eingabe von Parametern hinzugefügt
CursorAdapter mit dem CA Wizard erstellt
SelectCmd um Where-Klausel erweitert
VFPizza



Orders.scx
1:n Formular
Erstellt mit dem VFX - Form Builder



Steuerlement zur Eingabe von Parametern hinzugefügt
CursorAdapter mit dem CA Wizard erstellt
SelectCmd um Where-Klausel erweitert
Datenquellen bearbeiten
Beispiel: Manage Config.vfx



Verwaltung des Datenzugriffs sinnvoll / notwendig
Dialog in der Anwendung beim Kunden praktisch
Problemloser Wechsel zwischen DBC und SQL
Server


ConnectionString empfehlenswert
Verschlüsselung mit Kennwort


Einstellung mit dem Application Builder
goprogram.cconfigpassword
Test

Läuft die Anwendung mit
DBC und SQL Server?

Download Beispiel mit
Quellcode unter
http://files.visualextend.de/
files90/VFPizza90.zip
(kein VFX benötigt!)
CursorAdapter Klasse
Was ist neu?


Maximale Länge eines Eigenschaftwerts bei Eingabe: 8 KB
Auto-Refresh-Unterstützung


Erweiterte Refresh-Unterstützung






RecordRefresh(), BeforeRecordRefresh(), …
Verzögertes Abrufen von Memofeldern


InsertCmdRefreshFieldList, InsertCmdRefreshCmd,
InsertCmdRefreshKeyFieldList, UpdateCmdRefreshFieldList, …,
RefreshTimestamp
DelayedMemoFetch(), FetchMemoDataSource, …
Transaktionen bei Update, Insert, Delete: Eigenschaft UseTransactions
Besseres Konflikthandling ConflictCheckType / ConflictCheckCmd (SP1)
Neue Eigenschaft TimestampFieldList
Lesen und Schreiben von hierarchischen XML
Diverse Erweiterungen bzgl. ADO
Weiterführendes Material

Visual FoxPro 9.0




Visual FoxPro 8.0



Updatebuch
Roadshow-CD
Lokalisierungs-CD
Updatebuch
Deutsche Hilfedatei
Online-Angebote der dFPUG

Forum, Portal, eNewsletter, Homepage, Wiki
Teil 5: Arbeiten mit Berichten


Mittwoch, 10.8.2005, 16:00 – 17:00 Uhr
Die objektorientierte Entwicklungsumgebung und relationale
Datenbank Microsoft Visual FoxPro liefert seit jeher eine
Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist
dabei der Berichtsgenerator, der lizenzkostenfrei an alle
Anwender mitgeliefert werden darf. In der neuen Version 9.0
wurde der Berichtsgenerator grundlegend überarbeitet und
massiv erweitert. Behandelt werden die neuen Werkzeuge für
die Gestaltung und Anzeige von Berichten durch Entwickler
und im neuen geschützten Modus durch Endanwender sowie
die neuen Anforderungen an die Auslieferung der
Komponenten mit der Anwendung.
Teil 6: Ausführen von Berichten


Mittwoch, 17.8.2005, 16:00 – 17:00 Uhr
Die objektorientierte Entwicklungsumgebung und relationale
Datenbank Microsoft Visual FoxPro liefert seit jeher eine
Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist
dabei der Berichtsgenerator, der lizenzkostenfrei an alle
Anwender mitgeliefert werden darf. In der neuen Version 9.0
wurde der Berichtsgenerator grundlegend überarbeitet und
massiv erweitert. Behandelt werden die neuen Ausgabeoptionen und die Programmierbarkeit zur Laufzeit in
verschiedenen Beispielen sowie die zusätzlich mögliche
Erweiterung der Berichtsausgabe in PDF-Dateien.
Vielen Dank!
Fragen an [email protected]
oder besser http://forum.dfpug.de
Besuchen Sie unsere Webseiten: http://www.dfpug.de,
http://portal.dfpug.de, http://forum.dfpug.de,
http://newsletter.dfpug.de, http://devcon.dfpug.de,
http://roadshow.dfpug.de, http://www.visualextend.de,
http://www.linuxtransfer.de, http://www.visualfoxpro.de
Herunterladen