Zurück zum Inhaltsverzeichnis des Manuskripts verteilte Systeme

Übung 2: Beispielhafter Grobentwurf

Programme

Das Programmsystem ist unter Windows-7 entwickelt worden und besteht aus den folgenden Quelldateien:

Die zugehörigen class-Dateien befinden sich in ein und demselben Verzeichnis.

Grobarchitektur

Das Programm wird so gestaltet, dass möglichst viele Programme und Programmteile von der ersten Übungsaufgabe übernommen werden können. So wird das Programm Telefonbuch.java ohne jede Änderung auch in der zweiten Übungsaufgabe verwendet. Das Programm TelefonbuchServer.java wird an die Gegebenheiten der zweiten Aufgabe angepasst. Es ergibt sich folgende Grobarchitektur:


Grobstruktur

Klasse TelefonbuchServer

In dem Programm TelefonbuchServer.java aus der ersten Übungsaufgabe wird die Benutzerschnittstelle durch eine Socketschnittstelle, bestehend aus den beiden Methoden vomBrowser() und zumBrowser(), ersetzt und die Analysemethode analyse() angepasst. Der HTTP-GET-Request, den der Browser beim Zugriff auf den Telefonbuchserver erzeugt, enthält einen Query String, in dem die Benutzereingaben gebündelt sind. Dieser Query String ist ganz ähnlich aufgebaut, wie der in der ersten Übungsaufgabe, jedoch nicht mit ihm identisch. Deshalb muss die Analysemethode angepasst werden. Sie wird so gestaltet, dass sie das Gleiche leistet wie ihr Pendant in der ersten Aufgabe und wie dieses einen korrekt aufgebauten Query String erzeugt, mit dem das Telefonbuch abgefragt wird:


Programmarchitektur

Der Programmablauf wird durch folgenden Pseudocode beschrieben:

main() { ServerSocket ss an bestimmtem Port einrichten; while(true) { Socket cs = ss.accept(); // Auf Browser-Request warten String qs = vomBrowser(cs); ArrayList<String> erg = analyse(qs); zumBrowser(cs, erg); cs.close(); } ss.close(); }

Benutzerschnittstelle

Der Dialog mit dem Telefonbuchserver beginnt durch eine Eingabe in die URL-Zeile eines Web-Browsers, die in unserem Übungsraum

http://sun65:9876

lautet, wenn der Server auf dem Rechner sun65 am TCP-Port 9876 gestartet worden ist. Der Server reagiert darauf, indem er eine Eingabemaske (eine HTML-Form) gemäß der Aufgabenstellung zum Browser schickt. Die Reaktion des Servers wird durch die Analysemethode gesteuert. Sie wird von der Methode vomBrowser() aus der Socketschnittstelle mit einem Query String versorgt, wertet ihn aus, startet gegebenenfalls Suchvorgänge im Telefonbuch, ergänzt die Ergebnisliste um das Analyseergebnis und reicht diese an die Methode zumBrowser() weiter. Diese bereitet die Ergebnisliste als HTML-Tabelle auf und sendet sie, gefolgt von einer neuen Eingabemaske, per HTTP zum Browser, der sie ausgibt und über die Maske neue Eingaben ermöglicht. Die Eingabemaske hat folgendes Aussehen:


Eingabemaske

Die Eingabefelder und Buttons der Maske bekommen im HTML-Kode folgende Bezeichnungen:

  1. Das Eingabefeld zum Label Name : heißt name,
  2. das Eingabefeld zum Label Nummer : heißt nummer,
  3. der Button Abschicken bekommt keinen Bezeichner,
  4. der Button Reset bekommt keinen Bezeichner,
  5. der Button Beenden heißt ende.

Query String

Es ergeben sich mehrere mögliche Formen für den entstehenden Query String. Hat er die Form (ohne das Komma)

Analyseergebnisse

Die Analysemethode liefert als Ergebnis eine der folgenden Zeichenketten:

Programmstart

An irgendeinem Rechner des Übungsraums wird ein lokales Login durchgeführt und die Programme werden dort bereitgestellt. Mit sftp werden sie zu einem anderen Rechner des Übungsraums übertragen. Dort wird das Programm in einer ssh-Konsole mit

java TelefonbuchServer

gestartet. Es meldet seine Bereitschaft mit der Angabe des Rechnernamens, auf dem es läuft, und seiner Portbelegung. Auf dem Ausgangsrechner wird ein Web-Browser gestartet. Mit der Eingabe

http://Rechnername:Port     # wie z.B. http://sun65:9876

in seine URL-Eingabezeile wird auf den Telefonbuchserver zugegriffen.



Zurück zum Inhaltsverzeichnis des Manuskripts verteilte Systeme