sind zwei Welten die bisher nur relativ schwierig zueinander gefunden haben, da es gewaltiges Know How und Arbeit gekostet hat, sich durch Klassendefinitionen usw. zu kämpfen
Um genau diesen Schwachpunkt zu lösen wurden die Active FoxPro Pages (kurz AFP) entwickelt.
Die AFP bietet sich nicht nur für FoxPro Programmierer an, sondern spricht alle xBase - Programmierer an, die Ihre dBASE-Daten ins Internet bringen wollen.
Anstelle eines komplizierten Objektaufrufes und dem Zugriff über ODBC können Sie Ihren gewohnten USE Befehl verwenden um Ihre Dateien zu öffnen.
Es werden alle Befehle, außer deren die eine Bildschirmausgabe machen, unterstützt.
Die AFP besteht aus zwei Teilen. der AFP.DLL einer ISAPI - Applikation welche direkt im Internetserver angesprochen wird und dem VFP - Teil AFP.EXE.
Die AFP.EXE ist Ihrerseits ein OLE-Server, der von der AFP.DLL ein oder mehrmals gestartet wird.
Dies gesamte Arbeit wird auf dem Server geleistet, was auch nun die Beschränkung der VFP - Sprache auf alle Nicht - visuellen Befehle erklärt.
Würde man ein WAIT WINDOW machen, würde dies auf dem Server erscheinen und nicht am Browser am anderen Ende der Leitung.
Das Geheimnis der AFP liegt an den HTML-Seiten. Der FoxPro Code liegt direkt in diesen Seiten eingebettet und wird auf Trickreiche Art und Weise am Server ausgeführt. Dazu weiter unten.
Beispiel aus http://www.active-foxpro-pages.de/demo
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>Active FoxPro Pages</title>
</head>
<body>
<p><font color="#0000FF"><big><big>Alle Kundennamen aus der Datei CUSTOMER</big></big></font></p>
<hr>
<table border="1" width="100%">
<tr>
<td width="20%" bgcolor="#008000"><font color="#FFFFFF">Kundennummer</font></td>
<td width="40%" bgcolor="#008000"><font color="#FFFFFF">Firma</font></td>
<td width="40%" bgcolor="#008000"><font color="#FFFFFF">Ansprechperson</font></td>
</tr>
<%
if not used("customer")
use data\customer in 0
endif
select customer
scan
%>
<tr>
<td width="20%"><%?customer.cust_id%>
</td>
<td width="40%"><%?customer.company%>
</td>
<td width="40%"><%?customer.contact%>
</td>
</tr>
<%endscan%>
</table>
</body>
</html>
Sie sehen am obigen Beispiel, daß purer FoxPro Code zwischen den normalen HTML-Befehlen einbettet wurde.
Die AFP geht nun folgendermaßen vor:
Es wird in einer Datei Repository nachgesehen, ob diese Seite bereits einmal angefordert wurde, bzw. dort bereits vermerkt ist.
Wenn nicht so wird der gesamte FoxPro Code vom HTML-Code getrennt und automatisch ein FoxPro - Programm erzeugt, daß folgendermaßen aussieht
___afp=''
___afp=___afp+__temparray(1)
___afp=___afp+transform(i("Alle Kundennamen aus der Datei CUSTOMER",fox.getpar("lang")))
___afp=___afp+__temparray(2)
___afp=___afp+transform(i("Kundennummer",fox.getpar("lang")))
___afp=___afp+__temparray(3)
___afp=___afp+transform(i("Firma",fox.getpar("lang")))
___afp=___afp+__temparray(4)
___afp=___afp+transform(i("Ansprechperson",fox.getpar("lang")))
___afp=___afp+__temparray(5)
if not used("customer")
use data\customer in 0
endif
select customer
scan
___afp=___afp+__temparray(6)
___afp=___afp+transform(customer.cust_id)
___afp=___afp+__temparray(7)
___afp=___afp+transform(customer.company)
___afp=___afp+__temparray(8)
___afp=___afp+transform(customer.contact)
___afp=___afp+__temparray(9)
endscan
___afp=___afp+__temparray(10)
return ___afp
Nun wird dieser FoxPro Code über einen Laufzeitcompiler direkt am Server ausgeführt. Sie sehen, daß der FoxPro Code in seiner Struktur geblieben ist und nur aus einem Array die HTML-Bestandteile eingefügt werden.
Wurde die Seite bereits im Repository gefunden, so wird nur überprüft ob sich Datum oder Uhrzeit geändert haben. In diesem Falle wird so verfahren, als ob die Seite das erste mal aufgerufen worden wäre.
Wurde die Seite bereits einmal zerteilt, so wird zuerst nachgesehen, ob es eine echt kompilierte Version als .FXP davon gibt. Echt kompilierte AFP - Seiten werden um den Faktor 10 schneller ausgeführt
Wenn ja, wird diese Ausgeführt, ansonsten wird der Interne Codeblock für die Ausführung herangezogen.
Das Ergebnis des AFP - Programmes wird dann wieder über den Internetserver an den Browser zurückgeschickt.
Es wurde natürlich darauf geachtet, daß kein FoxPro Code an den Browser übermittelt wird und daß auch der HTML-Code in keinster Art und Weise verändert wird.
Dies ermöglicht nun, neben FoxPro Code auch noch Java, DHTML, JavaScript oder VBScript einzusetzen.
Dadurch daß alles am Server abgearbeitet wird ist die AFP auch Browserunabhängig. Es muß am Client nichts installiert werden und solange Sie selbst keine browserspezifischen Elemente verwenden, kann jeder aus dem Internet Ihre so erzeugten Seiten betrachten.
Sollten Sie einmal selbst einen Fehler produzieren gibt es zwei Möglichkeiten, wie Sie den Fehler verfolgen können. Wurde die AFP in den Debugmodus geschaltet, so erhalten Sie eine umfangreiche Fehlerbeschreibung mit allen Variablen, Statusanzeigen und Informationen direkt am Browser angezeigt.
Ist der Debugmodus ausgeschalten, so wird dem User eine frei definierbare Fehlerseite gezeigt und Sie als Programmierer bekommen eine Email mit allen Informationen, daß etwas passiert ist.
Der FoxPro Code selbst wird immer in die Zeichen <% und %> eingebettet, so daß sich Frontpage als ideales Tool zum Erstellen der AFP - Seiten eignet. Es kann jedoch ebenso mit anderen HTML-Generatoren gearbeitet werden selbst mit dem Notepad von Windows ist die Programmierung möglich.
Die AFP ist Codezeilenorientiert, das bedeutet, daß keinerlei Objektorientierte Programmierung notwendig ist. Die AFP ist somit für jeden xBase - Programmierer interessant. OOP kann jedoch nach Lust und Laune verwendet werden.
In der AFP wird purer FoxPro Code abgearbeitet, was bedeutet, daß auf DBF - Dateien direkt zugegriffen werden kann und volle Rushmore - Geschwindigkeit erreicht werden kann. es ist jedoch auch möglich, wie in VFP auch, auf ODBC Datenquellen zuzugreifen.
Sie können eine kostenlose und vor allem uneingeschränkt voll funktionsfähige Demoversion mit Dokumentation aus dem Internet downloaden.
http://www.active-foxpro-pages.de
Active FoxPro Pages ein deutsches Produkt mit deutschem Support.