Session D-NOCO

Client/Server ohne Codeänderung

Markus Winhard


Client/Server Definition

Die Zusammenarbeit zwischen zwei (oder mehreren) Prozessen in der der eine Prozess (der Client) Resourcen anfordert und Diensten die der andere Process (der Server) zur Verfügung stellt. Die beiden Prozesse können auf einer Maschine laufen oder auf getrennten Maschinen die über ein Netzwerk zusammenarbeiten.

Zum Beispiel nutzt ein Datenbank-Server den PC für die Ausgabe (User Interface) und die Verarbeitung einer Applikation, während der Server selbst das Datenmanagement beisteuert. Andererseits nutzt ein Applikationsserver einen PC für die Ausgabe, während der Server sowohl die Verarbeitung als auch das Datenmanagement übernimmt.

Darüberhinaus gibt es Aufteilungen in drei und mehr Schichten sowie Mischformen.

Immer mehr Kunden wollen ihre Applikationen mit externen Außenstellen betreiben, die oft lediglich über Telefonleitungen angeschlossen sind. Jeder, der sich schon einmal mit dieser Problematik beschäftigt hat weiß, daß die Antwortzeiten gegen unendlich gehen. Mit Standard-VFP ist dies also normalerweise ein hoffnungsloses Unterfangen. Diese Session zeigt, wie eine FoxPro-Anwendung zur C/S-Applikation wird, ohne SQL Server, Oracle oder andere C/S-Datenbanken einsetzen zu müssen.

Wie können wir nun das gestellte Problem lösen, sprich, die Außenstelle unseres Kunden mit einem vertretbaren Aufwand anbinden?

VFP als Frontend, SQL-Server, Oracle, etc. als Backend. Remote Views, SQL Pass Through.

Datenzugriff über HTML, XML, RDO.

Der Client instantiiert DCOM-Objekte über das WAN. Die DCOM Objekte greifen auf die Daten zu und schicken nur die benötigten Informationen zurück an den Client.

Eine dedizierte Workstation die Anforderungen der Clients abarbeitet. Die Kommunikation zwischen Außenstelle und Job-Server kann z.B. über eine Task-DBF abgewickelt werden.

Die bisher aufgezeigten Wege bedingen die weitgehende Neuprogrammierung einer herkömmlichen VFP-Anwendung. Das bedeutet i.d.R. enormen Zeitaufwand und Kosten die unser Kunde nicht bereit ist in voller Höhe zu bezahlen.

Es geht aber auch ohne Neuprogrammierung:

VFP über WAN

Das Programm wird in der Außenstelle installiert. Bei Bedarf wird über das Dial Up Netzwerk (RAS) oder Drittanbieter-Produkte wie AVM NetWAYS eine Verbindung zum Server aufgebaut.

Der Pferdefuß dieser Lösung ist, daß VFPs Datenbankzugriffe nur schnell sind, solange genügend Bandbreite zur Verfügung steht. Auf einer ISDN-Leitung ist die sonst geschwindigkeitessteigerne Rushmore Technologie eher ein Bremser. Auch das Anfügen eines neuen Datensatzes oder einfache Satzsperren dauern viel zu lange um mit der VFP Anwendung am Client noch zügig arbeiten zu können.

Remote Access Software (pcAnywhere, Carbon Copy, ReachOut, Co-Session, etc.)

Der Client in der Außenstelle wählt sich mit Hilfe dieser Software auf einer dedizierten Workstation im Netz der Zentrale ein. Diese Workstation wird von ihm ferngesteuert.

Die Probleme dieser Lösung sind: Langsamer Bildschirmaufbau, teilweise mit verfälschten Farben, umständliches Drucken am Client. Es ist technisch möglich, daß sich mehrere Clients einer Außenstelle eine Telefonleitung teilen. Leider ist das aber für die masssiven Grafikausgaben von VFP zu langsam. Wir erinnern uns: Aus Sicht von Windows und damit auch aus Sicht der Remote Access Software ist eine VFP Form nur eine einzige große Bitmap. Wenn sich in dieser "Bitmap" etwas ändert, dann muß die "Bitmap" komplett neu übertragen werden. Die Erfahrung zeigt auch, daß Lösungen dieser Art i.d.R. zu einem erhöhten Supportaufkommen führen, das immer wieder zu Unstimmigkeiten mit unseren Kunden führen kann ("Sie haben gesagt, daß das funktioniert...").

Die einzige Variante die weder Ihren Kunden noch Sie auf Dauer zuviel Geld kostet ist folgende:

Windows 2000 Server mit Terminal Services / Citrix MetaFrame

Dabei handelt es sich ursprünglich um ein OS/2 Produkt der 1989 gegründeten Fa. Citrix namens WinView. 1992 lizenzierte Citrix den NT 3.51 Quellcode von Microsoft. Daraus entstand 1995 der erste Terminal Server für Windows: Citrix WinFrame. 1997 lizenzierte Citrix große Teile seiner WinFrame Technologie an Microsoft und half Microsoft bei der Entwicklung des "Windows NT Server 4.0, Terminal Server Edition". Microsoft lizenzierte allerdings nicht das von Citrix verwendete ICA (Independent Computing Architecture) Protokoll, sondern setzte sein eigenes RDP (Remote Desktop Protokoll) ein. Es ist dem mit NetMeeting verwendeten Protokoll sehr ähnlich. Als nächstes entstand Citrix MetaFrame. Es ist sozusagen die Ergänzung des NT4 Terminal Servers um die Teile die Microsoft nicht lizenziert hat. Im Windows 2000 Server hat Microsoft seine beiden Server-Linien zusammengeführt und den Terminal Server als einfach zu nutzenden Dienst ins Betriebssystem integriert. Citrix entwickelt sein Produkt MetaFrame weiter um die Windows 2000 Terminal Services zu ergänzen.

Entsprechend der Definition handelt es sich bei dieser Lösung um eine Client/Server Lösung. J

Der Zugriff über die Windows 2000 Terminal Services vereint die Vorteile der Lösungen "VFP über WAN" und "Remote Access Software" ohne ihre Nachteile. Am besten Sie stellen es sich vor wie pcAnywhere

1. Windows 2000 Terminal Services in der Theorie

Anforderungen an die Server-Hardware

Die Anforderungen an die Hardware definieren sich aus den Anforderungen für die das Betriebssystem Windows 2000 Server stellt plus den zusätzlichen Anforderungen die der Terminal-Dienst stellt. Nehmen Sie also einen PC den sie mit gutem Gewissen als Windows 2000 Server verwenden würden. Spendieren Sie ihm mindestens 128 MB RAM für das Betriebssystem und die Terminal Services.

Überprüfen Sie auf einer Workstation ihres Kunden im NT Task Manager wieviel Speicher der Prozess ihrer Anwendung belegt nachdem der Anwender längere Zeit damit gearbeitet hat. In der Regel sind das zwischen 15 und 35 MB. Multiplizieren Sie diese Zahl mit der Anzahl Clients die gleichzeitig von der Außenstelle aus mit dem System arbeiten sollen. Diesen Speicherbedarf müssen Sie zu den o.g. 128 MB hinzufügen.

Anforderungen an die Client-Hardware

Die untere Grenze definiert ein Pentium 100. Er kann unter Windows for Workgroups 3.11 oder jedem später auf den Markt gekommenen Microsoft Windows Betriebssystem laufen. Der Hauptspeicherbedarf richtet sich nach dem Bedarf des verwendeten Betriebssystems.

Bei Neuanschaffungen sollte man sogenannte "echte" Terminals in die engere Wahl ziehen, wie sie für andere Betriebssysteme schon seit längerem gebaut werden. Es gibt sie inzwischen auch mit Boot-PROM für Windows 2000. Der bekannteste Hersteller ist wohl Wyse. Laut Presseberichten verursachen diese Terminals auf Dauer geringere Kosten bei ihrem Kunden als ein PC.

Anforderungen an die Datenleitung

Eine ISDN-Leitung mit 64Kbit/sec. kann problemlos 2 Clients bedienen solange sie nicht gleichzeitig drucken. Wenn es unbedingt mehr als 2 Clients sein müssen oder ständig in der Außenstelle gedruckt werden muß, versprechen Sie ihrem Kunden nichts sondern ermitteln Sie in der Praxis wann es ihren Anwendern zu langsam wird.

Welche Protokolle können verwendet werden

TCP/IP. Und sonst nichts. Bei Workstations unter Windows 3.11 für Workgroups muß es sogar der original Microsoft 32Bit TCP/IP Stack sein. Das sollte aber kein Problem darstellen, da dieses Protokoll nur für die Verbindung zwischen den Terminal Anwendern und dem Terminal Server verwendet werden muß. Auf der anderen Seite, innerhalb des LANs ihres Kunden kann jedes Protokoll laufen das von Windows 2000 unterstüzt wird.

Müssen Sie unbedingt auf der Client-Seite andere Protokolle verwenden (z.B. IPX) dann brauchen Sie die oben erwähnte Zusatzsoftware Citrix MetaFrame.

Kosten

Eine Windows 2000 Terminal Client Lizenz kostet derzeit ca. 450 DM. Die laufenden Kosten sind geringer als bei allen vergleichbaren Lösungen.

2. Windows 2000 Terminal Services in der Praxis

Installation der Terminal Services auf Server und Client (16bit und 32bit)

Es ist weder schwierig noch langwierig, wenn man es mal gesehen hat. Allerdings würden die Screenshots den Rahmen dieses Skripts sprengen. Ich zeige die komplette Installation in meinem Vortrag.

Software-Installation

Software die für Terminal User zur Verfügung stehen soll kann auf zwei Arten installiert werden:

  1. Start > Einstellungen > Systemsteuerung > Software

  2.    - im DOS-Fenster eingeben:              change user /install

- Software wie gewohnt installieren

- im DOS-Fenster eingeben:            change user /execute

Diese Vorgehensweise ist notwendig, damit Registry-Einträge im richtigen Ast landen und somit von allen Usern gesehen werden.

Was ist mit anderer Software die die Anwender des Kunden nutzen wollen?

Die Windows 2000 Terminal Dienste sind da nicht wählerisch. Sie funktionieren nicht nur mit VFP-Anwendungen, sondern genauso mit Anwendungen die in FPW oder FPD geschrieben sind. Auch MS Office und andere Standard Software läuft.

Einschränkungen gibt es bei hoher Farbanzahl, Bildbearbeitungssoftware, Streaming Video und Streaming Audio.

Citrix MetaFrame bietet Umgehungsmöglichkeiten dieser Einschränkungen. Bedenken Sie aber, daß sie für Anwendungen mit diesen Anforderungen wesentlich mehr Bandbreite benötigen, als sie im WAN oder auf einer ISDN Leitung normalerweise zur Verfügung haben.

Nutzung lokaler Resourcen

Der Datenaustausch mit lokalen Anwendungen über die Zwischenablage ist möglich, ebenso das Nutzen lokaler Drucker. Der entsprechende Druckertreiber muß auf dem Terminal Server installiert werden.

Die Nutzung lokaler Diskettenlaufwerke und Festplatten für Applikationen die im Terminal-Fenster laufen kann vom Administrator freigegeben werden. Untersuchungen haben aber gezeigt, daß das in den meisten Fällem nicht sinnvoll ist. Es führt hauptsächlich zu geringerer Produktivität beim Anwender und Mehrarbeit für den Administrator. Selbst das früher beliebte Disketten-Clearing mit der Bank kann heute bequemer, schneller und sicherer mit einer entsprechenden Software der Bank erledigt werden. Die Kommunikation mit der Bank erfolgt über ISDN/Modem oder Internet.

Seamless Desktop Integration

Es ist möglich den Terminal Client so einzurichten, daß Anwendungen des Terminal Servers aussehen als würden sie direkt in einem Fenster des lokalen PCs laufen. In dem Fall wird aber pro Anwendung eine eigene Verbindung zum Terminal Server benötigt. Es hängt von der verfügbaren Bendbreite ab, ob diese Option sinnvoll ist.

Zugriff übers Internet mit dem Browser:

Bei Windows 2000 Server Service Pack 1 wird ein ActiveX Control mitgeliefert, mit dessen Hilfe das möglich ist. Nach bisheriger Kenntnis funktioniert das aber nur mit dem Microsoft Internet Explorer.

Was kann ich als VFP-Programmierer falsch machen?

Das macht eine Applikation auf dem Terminal Server langsam:

Was bringt die Terminal Server Unterstützung in VFP6 Service Pack 4?

Die neue Einstellung BITMAP=OFF in der Datei Config.fpw soll zu Geschwindigkeitsvorteilen beim Betrieb im Terminal Server führen. Die Session zeigt, was VFP mit dieser Einstellung anders macht.

Empfehlenswerte Literatur zum Thema: "Windows NT Terminal Server and Citrix MetaFrame" von New Riders Publishing (www.newriders.com), ISBN 1-56205-944-0