Session D-WEB

Das Internet - Ein Einsteigerkurs

Peter Herzog
ProLib Software GmbH


Das Internet, für einen FoxPro Programmierer , besteht bei den meisten nur aus der Beschaffung von Informationen um das eigene Problem lösen zu können. Im Grunde genommen wird das Internet als das „bunte Bilder aus World Wide Web ansehen“ betrachtet.

Schon alleine die Email, wird nicht mehr als so „Internetlastig“ angesehen. Und wenn man mit dem Browser auf einen Link klickt, der einem eine Datei zum Download anbietet, dann ist das FTP und doch nicht Internet, oder ?

Wenn es nun noch um Datenbeschaffung geht, dann ist es meistens ganz aus und der „gemeine FoxPro Programmierer“ denkt an ZIP-Dateien oder Ähnliches um sich die Daten zu beschaffen.

In dieser Session möchte ich angefangen von den Basic´s bis zum Datentransfer, Methoden aufzeigen, wie man sich das Internet zu nutze macht um mit FoxPro (Visual FoxPro) und anderen Tools mit dem Internet umgeht.

Nun zu den notwendigen Basic´s, ohne die man nicht auskommt und die man genauso dringend benötigt, wie für einen Buchhalter die Kenntnis was Soll und Haben ist.

Das Internetprotokoll

Wir haben auf unseren Computern verschiedentliche Möglichkeiten um uns mit der Außenwelt zu verständigen. Neben Novell´s IPX und Microsoft´s NetBEUI gibt es das sogenannte TCP/IP. Wie man am Namen bereits erkennt besteht es aus 2 Teilen. Einerseits dem IP und dem TCP.

Ersteres ist das eigentliche Internet Protokoll und ermöglicht uns Daten von einem Punkt zum anderen zu schicken. Also ein Bytestrom an Daten zwischen zwei Punkten. Das TCP ist nun dafür verantwortlich, die eigentlichen Daten in kleine Pakete zu zerteilen, denen eine Adresse, einen Absender und eine Reihenfolgennummer zu verpassen und schickt die Daten nun über das IP zum anderen Punkt.

Die Besonderheit am TCP liegt darin, daß die einzelnen Pakete gekennzeichnet sind und in der richtigen Reihenfolge auch wieder zusammengesetzt werden können. Dies ermöglicht einen eventuellen Paketdienst, die Pakete auf verschiedenen Routen zum Empfänger zu schicken und trotzdem werden die Pakete ordentlich in der richtigen Reihenfolge abgeliefert.

Ein eventuell verloren gegangenes Paket wird vom Empfänger einfach nachgefordert und es muß nicht die gesamte Lieferung nochmal geschickt werden.

Um genau zu wissen, wer das Paket abgeschickt hat und wer es empfangen soll, hat jeder Teilnehmer im Internet eine eindeutige Adresse

Die IP-Adresse

Wer schon einmal mit dem Internet oder dem TCP/IP Protokoll zu tun hatte, der wurde mit den sogenannten IP-Nummern konfrontiert. Diese bestehen (zur Zeit) aus vier Zahlengruppen, welche mit einem Punkt getrennt sind. Beispiel: 212.14.66.17

Wichtig zu wissen sind folgende Punkte:

  1. Jede dieser Zahlen muß zwischen 1 und 254 liegen
  2. Die Zahlen 0 und 255 sind für besondere Zwecke vorbehalten
  3. Die IP-Adressen welche mit 10.x.x.x, 172.16.x.x, 192.168.x.x und  127.x.x.x sind reserviert
  4. Alle Adresse die mit 224.x.x.x beginnen sind speziellen Netzwerken vorbehalten

Die Adresse 127.0.0.1

Diese Adresse zeigt immer auf die eigene Maschine. Wenn man mit dem Programm PING.EXE nachsehen möchte, ob die eigene Maschine das TCP/IP Protokoll versteht, so kann man das durch ping 127.0.0.1 feststellen.

Die Adressen 10.x.x.x, 172.16.x.x, 192.168.x.x

Sind Adressen aus dem sogenanntem „private adress space“ und wurden in der international gültigen Dokumentation RFC1918 definiert.

Diese Adressen können durch einen sogenannten Router nicht übertragen werden und sind daher für das eigene Netzwerk hervorragend geeignet, damit niemand in dieses Netzwerk unbefugt von außen eindringen kann.

Die RFC Dokumentationen

Alles rund um das Internet und Netzwerken generell wird in sogenannten „requests for comments“ definiert und niedergeschrieben. Ähnlich wie eine Anleitung wie etwas zu funktionieren hat, damit es auch andere verstehen ist hier niedergeschrieben.

Eine Definition davon ist die mit der Nummer 1918, welche eben gerade diese „Privatssphären“ beschreibt.

Jeder Hard- oder Softwarehersteller hält sich an diese Dokumentation, da er ansonsten nicht „verstanden“ wird und alleine sein Dasein fristen wird. Selbst Microsoft, welche dafür bekannt ist, Ihr eigenes Süppchen zu kochen wo immer es geht, hält sich an diese Dokumentation und somit kann man mit Microsofts Betriebssystemen ins Internet.

Nun wissen wir, wie man einen bestimmten Rechner adressieren kann, damit andere wissen, wohin sie die Daten schicken müssen, damit sie bei mir ankommen. Woher bekommen wir jedoch „unsere“ IP-Adressen. Wenn jeder seine eigenen Nummern vergeben würde, so wäre nicht gewährleistet, daß man Eindeutig auf der Welt ist

ARIN

1997 hat die Organisation ARIN (American Registry for Internet Numbers http://www.arin.net ) offiziell die Herrschaft über die IP-Adressen von Internic übernommen. Internic und deren Ableger in den einzelnen Ländern kümmert sich fortan nur noch um die sogenannten Domainnamen.

ARIN ist eine „non-profit organisation“ und kümmert sich darum, daß jeder auf der ganzen Welt ein Individuum darstellt, sobald er im Internet präsent ist.

RIPE

Die Organisation RIPE ist für Europa zuständig und Informationen über Webseiten oder IP-Adressen in Europa erhalten Sie dort ( http://www.ripe.net )

 

Internic

Die Organisation Internic (in Deutschland als Genossenschaft organisiert) ist unter http://ww.denic.de zu finden. Dort sind auch alle Mitglieder aufgelistet. Jedes der Mitglieder hat die Möglichkeit selbst Einträge in der Domaindatenbank vorzunehmen und ist somit am Drücker wenn es um Domainnamen geht.

 

Domainnamen

Die IP-Adressen sind zwar toll, wenn man einen bestimmten Rechner im Internet ansprechen möchte, aber so richtig toll zu merken sind diese leider nicht.

Man hat sich deshalb im Internet ein Inhaltsverzeichnis eingerichtet (Nameserver), welches einen Namen zu einer IP-Adresse zuordnet. www.prolib.de ist leichter zu merken, als 212.14.66.17.

Solch ein Domainname ist in drei Teile zerlegbar.

Die Toplevel Domain

In Deutschland gibt es die Topleveldomain .DE. Österreich hat die .AT und Italien lautet diese .IT. Aus geschichtlichen Gründen heraus lauten die Topleveldomains in Amerika .COM (company), Weitere Topleveldomains sind zB.:

Es sind Bestrebungen im Gange neue Topleveldomains zu erfinden. Eine davon ist zB.: .FIRM für Firmen. Sie sehen hier bereits den deutschen Einfluß auf internationale Dinge im Internet. Bis diese Topleveldomains allerdings freigegeben werden, kann es noch dauern.

Der Domainname

Beim Domainnamen selbst handelt es sich bei uns zB. um PROLIB. Zusammengeschrieben wird nun prolib.de daraus. Es gibt auch eine prolib.com, jedoch handelt es sich dabei um eine fernöstliche Firma. Sie sehen schon, daß es sich bei den Domainnamen um heikle Geschichten handelt. Nicht selten werden Domainnamen von schnellen Fingern vorab registriert und derjenige versucht nun Geld aus der Geschichte zu holen. Auch werden Domainnamen zum Verkauf öffentlich angeboten, bzw. in Onlineversteigerungen verkauft.

Die Sublevel Domain

prolib.de alleine würde bereits genügen um unsere Firma eindeutig zu kennzeichnen und unsere IP-Adresse zu verraten. Sie können dies auch direkt ausprobieren, allerdings gelangen Sie dann in unsere niedrigste Eingangsseite unseres Webservers.

Erst mit „www“ davorgestellt, werden Sie an unsere richtige Webseite durchgereicht. Wenn man nun anstelle von „www“ ein „shop“ davorstellt, so kommen Sie in unseren Onlineshop und wenn Sie „ftp“ davorstellen, so gelangen Sie in unseren FTP-Bereich (File Tranfer Protokoll). Für alle Prolib-Mitarbeiter ist auch noch „mail.prolib.de“ verfügbar.

Wenn man nun mit dem Programm PING.EXE nachprüft welcher IP-Adresse die ganzen Namen zugeordnet sind (www, ftp, mail) so werden Sie feststellen, daß es sich dabei um ein und die selbe IP-Adresse handelt.  Dies ist eine gute Überleitung um über die verschiedenen Eingangstüren eines Rechners mit einer IP-Adresse zu sprechen.

 

Die Ports

Eine IP-Adresse kann mit zu mehr als 32000 sogenannte Ports haben. Wichtig zu wissen ist, daß die Nummern von 1 bis 1024 fest vorgegeben sind. Hier ein paar Beispiele:

Stellen Sie sich einen Port als Tür vor, die in unserem  Haus an Adresse 212.14.66.17 existiert. An dieser Tür kann man anklopfen und der jeweils für die Tür zuständige Dienst(mann <g>) liefert einem die notwendigen Informationen.

Man kann über Programme die verschiedensten Ports ansprechen. Wenn man allerdings versucht an alle eventuellen Ports zu klopfen, so kann dies als Ruhestörung angesehen werden und der Haus- / Rechnerbesitzer kann dies als „Portangriff“ werten und sich bei der Polizei, bzw. in unserem Falle an den NIC wenden. Die Folgen wären unter Umständen ein Ausgrenzen der IP-Adresse vom gesamten Netzwerk.

Das würde einem Hacker drohen, wenn er es übertreibt <g>

Router, Gateways, Firewalls und Proxy´s

Im speziellen möchte ich nicht näher auf diese Begriffe eingehen, da dies die Session sprengen könnte. Notwendig ist nur... zu wissen, daß es dies gibt.

Ein Router verbindet Netzwerke untereinander

Ein Gateway ist der „Weg nach draussen“ also kann zB. ein Router sein, damit das heimatliche Netzwerk mit dem Internet verbunden wird.

Firewall ist genau genommen ein Filtermechanismus. Eine Firewall hat die Aufgabe bestimmte IP-Adressen und Ports durchzulassen oder eben nicht. Damit kann man sich vor Portangriffen schützen.

Proxy´s sind Cachecomputer. Diese funktionieren normalerweise nur auf Port 80 (HTTP) und speichern HTML-Dokumente und Bilder auf der Festplatte ab. Wenn man nun ein zweites mal auf die gleiche Seite zugreift, so werden die Daten nicht erneut aus dem Internet geholt, sondern vom Proxy geliefert, was das Internet entlastet.

Die Netzmaske

Einen bestimmten Teil des TCP/IP Protokolls haben wir noch nicht besprochen und das ist die Netzmaske. Die sieht in den meisten Fällen zB.: so aus: 255.255.255.0

Stellen Sie sich diese Adresse einmal in binärer Schreibweise vor

1111.1111.1111.0000

Sie erkennen, daß es sich hier um 2 Bereiche handelt. Einmal den Netzwerkteil links mit den Einsen und den Computerteil rechts mit den Nummern.

Nun sehen wir uns am Beispiel der Firma Prolib die IP-Adresse an 212.14.66.17. Die Kombination mit der Netzmaske 255.255.255.0 ergibt nun, daß unser Computer die Nummer  17 im Netzwerk 212.14.66 darstellt.

Es handelt sich hiermit um ein Class-C Netz, das am weitesten verbreitete Netzwerk. Es sind hier die Adressen 1 bis 254 möglich. 254 Computer, die ohne spezielle Router miteinander kommunizieren können.

Class-A Netzwerke hätten dann die Netzmaske 255.0.0.0 also mehr als 16 Millionen Computer in einem Netzwerk.

Class-B Netzwerke haben die Netzmaske 255.255.0.0, was 64516 miteinander verbundene Computer bedeutet.

Mir ist zu Ohren gekommen, daß die Fa. Siemens 2 derartiger Class-B Netze besitzt. Die Telekom AG und die Deutsche Bahn AG werden bestimmt auch solch große Netzwerke besitzen.

Man erkennt jedoch sehr schnell, daß durch Belegung eines Class-B Netzes 255 Class-C Netze verloren gehen. Im Moment gibt es zwar noch keinen Engpass, aber das Ende der IP-Adressen ist bereits abzusehen. Deshalb wurden auch Class-D und sogar Class-E Netze definiert. Dies wäre dann eine Netzmaske mit der binären Kennung 1111.1111.1111.1000, 1111.1111.1111.1100 oder sogar 1111.1111.1111.1110. Deshalb ist die Netzmaske 255.255.255.224 bereits relativ verbreitet und wird meist von Internetprovidern an Ihre Kunden vergeben.

Internetprovider

Ein Internetprovider stellt einem die Verbindung zum Internet bereit. Gemessen am Know How des Providers und seiner Leitungskapazitäten gibt es die Guten und die ..... weniger Guten.

Wie beim Hardwarehändler seines Vertrauens, der einem bei Problemen mit der Festplatte unkompliziert weiterhilft, sollte dies bei Ihrem Internetprovider genauso funktionieren.

Das wichtigste ist dabei, wie groß seine Leitung in das Internetbackbone ist und ob er Telefonmäßig kostengünstig zu erreichen ist.

Der zur Zeit größte Provider ist die Telekom, welche mit einer Landesweiten Einwahlnummer den Zugriff zum Internet bereitstellt. Auch unterstützt die Telekom mit speziellen (Knebel)verträgen lokale Internetanbieter, welche das gleiche Netzwerk verwenden, wie die Telekom selbst.

Für jemand, der ab und zu ins Internet einwählt und seine Email abholt oder Informationen über das WWW sucht, ist solch ein Provider die richtige Wahl.

Wenn das Thema Standleitung angesprochen wird, so wird die Streu vom Weizen getrennt. Dies beherrschen durchwegs nur die guten Provider. Hier muß ein Provider in der unmittelbaren Nähe gewählt werden, da eine Standleitung von der Distanz zwischen Provider und Kunde in Kilometer gemessen wird. Eine Standleitung kann sich dann vom Preis her schon so zwischen 600 und 1200 Mark im Monat betragen. Und dabei ist nur das absolute Minimum von 64 kb (ISDN ein B-Kanal) gemeint.

Da ich gute Beziehungen zu meinem Provider habe, weiß ich, daß er für seine 2 Mbit Leitung von Bad Tölz nach München satte 7000 Mark im Monat zu bezahlen hat. Da sind jedoch noch keine Megabytes inbegriffen, also die reinen Kosten der Telekom. Wer da jetzt noch keine T-Aktien sein eigen nennt...... <g>

Zugriff auf das Internet mit Visual FoxPro

Die Basic des Internets sind hiermit beendet und sie haben nun einen ersten Eindruck wie das Internet technisch funktioniert.

Kommen wir nun zum wesentlich interessanteren Teil, den Zugriff auf das Internet mit Visual FoxPro.

Zugriff über ein Netzwerklaufwerk

Da es sich beim Internet um ein normales Netzwerkprotokoll handelt, ist es möglich sich mit einem fremden Rechner zu verbinden und einen normalen Laufwerksbuchstaben zu bekommen.

Dies wird zwar normalerweise bei Webservern verhindert, damit niemand an die Daten von außen herankommen kann, aber wenn es freigeschalten ist und man das Kennwort und Passwort sowie den Freigabenamen kennt, kann man sich ohne Probleme von Zuhause aus an einen Rechner in Amerika anmelden und hat dann einen Laufwerksbuchstaben vor sich, unter dem man auf Daten wie gewohnt zugreifen kann.

Die Verbindung stellen Sie im Explorer unter Windows mit dem „Netzwerklaufwerk verbinden“ her. Geben Sie dazu einfach \\ip-adresse\freigabename ein und schon werden Sie nach Kennwort und Passwort gefragt. Unter DOS können Sie hierbei den „NET“ Befehl verwenden   NET USE X: \\ip-adresse\freigabename . X bezeichnet dabei das gewünschte Laufwerk.

Dies funktioniert soweit wunderbar. Man kann sogar mit dem ganz normalen USE Befehl arbeiten. Sie werden bei einer schwachen Internetverbindung bald merken, daß die Performance extrem zu wünschen übrig läßt.

Erst mit einer 64 kb Verbindung merkt man, was FoxPro an Daten überträgt, wenn man große Tabellen öffnet. Bei einer Tabelle von 100 000 Datensätzen kann dies schon mehr als eine Minute in Anspruch nehmen.

Da der Aufbau einer Netzwerkverbindung auch nicht gerade schnell von statten geht, ist dies der schlechteste Weg um auf andere Rechner zuzugreifen.

Zugriff über FTP

Das File Transfer Protokoll bietet einen Dateizugriff der Ähnlich gestaltet ist, wie ein Zugriff über ein Netzwerklaufwerk. Nur das dort grundsätzlich nur die Kommandos

GET (Lesen), PUT (Schreiben), DELETE (Löschen) , MKDIR (erzeuge Verzeichnis), RMDIR (Lösche Verzeichnis), CD (wechsle Verzeichnis) und DIR (Lese Verzeichnis)

Es gibt zwar noch ein paar Befehle mehr, Sie sind jedoch nicht so wichtig.

Grundsätzlich kann man dies über das Tool FTP.EXE erledigen, daß Sie in Ihrem Windowsverzeichnis finden.

Man kann dieses Tool sogar mit einer Art Batchdatei steuern. Jedoch sind hier Fehler nicht abzufangen.

Direkt aus Visual FoxPro heraus gibt es beispielsweise folgende Tools

MABRY FTP-Control (www.mabry.com)

Dieses Tool gibt es mittlerweile auch als COM-Object und als Active-X Object. Da beide eine Einbindung in der Registry benötigen ist dies nicht so einfach zu installieren, wenn man ein vollautomatisches Setup erzeugen möchte. Gerade das Active-X Control hat die Angewohnheit mit Visual FoxPro nicht 100%ig zusammenzuarbeiten. Man merkt hier die Abstammung von Visual Basic.

WWIPSTUFF (www.west-wind.com)

Rick Strahl von West-Wind Technologies hat ein Sharewaretool gebaut, welches unter anderem auch die wichtigsten Befehle für FTP umfasst.

Mir sind allerdings zwei Nachteile bekannt.

  1. Es wird für jeden Befehl der FTP-Kanal neu geöffnet und dann wieder geschlossen.
  2. Der FTPDir-Befehl übermittelt nur die Dateinamen und nicht deren Größe Filedatum usw.

FTP-Services von Robert Abram (ftp://ftp.prolib.de/internettools)

Dieses Tool ist in purem Visual FoxPro geschrieben und funktioniert sowohl mit VFP5 als auch VFP6.

Es bietet wie die anderen Tools auch den Zugriff auf FTP-Server wobei als besonders lobenswert die vollständige Programmierung in VFP gemacht wurde.

Jedes der Tools welches auf das Internet zugreift verwendet nämlich die wininet.dll von Microsoft. Die auf die sogenannte winsock.dll zugreift. Diese DLL wird automatische installiert, wenn man zB. den Internet Explorer 3.02 oder höher installiert. Sollten Sie diese DLL nicht haben, so können Sie diese auch unter von unserem FTP-Server downladen.

Da das gesamte Tool mit Sourcecode ausgestattet ist, ist es ein hervorragendes Beispiel einer Programmierung.

NetLib Messaging Tool (http://shop.prolib.de)

Neben einer Vielzahl von anderen Zugriffsmöglichkeiten bietet das Netlib Messaging Tool eine FLL, welche mit mitgelieferten Klassen angesprochen werden kann. Die FLL bietet bereits LowLevel Zugriffsmöglichkeiten auf beliebige Ports, so daß nicht nur FTP sondern alle nur denkbaren Zugriffe ermöglicht werden.

Zugriff auf Email

Ein wichtiger Punkt ist das automatische Versenden und Empfangen von Emails.

Microsoft Mail-OCX

Microsoft liefert bei Visual FoxPro zwei OCX´e mit, welche den Zugriff auf Email ermöglichen. Allerdings muß am Computer ein Mailclient installiert sein. Das kann Outlook oder einfach nur Microsoft Mail sein.

Ein Beispiel wird bei den Visual FoxPro Beispielen mitgeliefert.

Mabry Mail OCX (www.mabry.com)

Auch von Mabry gibt es ein OCX, welches den Zugriff auf Mail ermöglicht. Ein bereits installiertes Mailprogramm wird nicht benötigt.

WWIPSTUFF (www.west-wind.com)

Das Sharewaretool ermöglicht das Versenden von Mails, wobei maximal ein Attachment (Dateianhang) mit maximal 16 Kb möglich ist. Auch hier ist kein externes Mailprogramm notwendig. Emails empfangen ist nicht vorhanden.

NetLib Messaging Tool (http://shop.prolib.de)

Auch hier sind sowohl Mailempfang als auch Mailversand beinhaltet. Auch hier ist wie beim FTP Zugriff der Sourcecode vorhanden.

Zugriff auf  HTTP

Der Zugriff auf HTTP macht Sinn, wenn auf der anderen Seite ein Webserver liegt, welcher einem die Daten zur Verfügung stellt.

WWIPSTUFF (www.west-wind.com)

Die WWIPSTUFF bietet sowohl den Zugriff auf beliebige Webseiten (HTTPGET) als auch den schreibenden Zugriff (HTTPPOST). Rein theoretisch wäre es möglich damit einen eigenen Webbrowser unter VFP zu schreiben. Wenn man sich das antuen möchte. <g>

VFPHTTP (ftp://ftp.prolib.de/internettools)

Auf einer spanischen Webseite fand ich den HTTPGET unter VFP programmiert. Es wird dazu die WININET.DLL benötigt. Dies ist auch ein gutes Beispiel, wie man unter VFP direkt auf die WININET.DLL zugreifen kann.

Zugriff auf beliebige Ports

Unter Umständen benötigt man einen Zugriff auf einen bestimmten Port einer IP-Adresse. Beispiele dafür wären Chatserver oder ähnliches.

NetLib Messaging Tool (http://shop.prolib.de)

Die Netlib bietet generell jeden Zugriff auf das Internet. Die Klassen für Mail, FTP usw. Wurden in Visual FoxPro geschrieben und greifen auf die netlib – FLL zu, welche eigentlich nur den minimalen Zugriff auf das Internet bereitstellt.

Dadurch sind jedoch keine Beschränkungen eingebaut und man kann auf jeden Port einer IP-Adresse zugreifen.

 

Daten aus dem Internet

Bisher haben wir nur den generellen Zugriff auf bestimmte Dienste eines Servers besprochen.

Was uns als VFP – Programmierer jedoch weitaus wichtiger erscheint ist der Zugriff auf externe Datenbestände und das am besten ohne Umwege direkt aus VFP heraus.

Zugriff über eine Laufwerksverbindung

Wie weiter oben bereits beschrieben ist von dieser Art des Datenzugriffes aber abzuraten. Der Verbindungsaufbau dauert relativ lange und der Zugriff auf DBF-Dateien ist ebenfalls nicht besonders schnell, wenn man nur ISDN oder ähnliches verwendet.

Auch die Datensicherheit ist nicht mehr gewährleistet, da ein Verbindungsabriss während eines Schreibvorganges garantiert zu zerstörten DBF´s und FPT´s führt.

Auch sind die bei einem ungewollten Abriss der Verbindung entstehenden Fehlermeldungen nicht 100%ig abzufangen, was unter Umständen zu einem Absturz des Clientprogrammes führt.

Zugriff auf SQL-Server

Die meisten SQL-Server bieten einen Zugriff via TCP/IP an. So auch der Microsoft – SQL – Server. In diesem Falle muß nur irgendwo auf der Welt ein SQL-Server eine Verbindung zum Internet haben und schon kann man auf diesen Zugreifen.

Am Beispiel SQL-Server 7 von Microsoft möchte ich dies beispielhaft zeigen.

Als erstes muß der SQL-Server ODBC-Treiber installiert sein. Dort trägt man die IP-Adresse und den zugehörigen Port ein, unter dem der SQL-Server angesprochen werden kann.

Per default ist dies der Port 1433 der einem bei der Installation eines MS-SQL-Servers vorgeschlagen wird.

Sobald Sie eine Verbindung zum Internet haben, können Sie direkt über den ODBC-Treiber mit Kennwort und Passwort den SQL-Server ansprechen, als ob dieser im eigenen Netzwerk stehen würde.

Alleine die eventuell langsamere Geschwindigkeit wird den wahren Weg zu den Daten verraten. Durch die Transaktionsfähigkeit des SQL-Servers ist eine Datensicherheit ebenfalls gegeben.

Zugriff auf DBF-Dateien durch ein VFP-Serverprogramm

Um dem Kauf eines teuren SQL-Servers vorzubeugen hat bereits so mancher an einen VFP-Server gedacht. Also ein Programm welches in irgendeiner Art und Weise darauf wartet daß im ein Auftrag übergeben wird, Daten zu suchen und diese in irgendeiner Art und Weise über das Internet zu übertragen.

Es entstehen dadurch aber wesentliche Probleme.

  1. Ein Server für einen Client. Das bedeutet, daß der Server während der Abarbeitung der Abfrage keine anderen Clients bedienen kann. Dem kann man abhelfen, indem man mehrere solcher Server auf der gleichen Maschine laufen läßt.
  2. Der Nachrichten-, bzw. Datenaustausch ist dadurch noch nicht gelöst und muß über FTP oder ähnliches abgearbeitet werden.

Zugriff auf DBF-Dateien durch die Active-FoxPro-Pages

Der Problemfall mit den Datenzugriffen auf DBF-Dateien hat mich bewogen mit den AFP´s ein Tool zu schreiben, welches den Zugriff von mehreren Client gleichzeitig ermöglicht und sofort ordentlich lesbare DBF-Dateien erzeugt.

Dafür notwendig ist ein Webserver und die AFP. Es entstand eine spezielle AFP-Seite welche direkt über eine URL SQL-Kommandos empfangen kann. Auch ist eine vorherige Anmeldung mit Username und Kennwort von nöten, sodaß die Sicherheitsbedingungen erfüllt werden.

Nebenbei werden die Daten auch noch RLL-encoded komprimiert und bei Bedarf sogar verschlüsselt.

Es stehen die gewohnten SQL-Befehle SELECT FROM, INSERT INTO, DELETE FROM und UPDATE SET zur Verfügung. Die Daten werden in verschiedenen Formaten geliefert. Als XLS, SDF, TXT, HTML oder als DBF. Sollte neben der DBF auch noch eine FPT abgefragt worden sein (Memo´s) so wird die Ergebnis-FPT direkt mit einer speziellen Kennung an den Internetbytestrom angehängt.

Auf der Seite des Clients kann man nun mit der Funktion HTTPGET aus der wwipstuff oder mit VFPHTTP auf den Webserver zugreifen und Daten senden, sowie empfangen.

Eine über Klassen gesteuerte Ansteuerung ist bereits in der Testphase und wird in Kürze verfügbar sein.

Dies ist im übrigen die einzige Methode um echte DBF-Dateien online aus dem Internet zu bekommen und das durch jede Firewall hindurch.

Durch die Multitaskingfähigkeit der AFP ist es kein Problem mehrere Clients parallel zu bedienen.

Zugriff auf Remotedaten via RDS

Mit der Einführung von ADO und dem Internet Information Server 4 von Microsoft wurde eine spezielle Zugriffsmethode auf Daten eingeführt. (http://www.microsoft.com/data/rds)

Mit ADO bekommt man auch den Lowlevelzugriff RDS geliefert, den man aus VFP heraus als COM-Server ansprechen kann.

Es ist für den Zugriff auf die Daten ein ODBC-Treiber am Server notwendig und der IIS4, welcher die Anfragen weiterleiten kann.

Im ODBC-Manager muß die Datenquelle, sei es jetzt SQL-Server oder normale VFP-Dateien, angegeben werden.

Am Client muß nun das RDS-Object instanziiert werden. Vorher auch noch die eventuell möglichen DEFINES

 

*---- enum Values ----
#Define adcExecSync 1
#Define adcExecAsync 2
 
*---- enum Values ----
#Define adcFetchUpFront 1
#Define adcFetchBackground 2
#Define adcFetchAsync 3
 
*---- enum Values ----
#Define adcReadyStateLoaded 2
#Define adcReadyStateInteractive 3
#Define adcReadyStateComplete 4
 
oRDS = CreateObject("rds.datacontrol")
 
 

Dann müssen die notwendigen Parameter eingestellt werden

With oRDS
.Server = "http://IP-adresse"
.Connect = "dsn=ODBC-Quelle;UID=Kennwort;PWD=Passwort;"
.SQL = “Select – Statement”
.ExecuteOptions = adcExecSync
.FetchOptions = adcFetchBackground
.Refresh
EndWith

Vielleicht gleich vorneweg den Tip, daß es eventuell zum Fehler 0x80070558 kommen kann. Suchen Sie nicht lange bei Microsoft nach, sondern sehen Sie bei Ihrem Webserver nach, ob bei der Home – Seite der Properties 'Run in a separate memory space' eingestellt ist. Machen Sie den Klick weg, dann wird es funktionieren <vbg>

Sie können nun mit

oRds.Recordset.Fields(Feldnummer).Value
 
oder mit
oRds.Recordset.Fields(“Feldname”).Value
 
die einzelnen Felder ansprechen.
Mit
oRDS.RecordSet.Bof
 
oder
oRDS.RecordSet.Eof
 
finden Sie heraus, wann das Ende der Tabelle erreicht wurde.
Mit
oRDS.RecordSet.MoveFirst
oRDS.RecordSet.MovePrevious
oRDS.RecordSet.MoveNext
oRDS.RecordSet.MoveLast
 
Navigieren Sie im Recordset Vorwärts und Rückwärts.
Mit
oRDS.SubmitChanges()

werden Änderungen an den Server weggeschickt usw.

Genauere Details finden Sie in der RDS-Beschreibung bei Microsoft. ( http://www.microsoft.com/data )

 

Zugriff auf Remotedaten via DCOM

Visual FoxPro eignet sich hervorragend als sogenannter COM-Server. Speziell seit dem Visual Studio Servis Pack 3 für Visual FoxPro wurde die Möglichkeit geschaffen optimal einen VFP-COM-Server im sogenannten MTS laufen zu lassen.

Man kann damit Programme schreiben, welche als Datenserver fungieren können.

Hier ist ein kleines Beispiel dafür

Erzeugen Sie ein Projekt mit dem Namen inetdcom und erzeugen Sie ein Programm mit dem gleichen Namen. Dort hinein, kopieren Sie oben stehende Programmzeilen.

Kompilieren Sie das Projekt zu einer Multithreaded-DLL.

Nun erzeugen Sie im Transaktionserver ein neues Package und fügen Sie die DLL als Komponente ein. Nun erzeugen Sie noch eine Role am besten mit dem User „Everybody“ und weisen Sie die Role der Componente zu.

Wenn Sie auf das Package mit der rechten Maustaste in der MTX-Konsole klicken, können Sie per Export dieses Package abspeichern. Gleichzeitig wird Ihnen unter einem Verzeichnis Client eine EXE erzeugt, welche Sie auf jedem DCOM-fähigen Rechner installieren können. (Einfach starten)

Nun existiert auf Ihrem Client ein Registry-Eintrag welchen Sie mit

X=createobjectx(“inetdcom.vfpserver“,“ip-adresse“)

unter VFP starten können. Createobjectex wurde gewählt, damit man angeben kann, welchen Server man ansprechen möchte, da in dem erzeugten Package normalerweise der Name des fremden Rechners abgespeichert wird und nicht seine IP-Adresse.

Nun können Sie eine beliebige Datei mit x.open(„x:\verz\xxx.dbf“) öffnen und mit x.sqlcmd(„select * from xxx“) einen Select auf die Tabelle machen.

Ihnen steht dann unter x.fieldcount die Anzahl der Felder und unter x.fields.feldname jedes einzelne Feld zur Verfügung.

Ein x.movenext() und x.moveprev() geht im selektierten Bereich von Datensatz zu Datensatz.

Sie sehen. Was Microsoft mit dem RDS oder ADO machen kann, daß können wir in VFP ebenfalls und wenn nicht besser.

 

XML

Natürlich muß man in einer Internetsession das Wörtchen XML in die Finger nehmen. Ich muß aber ehrlich sagen, daß ich äußerst erstaunt bin, welchen Stellenwert eine auf Text basierende Datenübertragung haben kann. Zugegeben ist es unter den Textbasierten Daten die Beste, jedoch für VFP-Programmierer nur bedingt von Wichtigkeit.

XML ähnelt der guten alten dBase-Struktur, als diese noch nicht durch „Klones“ verändert wurde. Das gute alte dBase III Format ist neben der SDF-Textstruktur eine der am weitesten verbreitete Form, Daten auszutauschen. Jedes Programm was etwas auf sich hält, kann DBF III Dateien lesen und schreiben und wenn dies auch via ODBC-Treiber funktionert. XML dagegen ist im Moment noch ein unbeschriebenes Blatt und nur wenige Programme können damit umgehen.

Seien wir einmal ehrlich. Was hilft es wenn in einem XML Dokument Musiknoten übermittelt werden, wenn es auf der Welt erst ein einziges Programm gibt welches diese Noten dann abspielen kann ?? Dagegen gibt es für das MIDI-Format eine Unzahl von Programmen auf verschiedensten Plattformen.

Aber die Zeit wird es zeigen, ob man auch ohne JAVA oder XMLDOM (Microsoft IE5) ein XML-Dokument ordentlich lesen kann.

Mit dieses etwas kritischen Worten möchte ich diesen Vortrag / Sessionnotes abschließen und hoffe, daß Sie nun etwas mehr Licht am Horizont sehen und Ihre Probleme dadurch vielleicht sogar gelöst wurden.

Und um ganz ehrlich zu sein... Die Idee mit dem gezeigten VFP-Server auf MTS-Basis habe ich während des Schreibens dieses Dokumentes erfunden und ca. eine Stunde herumexperimentiert, bis es den gewünschten Effekt hatte.

Sie sehen, daß manchmal kleine Ideen schon große Wirkung zeigen können, denn wahrlich großartig ist der Code nicht gerade, den Sie weiter oben sehen, aber das ist eben „effektives Programmieren“ <vbg>

Peter Herzog ist Gesellschafter der ProLib Software GmbH (http://www.prolib.de) seit 1996 ein Microsoft MVP (Most Valuable Professional) und Sie erreichen Ihn unter peter.herzog@prolib.de