Softwareentwicklung in verteilten Umgebungen Einführung Übung 1 Low-Level Client-Server Architektur Alexander Lex 1
KEINE PLAGIATE! Einzel-Übungen! Eigenständige Arbeit jedes Teilnehmers Weitergabe von Code unzulässig (absichtlich oder fahrlässig) Datensicherheit ist Aufgabe der Studierenden Vorsicht mit Zugriffsrechten (Kaffee holen, etc.) Null Punkte für alle Beteiligten! Kein Abschreiben von Code aus vorhandenen Quellen (Internet, Bücher,...) Automatische und manuelle Prüfung 2
Website Gültige Informationen auf der Website: http://www.icg.tugraz.at/courses/svu_ue Was dort steht gilt! Folien nur Anhaltspunkt! Übungsstart: 29.10.2009 Ausgabe der Interfaces, Server läuft Abgabe: Bis Sonntag, 06.12.2009, 24:00 https://lehre.icg.tugraz.at/students/submit.php Abgabesystem rechtzeitig testen (z.b. leere Interfaces abgeben) 3
Client-Server System Verbindung über Sockets Server wird von uns zur Verfügung gestellt Ihre Aufgabe: Client Programmierung Kommunikations-Protokoll vorgegeben 4
Teilaufgaben SSL-verschlüsselte Übertragung Authentifizierung mittels ICG Username und Passwort Sollte heute via E-Mail gekommen sein Abfrage aktive Users Chat mit Kollegen Bildoperationen (serverseitig) 5
Beispiel Client A fragt Client B um Erlaubnis If B accepted: Client A & Client B übertragen Bild zu Server Server antwortet mit Bild Result portrait = morph(portrait A, portrait B) 6
Server: svu.icg.tugraz.at 3 Funktionen: Server Echo Server (auf Port 5555) Zum Testen grundlegendes Netzwerkcodes Echo SSL Server Zum Testen der SSL Verbindung (auf Port 6666), sonst gleich wie Echo Server Der echte Server (auf Port 4444) Testserver laufen bereits! Ping ist abgeschaltet! 7
SSL Verbindung Es wird ein Keystore zur Verfügung gestellt, der den Public Key des Instituts enthält. Um den Keystore zu verwenden muss die Java VM mit folgenden Parametern aufgerufen werden: -Djavax.net.ssl.trustStore=SVUKeyStore -Djavax.net.ssl.trustStorePassword=svu_cert SVUKeyStore ist der vollstaendige Pfad zum KeyStore Beispielaufruf: java -Djavax.net.ssl.keyStore=/home/svu/SVUKeyStore -Djavax.net.ssl.trustStorePassword=svu_cert -jar /home/svu/excercise_1/svu_client_example_1.jar 8
Protokoll Commandos werden in XML versand Syntax: <cmd><daskommando>wert</daskommando></cmd> Kommandos: Heartbeat Authenticatioon Online Benutzer abfragen Nachrichten versenden Bilder versenden Terminieren 9
Heartbeat Wird nur vom Server versand. Stellt sicher, dass der Client nicht abgestürzt ist Der Client muss darauf nicht reagieren! Server entdeckt Fehler automatisch beim Senden. Kommt jede Minute Syntax: <cmd><heartbeat /></cmd> 10
Authentifizierung Verwendung des ICG LDAP Username und Passworts zur Authentifizierung Client sendet seinen Username, Server antwortet und teilt mit ob Authentifizierung erfolgreich war Server teilt auch einen Qualifizierten Benutzernamen mit Dadurch kann man sich mehrfach verbinden und mit sich selbst testen Beispiel: user:0 Client sendet: <cmd><user><username>meinicgldapbenutzername</use rname><password>meinicgldappasswort</password>< /user></cmd> Server antwortet: <cmd><confirmauth><success>true false</success><q ualifiedusername>usernameplusextension:0</quali fiedusername></confirmauth></cmd> 11
Online Benutzer abfragen Client sendet: <cmd><requestonlineuserlist /></cmd> Danach wartet Client auf Antwort des Servers nimmt keine anderen Nachrichten an Antwort: <cmd><onlineusers> <username>hansi:0*</username> <username>hansi:1</username> <username>seppi:0</username> </onlineusers></cmd> Der eigene Username ist mit einem * gekennzeichnet 12
Nachrichten Versenden Partner und Nachricht angeben <cmd><message partner="hansi:0">the Message</message></cmd> Client muss Nachrichten empfangen und senden können Nachrichten werden nicht bestätigt 13
Bilder versenden Zunächst wird ein anderer Benutzer gefragt ob er/sie ein Bild morphen möchte: <cmd><imagepartnerrequest>hansi:1</imagepartnerre quest></cmd> Der gefragte Client antwortet dann entweder ablehnend oder zustimmend: <cmd><imagepartneraccept><username>fullyqualified PartnerName</username><accept>true false</accep t></imagepartneraccept></cmd> Das Bildtransferkommando folgt (siehe Website) 14
Terminieren Zum beenden der Verbindung: <cmd><terminate /></cmd> 15
Interfaces (1/2) Es werden 4 Java Interface Files zur Verfügung gestellt: ICommunication Methoden Interfaces die dann das Versenden eines Kommandos triggern: public void authenticate(string username, String password); IIncommingCommands Methoden Interfaces die nach dem Parsen eines eingehenden Kommandos aufgerufen werden müssen: public void authenticationsuccessful(boolean wassuccessful, String qualifiedusername); 16
IConnection Interfaces (2/2) Stellt die Verbindung zum Server her Terminiert die Vergindung public void establishconnection(); IApplication Initialisiert und startet Programm public void initalize(); public void run(); 17
User Interface Es muss ein User Interface geben! Alle Funktionen müssen via UI bedient werden können Es kann GUI oder Kommandozeile sein Wenn Kommandozeile: Kommandos selbst wählen Beispiel: message user:1 Hallo! Parsen und dann entsprechende Methode in ICommunication aufrufen, von dort wird dann verschickt. User Interface wird nicht automatisch getestet, muss aber beim Abgabegespräch demonstriert werden 18
Gutes Design! Zusatzbedingungen Javadoc für jede Methode und jede Klasse, außer für Methoden die im Interface dokumentiert sind KEIN busy wait! 19
Tipps (1/2) Multi-threading verwenden Eigener Thread für UI und Rest des Programms Synchronisation mit Java Mechanismen (z.b. BlockingQueue und synchronised Methoden) IDE verwenden Empfohlen: Eclipse Eclipse Fragen werden in der Newsgroup von uns beantwortet andere IDEs ok, aber nicht supported 20
Tipps (2/2) XML Parser verwenden, nicht selbst parsen DOM documents oder SAX parser Java DocumentBuilder empfohlen 21
Nach der Abgabe Programm wird über die Interfaces automatisch getestet. Pro failure einer Methode: Punkteabzug Punkteabzüge für schlechtes Design, nicht funktionierendes UI, mangelnde Dokumentation 22
Abgabegespräch Ein Abgabegespräch pro Übung Reservierung von Terminen via: https://lehre.icg.tugraz.at/students/reservation.php Demonstration Verständnisfragen Fragen zum Code Kein Problem, wenn Übung selbst gemacht 23
Weiter Informationen Bis 29.10 gesamte Übungsangabe und Downloads auf http://www.icg.tugraz.at/courses/svu_ue verfügbar Fragen in der Newsgroup stellen! E-Mails nur im Notfall, oder bei individuellen Problemen 24
Viel Erfolg! 25