Begleitmaterial Abitur 2024

Entwicklung von Client-Server-Systemen

In diesem Kapitel/Unterabschnitt sollen zuerst Serverdienste, die im Netz verfügbar sind mit Hilfe der Klasse Connection und später mit der Klasse Client gestestet werden (Analyse und Implementation). Anschließend sollen eigene Serveranwendungen modelliert, implementiert und bereitgestellt werden (Modellierung und Implementierung von Netzwerkanwendungen in Client-Server-Strukturen). Die Ideen hierzu stammen aus den Unterlagen von QUALIS des LAndes NRW und werden Schüler und Lehrer zur freien Verfügugn gestellt

Vorbemerkung

Für diese Unterrichtseinheit werden die Netzwerklassen Connection, Client und Server benötigt, die vom Land NRW auch beim Zentralabitur zugrunde gelegt werden. Darüber hinaus werden die Klassen Queue und List verwendet. Das Gesamtpaket der „Abiturklassen“ kann unter folgender URL heruntergeladen werden: https://www.schulentwicklung.nrw.de/lehrplaene/lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/hinweise-und-beispiele/index.html

Gliederung

  1. Nutzung einfacher Server-Dienste mittels Clients Nutzung von Server-Diensten mithilfe der Klasse Connection
    • DAYTIME-Dienst
    • QODT-Dienst Nutzung von Client-Diensten mithilfe der Klasse Client
    • Echo-Dienst
  2. Anbieten von Diensten mittels Server Anbieten von Server-Diensten mithilfe der Klasse Server
    • Echo-Server
  3. Entwicklung eines vollständigen Client-Server-Systems Modellierung und Implementierung eines Messenger-Dienstes
    • Protokoll
    • Messenger-Server
    • Messenger-Client

Software und Dienste

Alle hier entwickelten bzw. erläuterten Klassen einschließlich der Netzklassen stelle ich bei edugit oder im Tauschverzeichnis als BlueJ Projekt zur Verfügung.

DienstPort
Ecdo7
DayTime Server (DTS)13
Quote of ths Day (Qotd)/Zitat des Tages17

Nebenläufigkeit

Die Klasse Client reagiert beim Nachrichtenempfang nebenläufig (siehe Dokumentation).

Computersysteme lösen Probleme in der echten Welt, sodass wir zum Einstieg auch in der Realwelt bleiben, um uns dem Umfeld der nebenläufigen Programmierung zu nähern. Gehen wir durch die Welt, bemerken wir viele Dinge, die gleichzeitig passieren: Die Sonne scheint, auf der Straße fahren Mofas, Autos werden gelenkt, das Radio spielt, Menschen sprechen, einige essen, Hunde tollen auf der Wiese. Diese Dinge passieren nicht nur gleichzeitig, sondern es gibt mannigfaltige Abhängigkeiten, wie Wartesituationen: An der roten Ampel warten einige Autos, während bei der grünen Ampel Menschen über die Straße gehen – beim Signalwechsel dreht sich das Spiel um.

Wenn viele Dinge gleichzeitig passieren, nennen wir ein interagierendes System nebenläufig. Dabei gibt es Vorgänge, die echt parallel ausgeführt werden können, und bei manchen Dingen sieht es so aus, als ob sie parallel passierten, aber in Wirklichkeit passieren sie nur schnell hintereinander. Was wir dann wahrnehmen, ist eine Quasiparallelität. Wenn zwei Menschen etwa gleichzeitig essen, ist das parallel, aber wenn jemand isst und atmet, so sieht das zwar von außen gleichzeitig aus, ist es aber nicht, sondern Schlucken und Atmen sind sequenziell.[ 248 ](Lassen wir Kleinkinder einmal außen vor. ) Auf Software übertragen: Die diese Nebenläufigkeit durch parallele Abarbeitung – etwa durch mehrere Prozessoren oder Kerne – auch wirklich umgesetzt wird.

Nebenläufige Programme werden in Java durch Threads realisiert, wobei jeder Thread einer Aufgabe entspricht. Im Idealfall findet die Abarbeitung der Threads auch parallel statt, wenn die Maschine mehrere Prozessoren oder Kerne hat. Ein Programm, das nebenläufig realisiert ist, kann durch zwei Prozessoren bzw. Kerne durch parallele Abarbeitung in der Zeit halbiert werden; es muss aber nicht halbiert werden: Es ist immer noch Sache des Betriebssystems, wie es die Threads ausführt. (Quelle: https://openbook.rheinwerk-verlag.de/javainsel/16_001.html)

Kommunikation