Session D-ASP

Active FoxPro Pages
/ Foxisapi / Internet-Applikationen

Peter Herzog
ProLib Software GmbH


Einführung

Internet. Das Schlagwort des Jahres 1996/97 und keiner weiß genau wie es funktioniert. Dieses Dokument soll Ihnen helfen, sich das Grundwissen anzueignen und nach dessen Studium selbst einen Internet- / Intranetserver aufzubauen.

Als erstes taucht bei vielen die Frage auf: „Was ist der Unterschied zu Intranet und Internet"

Dies ist relativ leicht zu beantworten.

Unterschied zwischen Internet und Intranet

Für beides sind zwei Bestandteile von Nöten.

Da wir auf unserem Server mit Visual FoxPro arbeiten wollen, müssen wir als Hardware einen Intel Rechner verwenden (Industriestandard) und als Software einen sogenannten ISAPI-fähigen Internetserver.

ISAPI-fähige Serversoftware

Auf allen von Microsoft stammenden Servern habe ich ISAPI getestet und kann die Funktionsfähigkeit bestätigen.

Es ist aber nur auf dem IIS unter Windows NT Advanced Server sinnvoll, Webzugriffe professionell zu gestalten. Der Peer Web Service von Windows NT Workstation erlaubt nur 10 parallele Zugriffe und unter Windows 95 ist der Zugriff derartig langsam, daß es keinen Sinn macht, damit zu arbeiten. Zum reinen Test und zum Ausprobieren sind jedoch alle geeignet.

Nun das Wichtigste, das „Internetten" erst möglich macht.

Das TCP/IP Protokoll.

Als das Internet erfunden wurde, hieß es noch ARPANet und man suchte ein Protokoll, mit dem man einfach und sicher Daten über lange Wegstrecken transportieren konnte. Wie im richtigen Leben braucht man eine Adresse, um eine Botschaft an jemand anderen schicken zu können. Genauso funktioniert es beim TCP/IP Protokoll. Diese Adresse besteht immer aus 4 Byte, also 32 Bit. Damals dachte man, daß dies ausreichen sollte, um alle Computer auf der ganzen Welt miteinander zu verbinden. Heute ist man etwas schlauer geworden und versucht bereits neue Adressen mit insgesamt 6 Byte zu schaffen. Diese spezielle Adressierung steckt allerdings noch in den Kinderschuhen und es gibt bisher nur sehr vereinzelt Programme, die mit dieser Art von IP-Nummern zurechtkommen.

Auf alle Fälle muß im Internet jede Adresse eindeutig sein, was durch internationale Gremien überwacht wird.

WWW.RIPE.NET

Man kann direkt im Internet abfragen, wem eine bestimmte Adresse zugeordnet ist. Versuchen Sie einmal unter http://www.ripe.net unter Database eine WHOIS Abfrage zu starten. Dort erhalten Sie genaue Auskunft, wer für bestimmte Adressen zuständig ist. Also Beispiel können Sie die Adresse des ProLib-Servers verwenden, der unter der Adresse 194.122.63.116 beheimatet ist.

Sie haben hier bereits die Schreibweise von Internetadressen gesehen. Es sind immer 4 Zahlen getrennt durch einen Punkt. Erlaubt sind jedoch immer nur die Zahlen 1 bis 254. 0 und 255 sind reservierte Zahlen und somit wird die Zahl der möglichen Adressen bereits eingeschränkt.

Die Adressen 1.x.x.x bis 127.254.254.254 sind ebenfalls reservierte Adressbereiche, so daß auch hier das Internet bereits auf 50 % seiner theoretischen Kapazität beschränkt ist.

127.0.0.1

Gerade die Adresse 127.0.0.1 zeigt immer auf den eigenen Rechner. Das bedeutet, daß unabhängig von der am Computer eingestellten IP-Adresse mit 127.0.0.1 immer die eigene Hardware gemeint ist. Diese Adresse wird auch als localhost bezeichnet.

192.168.x.x

Die Adressen von 192.168.1.1 bis 192.168.254.254 haben ebenfalls eine besondere Bedeutung. Diese Adressen werden nicht „geroutet". Das bedeutet, daß solche Adressen besonders geeignet sind, Netzwerke aufzubauen, die von außen nicht „betreten" werden können.

Das Wort „Netzwerke" ist nun bereits gefallen, also kommen wir bereits zum nächsten Begriff. Die Netzmaske.

Netzmaske

Beim TCP/IP Protokoll können verschiedene IP-Nummer zu Netzen zusammengefasst werden. Um genau festzustellen, was nun Netzwerk und was im Netzwerk enthaltene Computer sind, wird eine Bitmaske verwendet, die ähnlich wie die IP-Nummer aus 4 Byte besteht.

Wenn wir uns die Netzmaske 255.255.255.0 der IP-Adresse 192.168.1.22 ansehen, so stellt sich die Maske als 11111111.11111111.11111111.00000000 dar.

Alle Einser zeigen das Netzwerk an (Alles was mit 192.168.1.x anfängt) und die Nuller weisen auf die in dem Netz enthaltenen Computer hin (192.168.1.1 bis 192.168.1.254)

Die Adresse 192.168.1.22 ist also der 22te Computer (oder Computer mit der Adresse 22) im Netz 192.168.1.

Bei den Netzmasken gibt es nun 3 Begriffsunterschiede. Ein Class-A Netz hat die Netzmaske 255.0.0.0. In diesem Netz können also theoretisch 254*254*254 Computer stecken. Das sind satte 16.387.064 Stück. Soweit mir bekannt ist, hat die Firma Siemens 2 solcher Class-A Netze. Das amerikanische Militär wird wohl auch ein paar davon besitzen und AT&T als einer der größten Provider wird sich wohl auch solch ein Stück des Kuchens reserviert haben. Im Falle von AT&T ist mir bekannt, daß diese Firma alleine mehr als 4000 Internetserver betreibt. Wenn man nun Router, Firewalls, und Clientrechner dazuzählt, kommt man leicht auf eine Zahl, die aus dem Rahmen von „kleinen Netzwerken" hinausreicht.

Ein Class-B Netz hat die Netzmaske 255.255.0.0 also 64516 Computer in einem Netz. Diese Art von Netzen gibt es bereits öfter, allerdings sind die nur sehr großen Internetprovidern vorbehalten. Die wiederum zerteilen diese Netze wieder in kleinere Brocken, wodurch die Class-C Netze enstehen.

Ein Class-C Netz hat die Netzmaske 255.255.255.0, wodurch in einem Netzwerk 254 Computer miteinander „reden" können.

Router

Wenn zwei Computer aus verschiedenen Netzen miteinander kommunizieren sollen, so ist ein Router von Nöten, der die Informationen von einem Netz in das andere transportiert und umgekehrt.

Das spezielle Netzwerk, das mit 192.168 anfängt ist aber per Definition nicht Routerfähig, was nun ein solches Netz extrem sicher gegen Fremdzugriff absichert.

Wenn nun doch geroutet werden soll, so ist es notwendig, eine spezielle Software- oder Hardwarelösung zu haben, die zwischen zwei solchen Netzen eine Verbindung aufbauen kann. Dies sind sogenannte Gateways, die heutzutage bereits als sogenannte Firewall oder Proxy aufgebaut sind.

Firewall

Eine Firewall ist nichts anderes als ein Filter, der bestimmte Datenpakete auf seine IP-Adresse untersucht und diese Pakete dann weiterreicht oder zurückweist. Dadurch wird verhindert, daß sich jemand unbemerkt in ein Netz einschleichen kann und andererseits dafür gesorgt, daß jemand innerhalb des Netzes nicht hinaus kann. (Verhindern des Surfens usw.)

Proxy

Ein Proxy ist nichts anderes als ein Cachespeicher, der bestimmte Dateien, die über diese Leitung geschickt werden zwischenspeichert und wenn jemand diese Daten nochmals anfordert, diese aus dem Cachespeicher holt, was dazu führt, daß die Daten nicht nocheinmal aus weit entfernten Servern geholt werden müssen.

Im Internet dürfen Sie sich Ihre IP-Adressen niemals selbst aussuchen. Im Intranet, also Ihrem eigenen Netzwerk, können Sie jede Adresse und Netzmaske verwenden, die sie wollen. Ich selbst verwende immer die 192.168.x.x mit einer Netzmaske von 255.255.255.0 um ein Netzwerk zu konfigurieren. Da bin ich mir 100%ig sicher, daß mir keiner während eines richtigen Internetzugriffes auf meinen Rechner kommt und irgendetwas anstellt, was ich persönlich nicht besonders lustig finden würde.

Als das Internet zu wachsen begann, kam bald der Moment, an dem man sich die einzelnen IP-Adressen der Computer nicht mehr merken konnte. Eine Namensauflösung mußte her, also eine Zuweisung von IP-Adresse zu einem Namen.

Domainnamen

Die Domain wurde erfunden.

Man hat sich entschieden, alle Namen zuerst einmal in verschiedene Gruppen zu unterteilen. Schulen haben die Top-Level-Domain .EDU (So nennt man diese Endungen). Das Amerikanische Militär ein .MIL und normale Firmen ein .COM.

Es gibt noch ein paar mehr, sind jedoch für uns „normale" Internetuser nicht von Bedeutung.

Da die Welt nicht nur aus Amerika besteht, wurden für jedes Land auch noch lokalisierte Top-Level-Domains eingeführt. .DE für Deutschland, .UK für England, .IT für Italien. Als Beispiel sollten Sie einmal www.ferrari.it besuchen, wenn Sie mal eine Auffrischung Ihrer Traumauswahl benötigen. <g>

Nun fehlt noch der eigentliche Name der Firma, Schule oder Organisation. Dies ist der eigentliche Domainname, der eine eindeutige Zuweisung von IP-Adresse und Name darstellt. Im Falle von www.ferrari.it ist ferrari.it die ordentliche Domain, die der IP-Adresse 194.243.155.140 zugeordnet ist.

In einem Browser (MS-Internet Explorer oder Netscape Navigator) ist es grundsätzlich egal ob man den Domainnamen angibt oder die IP-Adresse. Da sich jedoch die IP-Adresse unter Umständen ändern kann (Wenn der Server von einem Provider zu einem anderen übersiedelt) ist der Domainname das sicherste.

Nun kommen wir noch zu dem berühmten www vor den Domainnamen. Diese Erweiterung (ja Erweiterung, obwohl sie nicht am Ende des Namens steht) ist die sogenannte Sub-Level-Domain, die auf ein und dem selben Server noch bestimmte Dienste bezeichnet.

Protokolle

WWW bezeichnet immer das sogenannte HTTP-Protokoll, FTP das File Transfer Protokoll usw. Diese Protokolle sind auf TCP/IP aufgesetzt und bezeichnen wiederum verschiedene Arten der Datenübertragung. Vergleichen Sie es mit dem Telefon. Auf ein und der selben Leitung können Daten, Faxe und Sprache übertragen werden. Wenn man selbst kein Suaheli versteht, so wird man nie Kontakt zur Gegenseite aufnehmen können. Genauso sieht es mit den einzelnen Protokollen aus. FTP Programme können nicht mit WWW (HTTP) Programmen angesprochen werden. Jedes dieser Protokolle hat auch noch eine Nummer. 21 ist FTP, 80 ist HTTP usw. Dies aber nur als Nebeninformation.

Nun haben wir bereits das Grundwissen erlangt, um einen Internetserver (Intranetserver) aufzubauen.

Der Server und die Hard- und Software

Als Minimum für einen Internetserver sollten Sie einen Pentium 90 mit 32 MB verwenden. Die Festplatte ist mit einem Gigabyte groß genug. (Kleinere Platten sind heutzutage fast nicht mehr zu bekommen.)

Dann benötigen Sie vorzugsweise Windows NT Advanced Server. Darin ist bereits der Internetserver in der Version 3.0 enthalten. Das gleiche gilt für Windows NT Workstation. Bei Windows95 können Sie sich bei Microsoft den Personal Webserver kostenlos vom Internet herunterladen. Achten Sie jedoch darauf, daß Sie die richtige Datei für die richtige Sprachversion nehmen. Unter WWW.MICROSOFT.COM können Sie unter Search nach PWS suchen. In der darauffolgend erscheinenden Liste suchen Sie sich die deutsche Version aus, wenn Sie ein deutsches Windows95 haben.

Bleiben wir jedoch bei Windows NT. Bei einer Neuinstallation werden Sie automatisch gefragt, ob Sie den Dienst Internetserver installieren wollen. Wenn Sie dies nachträglich machen wollen, so finden Sie die benötigten Files im Unterverzeichnis \inetsrv auf Ihrer CD.

Standardmäßig können Sie drei Dienste einrichten FTP, WWW und Gopher. Gopher ist ein sehr alter Dienst und wird heutzutage selten verwendet. Er ermöglicht das betrachten oder kopieren von Dateien in einem ansprechendem Format. Also ein besseres DIR, COPY und TYPE als unter DOS. FTP ist für reines Dateikopieren vom und zum Server. WWW ist für die bunte Welt des World Wide Webs zuständig.

Vergessen Sie dabei nicht, daß TCP/IP Protokoll mitzuinstallieren, da ansonsten kein Inter-Intranet möglich ist.

Direkt bei der Installation werden Sie dann auch nach IP-Nummer und Netzmaske gefragt, die Sie sich schon mal ausdenken sollten. Sie können diese Nummern natürlich später auch noch ändern.

Die Abfrage nach dem Gateway ist nur dann zu beantworten, wenn es ein richtiger Internetserver werden soll. Dies ist dann die Adresse des Computers, der die Verbindung zum echten Internet darstellt. Ohne ein solches Gateway kann kein Internetserver funktionieren. Diese IP-Adresse bekommen Sie dann von Ihrem Provider, ohne den Sie ohnehin nichts machen können. Aber dazu später.

Wenn Sie nun den Server- und auch den Internetserver installiert haben, können Sie von einer anderen Station im Netzwerk (welche natürlich auch TCP/IP haben muß und im selben Netzwerk sein muß) einen PING auf Ihre neue Errungenschaft machen.

PING

Das Dienstprogramm PING.EXE schickt Datenpakete zu einem TCP/IP Rechner und der wiederum antwortet auf Ihre Anfrage.

Ein PING von meiner Windows95 Maschine auf einen meiner Server sieht folgendermaßen aus:

Ein PING auf meiner Windows95 Maschine selbst sieht folgendermaßen aus:

Da kommt diese ominöse Adresse 127.0.0.1 ins Spiel, die auf den Namen localhost geroutet wird. Dies ist beste Beweis, daß das eigene System funktioniert.

Wir sehen auch zusätzlich, daß der Name meines eigenen Rechners hp-work ist. Ein PING auf diesen Namen verrät uns nun die eigene IP-Adresse:

Bitte beachten Sie, daß die Abfragen mit den Gerätenamen nur im eigenen Netzwerk funktionieren und nichts mit den Domainnamen zu tun haben.

Erst durch einen Domainnamensserver erhalten Sie den richtigen Namen geliefert. Einen solchen Domainserver bekommen Sie automatisch zugewiesen, sobald Sie sich mit dem Internet verbinden. Das erledigt meistens der Provider. Nur T-Online hat lange Zeit die Eingabe der Domainserver auf Ihrer Seite verlangt.

Ein solcher Domainserver ist nun dafür zuständig, Ihre Anfrage auf, sagen wir mal www.prolib.de in eine IP-Adresse umzuwandeln. Wenn Ihr zuständiger Domainserver dies selbst nicht weiß, so fragt er automatisch den Hauptdomainserver. Für jede Top-Level-Domain gibt es einen Rechner in der Welt, der alle Domainnamen in einer Datenbank verzeichnet hat.

Dies alles ist jedoch nur technischer Hintergrund und kein normaler Internetuser oder Internetserver-Betreiber wird jemals damit in Berührung kommen. Wichtig zu wissen ist nur, daß es für jede Domain einen primären Domainserver und einen sekundären Domainserver geben muß. Die Domainserver sind auch direkt beim NIC oder RIPE abzufragen und haben die Aufgabe, die richtige Zuweisung zwischen IP-Adresse und Domain zu erledigen.

WWW.NIC.DE

Mit den Domainnamen ist es so wie mit den IP-Adressen. Ein Gremium, oder besser gesagt eine Firma, hat die Verwaltung der Domainnamen übernommen. Diese Firma nennt sich NIC (Network Information Center) und ist für alle deutschen Domains (Top-Level DE) unter www.nic.de zu finden (www.internic.net für Amerika). Dort kann man auch abfragen, ob gewisse Domainnamen bereits vergeben sind und wer sich hinter welcher Domain versteckt. Sie sehen, das „gewußt wie" ist im Internet das um und auf.

Wie Sie selbst einen Domainserver einrichten wird weiter unten speziell erklärt.

Internet Service Provider

Wenn Sie einen Server im Internet einrichten wollen, so können Sie dies nur mit Hilfe eines ISP (Internet Service Provider) machen. Dies sind Firmen, die nicht nur das „Surfen" im Netz ermöglichen, sondern meistens auch die Anbindung des eigenen LANs und des eigenen Servers als Dienstleistung anbieten.

Der eigene Server im Internet ist eine relativ teure Angelegenheit und geht über das reine „Webseiten publizieren" weit hinaus. Grundsätzlich müssen Sie zwei verschiedene Arten unterscheiden.
Der Server steht bei Ihnen im Haus und Sie haben eine Stand- oder Wählleitung zum Provider. Daß dabei die Telekom sich ins Fäustchen lacht, dürfte Ihnen wohl klar sein. Auch dürfen Sie bei den reinen Betriebskosten, die Ihnen der Provider berechnet, teilweise heftig in die Geldtasche greifen.. DM 800,-- bis DM 1000,-- pro Monat sind in München keine Seltenheit. Dazu kommen die Standleitung, die in Kilometern berechnet wird und 2. Router. Einer bei Ihnen, einer beim Provider und Sie können sich getrost wieder ans Geldverdienen machen, damit die laufenden Kosten gedeckt werden. Der Nebeneffekt ist allerdings, daß Sie Ihren Server bei sich im Hause haben und er jederzeit mit Daten usw. gefüttert werden kann. Auch das Internetsurfen (und jeder andere Dienst) ist damit für die ganze Firma erledigt.
Der Server steht direkt bei Ihrem Provider (Serverhosting). Das hat mehrere Vorteile. Unter anderem die meistens wesentlich größere Geschwindigkeit der Datenübermittlung ins Internet. Normalerweise „gönnen" Sie sich eine ISDN-Leitung also 64 KB um Ihren Server anzuschließen. Beim Provider ist dies meistens ein Vielfaches, daß meistens bei 2 Gigabyte aufhört. Die Firma ProLib hat ihren Server direkt beim Provider stehen, was natürlich für deren Kunden einen wesentlich schnelleren Zugriff bedeutet, als wenn eine ISDN-Leitung als Flaschenhals dazwischenliegen würde. Die Wartbarkeit eines solchen Servers ist meistens kein Problem, da man den Server per FTP mit Daten versorgen kann oder z.B. mit pcAnywhere den Serverbildschirm direkt vor sich sieht. Vom Nebeneffekt der kleineren Telefonrechnung wollen wir gar nicht erst reden.

Bei letzterer Version ist auch der Standort des Servers nicht das Ausschlaggebende. Mein eigener Server ist z.B. 90 Minuten Autofahrt entfernt beheimatet. Telefonmäßig ist dies in der 200 Km Zone, aber ich kann ihn trotzdem jederzeit über meinen lokalen Provider, bei dem ich einen reinen "Surfaccount" zum Ortstarif habe mit pcAnywhere erreichen.

Für unser Intranet haben wir nun alle Informationen beisammen, um loszulegen.

Zusammenfassung.

Server mit Internetsoftware und TCP/IP Protokoll.
IP-Adresse am Server mit richtiger Netzmaske (Ich empfehle 192.168.1.1 / 255.255.255.0).
Workstation mit TCP/IP und einer anderen IP-Adresse (z.B.: 192.168.1.2 / 255.255.255.0. Achten Sie darauf, daß die Netzmaske in Ihrem Netzwerk immer gleich ist.
Ein PING von Ihrer Workstation auf den Server (PING 192.168.1.1) sollte keinen Timeout ergeben.

Wenn dies alles erledigt ist, so können Sie mit Ihrem Browser von der Workstation bereits auf Ihren Server zugreifen.

Geben Sie dazu zuerst einmal als URL (Die Adresse) die IP-Adresse Ihres Server an. Abhängig davon, ob es WinNT oder Win95 ist, bekommen Sie bereits eine vorgefertigte Seite geliefert.

Ihr Intranet funktioniert und wir können es noch weiter ausbauen.

Als erstes können Sie bereits anstelle der IP-Adresse den Computernamen eingeben. Es sollte das gleiche Ergebnis liefern. Wenn Sie einen Domainserver eingerichtet haben, so können Sie natürlich auch über Ihren Domainnamen auf Ihren Server zugreifen.

Als Sie die Internetsoftware installiert haben, wurden Sie nach den Verzeichnissen gefragt, in denen Ihre Daten (HTML-Dokumente) abgelegt werden sollen. Unter Windows NT ist dies defaultmäßig das Verzeichnis \inetpub\wwwroot für WWW und \inetpub\ftproot für FTP.

Unter \inetpub\wwwroot werden Sie auch bereits eine DEFAULT.HTM finden.

Im Internet Information Server von Microsoft ist ein Mechanismus eingebaut, der automatisch eine default.htm an den Browser überträgt, wenn keine HTM-Seite angegeben wird. Sie können natürlich dieses Defaultverhalten ändern und jede beliebige Datei als Default eintragen. Wie z.B. die unter Unix gewöhnte INDEX.HTM.

Jedes Unterverzeichnis, daß Sie am Server unter dem wwwroot einrichten können Sie auch im Internet darstellen.

Beispiele:

    \inetpub\wwwroot

    Servername

    \inetpub\wwwroot\folder1

    Servername/folder1

    \inetpub\wwwroot\extralangername

    Servername/extralangername

Achten Sie allerdings darauf, daß keine Leerzeichen, Umlaute und Sonderzeichen vorkommen.

WWWPAGE & SERVER

Die einfachste und zugleich älteste Lösung VFP und das Internet miteinander zu verbinden, ist das CGI. Dies ist ein einfaches Aufrufen einer EXE-Datei (oder COM), wobei dieses Programm eine HTML-Seite erstellt und diese dann durch den Server an den Browser geschickt wird. Einfachstes Beispiel dazu ist WWWPAGE, welches bereits mit VFP3.0b funktioniert.

Sie erhalten die Bestandteile unter WWW.MICROSOFT.COM/VFOXPRO Downloadarea. Sie finden dort zwei Files WWWPAGE.EXE und SERVER.EXE. Beide müssen Sie in einem Verzeichnis starten. Die Dateien entpacken sich selbstständig.

Wenn Sie unter VFP5 arbeiten so müssen Sie das Projekt SERVER neu kompilieren. Nach dem Start der SERVER.EXE werden Sie nach dem Verzeichnis wwwroot und scripts gefragt. Der Server zeigt dann ein Protokollfenster.

Speichern Sie dann noch die Datei VFPCGI.EXE in das Scriptsverzeichnis und rufen Sie im Browser folgende URL auf server/scripts/vfpcgi.exe (Server entspricht natürlich Ihrem Servernamen)

Sie werden bemerken, daß sich im VFP (im Protokollfenster der SERVER.EXE) drei Zeilen zeigen. Der Browser selbst wird eine Fehlermeldung bringen, daß kein IDC-File angegeben wurde.

Grundsätzlich funktioniert bereits die Kommunikation zwischen Internet und VFP. Die VFPCGI.EXE erwartet als Parameter die Angabe eines IDC-Files, welches vordefiniert ein Selectstatement enthält und die Angabe eines Templates, in dem das Layout der Ausgabe gespeichert werden soll.

Da der Quellcode sowohl vom Server als auch vom VFPCGI.EXE (C++ Quellcode) dabei ist, kann alles nach seinen Vorstellungen gemäß geändert werden.

Dies ist ein etwas simples Beispiel, wie Daten aus VFP heraus in das Internet geschickt werden. Ein Liveerlebnis dieses Tools können Sie auf www.homnick.com/vfpiwiz.htm erleben.

Ein weiteres Tool, um dies zu erledigen ist

FOXWEB

Sie finden die Software als 30 Tage Version unter WWW.FOXWEB.COM. Eine Erweiterung zur ISAPI Fähigkeit ist bereits im Betastadium.

Ähnlich wie WWWPAGE arbeitet die Software CGI-basierend. Das bedeutet, daß ebenfalls ein externes Programm darauf wartet, Kommandos entgegen zu nehmen, eine HTML-Seite zu erstellen und das Ergebnis dem Internetserver zurückzugeben.

Die Serverkomponente (FWSTART.EXE) ist inzwischen fähig, als Service am NT-Kernel zu laufen und sich im Systray einzutragen.

Die Programmierung, was denn nun geschehen soll ist so einfach wie das schreiben eines Unterprogrammes, wobei es gewisse Variablen gibt, die mir genau angeben, was wie wo und wann geschehen soll.

Bei den eben genannten Variablen handelt es sich um Informationen, die mit vom Server zur Verfügung gestellt werden.

Zum Beispiel sendet der Browser gewisse Informationen zum Server. Unter anderem welche Zeitdifferenz zwischen Browser und Server ist. (Der Browser kann in einer komplett anderen Zeitdifferenz liegen, wie der Server). Man bekommt auch Informationen, welche Bildschirmauflösung der Browser hat, um Bilder im richtigen Format übertragen zu können usw.

Diese Zusatzinfos werden von FoxWeb zur Verfügung gestellt und man kann diese auswerten und dementsprechend darauf reagieren.

Man kann also nun ein Programm schreiben, welches auf die Anfrage des Browsers reagiert und ein HTML-Dokument in Form eines endlos langen Strings zusammenstellt. Dieser String wird nun an FoxWeb zurückgeliefert, der ihn wiederum an den Internetserver zurückgibt.

Sie sehen, daß es nicht genügt, ein solches Tool zu besitzen um komplette Internetseiten zu erzeugen. Ein Verständnis der HTML - Sprache ist trotzdem noch von nöten.

Ein anderer inzwischen sehr bekannter Vertreter der VFP - Internet - Software ist

WEBCONNECTION

von West-Wind (Rick Strahl). Dieses Produkt wurde auf den Devdays von Microsoft dieses Jahr gezeigt und hat damit einen heftigen Werbeerfolg verzeichnen können.

Dieses Produkt ist eines der ausgereiftesten und wird unter anderem bei einem der größten Internet-Einkaufsmärkte der Welt verwendet. (www.surplusdirect.com).

Sie können die aktuellste Version der Software unter www.west-wind.com herunterladen.

Die Software kann sowohl als CGI-Applikation als auch als ISAPI-Version arbeiten. In der Demoversion, die zum freien Download zur Verfügung steht, ist jedoch nur die CGI Applikation enthalten.

Der Aufbau ist relativ einfach. Die CGI-Applikation, die den Kontakt zum eigenen Programm herstellt nennt sich WC.DLL. Diese DLL muß im Verzeichnis /scripts des Internetservers liegen.

Als nächstes muß unter VFP „WCMAIN.PRG" gestartet werden. Dies ist sozusagen der ausführende Teil der Webconnection.

Bei der Installation von Webconnection werden Ihnen auch noch Beispiel-Webseiten eingespielt, die Sie unter /localhost/wconnect aufrufen können. Dort finden Sie im Default.htm z.B. die Aufrufparameter für den Aufruf eines Webconnect-Programmes.

Als Beispiel wird mit dem Aufruf von

Ein etwas moderneres „Hello World" wird gezeigt.

Active Server Pages von Microsoft

Für Microsoft eines der wichtigsten Bestandteile von Windows NT neben dem Internet Explorer 4 und dem Internet Information Server 3 sind die ASP.

Die gesamte Internetumgebung von Microsoft (www.microsoft.com) ist mit den ASP gestaltet worden.

ASP unterstützt zwar (zur Zeit) kein FoxPro, jedoch kann via ODBC auf FoxPro Daten zugegriffen werden. Deshalb wird hier ein Beispiel aufgeführt.

Dies wird erreicht, indem man anstelle von HTM-Files, ASP-Files verwendet. (anstelle der Dateiendung HTM die Dateiendung ASP)

Der Internet Information Server sucht dann eine ASP.DLL und übergibt dieser das ASP-File. Die ASP.DLL durchsucht das gesamte File nach Scriptbestandteilen, die in die Zeichen „%<" und „>%" eingrenzt sind.

Die Programmiersprache die hier eingesetzt wird, ist VBScript und dem Visual Basic sehr ähnlich. Hier sehen Sie das „Hello World" in verschiedenen Größen.

<HTML>

<HEAD><TITLE>Hello World</TITLE></HEAD>

<BODY >

<% for i = 3 to 7 %>

<FONT SIZE=<% = i %>>Hello World</FONT><BR>

<% next %>

</BODY>

</HTML>

Mit den (gezwungenermaßen) neu erfundenen ADO (ActiveX Data Objects) kann auch auf ODBC-Datenquellen zugegriffen werden.

Für FoxPro Programmierer sieht der Zugriff etwas seltsam aus, da zuerst Objekte instanziiert werden müssen, damit ein Zugriff auf Daten überhaupt erst möglich ist.

z.B.:

<%

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "ADOSamples"

Set RS = Conn.Execute("SELECT * FROM Orders")

%>

Dieser VBScript Code öffnet unter der „Variablen" CONN ein SQL-Handle worauf man direkt Bezug nehmen kann und aus dem Objekt ADODB weitere Informationen über die Datei erhält. Man kann natürlich auch sequentiell die Daten einzeln abrufen.

Zugegeben, im Internet als Objekt eine feine Sache. Als FoxProgrammierer aber hat es mir ein Lächeln herausgelockt.

Active FoxPro Pages

Ein absolut neue Produkt aus dem Hause ProLib. Anfang 1997 wurde an uns herangetragen, für ein international tätiges Unternehmen eine Internetlösung zu bauen, welche direkt die Daten aus der FoxPro Applikation im Internet darstellt.

Die Bedingung die daran geknüpft war, war das selbständige Ändern des Codes von geübten Powerusern. Ein direktes „Hardcoding" war also ausgeschlossen.

Genau zu dieser Zeit wurden die MS Devdays abgehalten und es wurde die Surplus-Direct Applikation von West-Wind Connection gezeigt, in der bereits ansatzweise ein „FoxPro Code in HTML" gezeigt wurde.

Dies hat mich ermuntert, selbst ein Produkt zu entwickeln, mit dem man ohne Programmierung unter VFP auskommt und anstelle dessen, wie in den ASP´s, den Code direkt im HTML-File hinterlegt.

Inzwischen ist das Projekt bereits in der Versionebene 2.5 und läuft auf mehreren Servern im Internet und Intranet.

Ein kleines Beispiel finden Sie unter www.hilo.de, wenn Sie sich eine Adresse suchen. Und natürlich ist unser neuer Internetkatalog unter www.prolib.de damit gemacht worden. Es gibt zur Zeit noch mehrere Applikationen. Die jedoch sind hinter dicken Firewalls versteckt und man kann diese nicht öffentlich betrachten.

AFP ist eigentlich eine sehr einfache Geschichte, bei der ein einziges Programm auf dem Server in Verbindung mit FOXISAPI läuft. Dieses Programm muß einmalig installiert sein und erwartet als Parameter ein logisches Verzeichnis mit ein HTM-File.

Das HTM-File wird nun geladen und wie bei den ASP´s von Microsoft auf Code durchsucht. Allerdings ist es in diesem Falle kein VBScript sondern eben purer FoxPro Code.

Also anstelle eines ADODB-Zugriffes kann direkt der Befehl USE verwendet werden. Die Tabelle wird dann am besten mit einem normalen SCAN ENDSCAN durchsucht und die Daten werden direkt eingefügt.

Der FoxPro Code kann direkt im HTML-Code eingebettet werden, indem zuerst zwei Doppelkreuze und dann das Codewort „FOXCODE" angeben wird. Geschlossen wird dieser Codeblock wieder mit zwei Doppelkreuze. Hier ein Beispiel:

##foxcode

lcs = ""

use artikel shared

scan

lcs = lcs + Artikel.artnr + ‚<br>‘

endscan

return lcs

##

Wie Sie sehen, wird ein String zusammengestellt, der dann per RETURN Statement zurückgegeben wird. Der eigentliche Code wird aus dem HTML-File gelöscht und gegen den Returnstring ersetzt. Dadurch ist gewährleistet, daß kein Programmcode über das Internet geschickt wird.

Wenn das Keyword „foxcode" weggelassen wird, so wird der darauffolgende Code einfach nur evaluiert und in das HTML-File eingefügt. Beispiel:

##ttoc(datetime())##

Dies gibt das aktuelle Datum und Uhrzeit aus.

Im Falle eines kompletten Codeblocks wird die Codeblock Klasse von Randy Pearson verwendet, um zur Laufzeit die einzelnen Befehle auszuführen. Diese Klasse kann bis auf wenige Ausnahmen den kompletten Befehlssatz von FoxPro ausführen, ohne daß ein PRG compiliert werden muß.

Um mehrere AFP-Projekte auf dem gleichen Internetserver betreiben zu können, ist ein INI-File vorhanden, in dem man den direkten Pfad zu den HTML-Dateien angeben kann. Dadurch wird auch verhindert, daß man über das Internet auf die AFP-Seiten direkt zugreifen kann und den eigentlichen FoxPro Code sieht.

Der Aufruf einer AFP Seite sieht folgendermaßen aus:

Aufgegliedert besteht die Kommandozeile aus folgenden Bestandteilen:

In der bereits angesprochenen INI-Datei wird mit „projekt=c:\pfad\" angegeben, wo sich die HTML-Files befinden. Dorthin wird auch automatisch ein SET DEFAULT TO ausgeführt, damit man ohne Pfadangaben Dateien usw. ablegen und ansprechen kann.

Advanced FoxPro Pages

Die Entwicklung bleibt nicht stehen. Das gilt auch für Produkte aus dem Hause ProLib.

Deshalb kann jetzt bereits angekündigt werden, daß die neueste Version als Advanced FoxPro Pages bald in den Echtbetrieb gehen wird. Als „Special" wird eine ASP-kompatible Schreibweise eingebaut sein, damit man mit jedem ASP-Tool neben VBScript auch FoxPro Code schreiben kann.

FOXISAPI und VFP 5.0

Wir wollen uns einmal ansehen, wie der Zugriff aus dem Internet unter VFP 5.0 und der Foxisapi.dll funktioniert.

Der Grundgedanke des Programmaufrufes aus dem Internet heraus ist bei Verwendung der Foxisapi genau der selbe wie bei Verwendung eines CGI Programmes.

Der grundlegende Unterschied liegt darin, daß bei einer CGI Applikation ein anderes Programm vom Internetserver gestartet wird, dem man, auf welche Art und Weise auch immer, Parameter mitgibt, damit dieses weiß, was es zu tun hat. Dieses zweite Programm läuft komplett unabhängig vom Internetserver und erledigt den Datenzugriff.

Bei Foxisapi dagegen wird vom Internetserver ein Objekt instanziiert, welches, ähnlich wie bei ActiveX, direkt „unterhalb" oder „innerhalb" des Internetservers mitläuft. Also sozusagen ein Teil der Internetservers wird.

Also müssen Sie zuallererst lernen, wie ein OLE-Server unter VFP 5.0 gemacht wird. Dies stellt sich als eines der leichtesten Dinge heraus.

Machen Sie zuerst einmal ein Projekt (create project meinole) dann fügen Sie ein einzelnes Programm hinzu, welches folgende Zeilen enthält:

DEFINE CLASS meineklasse AS CUSTOM OLEPUBLIC

PROCEDURE meineprozedur

LPARAMETER TCFORM, TCINI, TNRELEASE

Lcstring = []

Lcstring = lcstring + [<HTML>]

Lcstring = lcstring + [<HEAD>]

Lcstring = lcstring + [<TITLE>Standard-Seite ohne Titel</TITLE>]

Lcstring = lcstring + [</HEAD>]

Lcstring = lcstring + [<BODY>]

Lcstring = lcstring + [Die INI-Datei befindet sich unter] + TCINI

Lcstring = lcstring + [</BODY>]

Lcstring = lcstring + [</HTML>]

RETURN lcstring

ENDPROC

ENDDEFINE

Sie sehen, daß dies bereits in einem String ein HTML-Dokument zusammenbaut. Dies sind auch die Mindestvoraussetzungen für ein HTML-Dokument. Nachdem der gesamte String zusammengebaut wurde, wird dieser dann mit RETURN an das aufrufende Programm zurückgegeben.

Das Befehlswort OLEPUBLIC gibt VFP nun bekannt, daß es sich hierbei nicht um eine normale FoxPro Klasse handelt, sondern daß diese Klasse
beim Generieren automatisch in die Registry eingetragen wird und
alle benötigten Files erstellt werden, damit man diese Klasse auch auf anderen Computern registrieren kann.

Beim Generieren haben Sie zwei Möglichkeiten.
Als OLE-DLL erzeugen und
Als EXE-Datei erzeugen.

Ich empfehle Ihnen die EXE-Version zu verwenden. Wenn eine OLE-DLL zum Arbeiten verwendet wird, so hat dies den unangenehmen Nebeneffekt, daß die DLL nicht im Taskmanager zu erkennen ist, wodurch man sich bei einem eventuellen Programmfehler (Endlosschleife) die Möglichkeit verbaut, diesen Task zu löschen.

Sobald Sie eine EXE instanziieren, wird diese beim Aufruf auch im Taskmanager unter Windows NT angezeigt und kann somit auch explizit gelöscht werden.

Ich möchte aber darauf hinweisen, daß eine OLE-DLL wesentlich schneller im Speicher instanziiert wird und die Verarbeitung schneller ist, als bei einer EXE-Datei. Die Gründe liegen am internen Aufruf innerhalb des NT-Kernels. DLL´s werden In-Process instanziiert, EXE´s dagegen Out-Process, was den Remote Procedure Call´s zu hilfe nimmt und somit mehr Speicher und Rechenleistung erfordert. Alle diese Vorteile haben mich jedoch trotzdem an den EXE´s festhalten lassen, da man eben nur Mensch ist und gerade beim experimentieren sehr oft Fehler produziert, die mit einer EXE wesentlich leichter abgefangen werden.

Manchmal kann es sogar vorkommen, daß sich eine EXE nicht aus dem Taskmanager löschen läßt. Dann kommt ein kleines DOS-Tool mit dem Namen KILL.EXE zum Einsatz, welches z.B. beim VC++ mitgeliefert wird und nebenbei auch im Compuserve zum Download bereitsteht.

Als erstes sollten Sie die eben gerade erzeugte Klasse aus VFP heraus einmal instanziieren.

Ox = CREATEOBJECT("MEINOLE.MEINEKLASSE")

Ist notwendig, um die eben erzeugte Klasse als OLE-Klasse zu instanziieren. Wenn Sie nun

? Ox.MEINEPROZEDUR("Test" , "Test" , 0)

eingeben, so sollte Ihnen der HTML-String am Bildschirm erscheinen.

Nun noch kurz zu den verwendeten Parametern. Die Foxisapi.DLL, die verwendet wird, um unsere Klasse anzusprechen, schickt immer drei Parameter.
TCFORM Hier sind alle Forumulareingaben mit einem „&" getrennt, als bis zu 512 Byte langer String aneinandergehängt. (Ein HTML-Dokument kann Formulare beinhalten, in denen der Benutzer Eingaben machen kann.)
TCINI In einer, immer neu, erzeugten INI-Datei werden verschiedenste Informationen von der FOXISAPI.DLL abgespeichert. Den Pfad zu dieser INI-Datei wird hier mit übergeben. Sobald Ihre Klasse durchgelaufen ist, wird diese INI-Datei jedesmal wieder gelöscht.
TNRELEASE Dies ist eine per Referenz übergebene Variable, die anfangs einen Wert größer als Null beinhaltet. Sobald diese Variable auf Null gesetzt wird, wird die Klasse nicht wieder automatisch freigegeben, sondern bleibt im Speicher, wodurch ein neuerlicher Aufruf wesentlich schneller von statten gehen kann.

Die INI-Datei FOXxx.INI

Hier sehen Sie ein Beispiel einer Foxisapi. Sie erkennen eine Vielfalt an Informationen, die einem der Browser über das Internet schickt. Äußerst interessant sind natürlich IP-Adressen, an denen Sie feststellen können, wie oft eine bestimmte Person bei Ihnen am Server zugegriffen hat usw.

[FOXISAPI]
Request Method=POST
Query String=\\kat\default.htm
Logical Path=/wwwpl.fox.showhtml
Physical Path=C:\InetPub\wwwroot\wwwpl.fox.showhtml
FoxISAPI Version=FoxISAPI v1.2
Request Protocol=HTTP/1.0
Referer=/scripts/foxisapi.dll
Server Software=Microsoft-IIS/3.0
Server Name=www.sqg.org
Server Port=80
Remote Host=193.158.176.59
Remote Address=193.158.176.59
[ALL_HTTP]
HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
HTTP_ACCEPT_LANGUAGE=de, en
HTTP_CONNECTION=Keep-Alive
HTTP_CONTENT_LENGTH=16
HTTP_CONTENT_TYPE=application/x-www-form-urlencoded
HTTP_HOST=www.sqg.org
HTTP_REFERER=http://www.sqg.org/scripts/foxisapi.dll/wwwpl.fox.showhtml?\\ kat\default.htm
HTTP_UA_PIXELS=1280x1024
HTTP_UA_COLOR=color8
HTTP_UA_OS=Windows 95
HTTP_UA_CPU=x86
HTTP_USER_AGENT=Mozilla/2.0 (compatible; MSIE 3.02; AK; Windows 95)
HTTP_PRAGMA=No-Cache
[Accept]
image/gif=Yes
image/x-xbitmap=Yes
image/jpeg=Yes
image/pjpeg=Yes
application/vnd.ms-excel=Yes
application/msword=Yes
application/vnd.ms-powerpoint=Yes
*/*=Yes
[SYSTEM]
GMT Offset=3600

Ein kleiner „Big Brother is watching you" ist ebenfalls zu erkennen. Dadurch, daß Word, Powerpoint und Excel nun Internetfähig sind, erkennt man an der INI-Datei, daß der User genau diese Programm installiert hat.

Der User verwendete auch Windows 95 und den Microsoft Internet Explorer 3.02 wobei eine Bildschirmauflösung von 1280x1024 verwendet wurde.

Sie sehen, daß ein normaler Zugriff auf eine Internetseite bereits eine Vielfalt an Informationen an den Serverbetreiber liefert. Vielleicht überlegt sich nun der eine oder andere einfach so „herumzusurfen". Besonders dann, wenn man unter Umständen die gemeldete Software gar nicht gekauft hat. <g>

DCOMCNFG

Unter Windows NT ist es notwendig, zuallererst anzugeben, wer denn auf Sicherheitsebene diese Klasse aufrufen darf.

Anders als beim normalen Aufruf aus VFP heraus, muß eine OLE-Klasse speziell vorbereitet werden, wenn jemand aus dem Internet diese Klasse benutzen möchte.

Genau zu diesem Zwecke müssen Sie die DCOMCNFG.EXE starten.

In der nun erscheinenden Liste sind alle Klassen aufgeführt, die instanziiert werden können. Darunter finden Sie auch Ihre eigene Klasse „MEINEKLASSE". Wenn man den Namen für die Klasse nicht sorgfältig gewählt hat, fängt schon manchmal das Raten an, wie denn die Klasse wohl geheißen hat.

Klicken Sie also „MEINEKLASSE" an und wählen Sie „Eigenschaften" aus.

Hier finden Sie vier Seiten wobei Standort, Sicherheit und Identität die wichtigsten Einstellungen sind.

Unter Standort muß „Anwendung auf dem Computer mit den Daten ausführen" zusätzlich angewählt werden. Hört sich beinahe logisch an.

Unter Sicherheit finden Sie Zugriffsberechtigungen, Startberechtigungen und Konfigurationsberechtigungen.

Bei Zugriff- und Startberechtigung tragen Sie am besten den Administrator, Interaktiv und das System ein.

Sollten Sie sich entscheiden, für den OLE-Zugriff einen spezielle User zu bestimmen, so muß dieser natürlich auch hier eingetragen werden.

Genau so einen User können Sie auf der letzten Page „Identität" einstellen.

Achten Sie darauf, daß bei „Interaktiver Benutzer" der Zugriff aus dem Internet nur solange funktioniert, wie Sie gerade eingeloggt bleiben. Interaktiver Benutzer bedeutet also, daß die Rechte des Users zum Zugriff verwendet werden, der gerade am Computer eingeloggt ist.

Es ist am besten, wenn Sie einen speziellen User anlegen, der das Recht besitzt Visual FoxPro auf dem Computer auszuführen und Zugriff auf die Verzeichnisse hat, in denen Ihre Programme und Daten liegen.

Solch ein User muß natürlich unter Sicherheit auch eingetragen werden.

Achten Sie besonders darauf, daß Sie eventuellen Problemen mit Domänenservern aus dem Weg gehen. Zwischen Domänenrechten und lokalen Rechten in einem Netzwerk liegen meistens 2-5 Stunden Arbeit, bis man endlich herausgefunden hat, warum sich beim besten Willen ein OLE-Server nicht starten läßt.

Versuchen Sie es am Anfang immer mit dem Interaktiven User, da Sie in diesem Moment eingeloggt sind und (hoffentlich) genügend Rechte besitzen.

Nun fehlt noch die bereits mehrfach angesprochene FOXISAPI.DLL. Diese bekommen Sie direkt aus dem Internet unter http://www.microsoft.com/vfoxpro wobei Sie unter Owners Area sich eventuell zuerst bei Microsoft als Besitzer einer korrekten FoxPro Version anmelden müssen.

Kopieren Sie die FOXISAPI.DLL mit der ebenfalls enthaltenen FOXISAPI.INI in das Verzeichnis scripts Ihres Internetservers.

Sie können die Funktion der Foxisapi sofort ausprobieren, indem Sie in einem Browser auf Ihrem Internetserver folgende URL eingeben:

Localhost/scripts/foxisapi.dll

Es sollte eine Fehlermeldung erscheinen, die folgendermaßen lautet:

Dies bedeutet, daß die Foxisapi grundsätzlich funktioniert. Wenn Sie die URL nun noch durch den Aufruf Ihrer Klasse erweitern, sollten Sie das ordentliche Ergebnis Ihres Programm in Ihrem Browser lesen können:

Das Ergebnis sollte die Ausgabe des Pfades der FOXxx.INI sein.

Das erste, was Sie nach einem Erfolg machen werden ist die Klasse sofort zu erweitern und umzubauen. Denn man möchte natürlich sofort wissen, wie der Rest des Internets funktioniert.

Bitte beachten Sie dabei noch folgende Hinweise: