kvanC - 2. Teil LuthigerFS19

Fragen zum 2. Teil kvanC an der FHNW

Fragen zum 2. Teil kvanC an der FHNW


C. A.
Diese Lernkarten behandeln fortgeschrittene Themen der Informatik, insbesondere im Bereich der Webtechnologien und Protokolle. Sie vertiefen sich in die Funktionsweise von HTTP, WebSockets und MQTT, einschließlich deren Eigenschaften, Verbindungsarten und Anwendungsfällen. Die Karteikarten beleuchten auch Aspekte wie AJAX, RESTful Webservices und verschiedene Konfigurationsmethoden in der Softwareentwicklung. Ideal für Studierende und Entwickler, die ihr Verständnis von Netzwerkprotokollen und Webtechnologien vertiefen möchten, um effizientere und sicherere Anwendungen zu erstellen.
Flashcards
77
Students
8
Language
German
Category
Computer Science
Level
University
Created / Updated
22.06.2019 / 04.11.2019

Flashcards

Was sind die Vor- und Nachteile der asynchronen Kommunikation?

Vorteile

  • Sendender Prozess kann weiterarbeiten, noch während die Nachricht übertragen wird.

  • Es kann ein höherer Grad an Parallelität erreicht werden.

  • Die Entkoppelung von Sender und Empfänger ist stärker, d.h. grösser Unabhängigkeit beider Komponenten.

 

Nachteile

  • Der Sender weiss nicht, ob / wann die Nachricht angekommen ist.

  • Das Debugging der Anwendung wird anspruchsvoller.

  • Betriebssystem muss Puffer verwalten.

Was ist eine Callback-Funktion?

Eine Funktion, welche die einer anderen als Parameter übergeben und aufgerufen wird.

Pro und Kontras einer Single-Threaded Applikation

Pros:
Einfach, vor allem für die GUI-Programmierung
Event und Rendering werden sequentiell ausgeführt

Keine Synchronisierung der Threads notwendig
Typisches Programmiermodell für GUI-Entwicklung (z.B. auch in Android)

Cons:
Aufwändige, zeitintensive Aufgaben können GUI blockieren, dadurch schlechtes User Erlebnis

Welche 3 Konfigurationsarten gibt es?

  • Environement  - Dezentral
  • JavaScript - Lokal
  • Json File - Zentral

Vor- und Nachteile der "Environment" Konfigurationsart

Vorteile:

  • Die Auswahl des entsprechenden Files kann durch den build-agent automatisch getroffen werden.
  • Kann vom "Kunden" nicht verändert werden (da es "fix einkompiliert" ist).

Nachteile:

  • Kann nach dem Kompilieren nicht mehr verändert werden.

Vor- und Nachteile der "JavaScript" Konfigurationsart

Vorteile:

  • Ist IMMER verfügbar, da es lokal vorhanden ist.
  • Kann vom Kunden wenn nötig verändert werden (oder der Lieferant schickt ein, den Kundenbedürfnissen angepasstes).

Nachteile:

  • Kann problemlos verändert werden (Security-Bedenken).

Vor- und Nachteile der "Json-File" Konfigurationsart

Vorteile:

  • Kann Zentral verwaltet werden.
  • Ist nur remote verfügbar (wenn keine Verbindung zum Server vorhanden ist, ist endegelände).

Beschreibe den Kommunikationsfluss unserer Anwendung

  1. Unser Client sendet vom Localhost aus binär Daten via HTTP an unseren Computer auf die Standard IP-Adresse 127.0.0.1
  2. Über eine TCP Verbindung werden diese an den Webserver Port 8080 weitergeleitet
  3. Der Webserver gewährt einen Zugriff auf den Servlet Container
  4. Via URL Mapping (Das ist nun der FrontController) sammelt der SpringContainer alle URL Mappings unter "/votes"
  5. Hiermit wird der Code im PageController, in unserem Fall VoteController, ausgeführt

Beschreibe die Transformation eines HTTP Request zu Input Parameter einer Handler Methode des PageControllers

  1. Start via POST Request mit JSON Payload {"email":"[email protected]"}
  2. Servlet Container erhält eben diesen POST mittels HTTPServletRequest
    Mit diesen Request stellet er Informationen zur Verfügung wie method, uri, header, type, conten (as InputStream),...
  3. Der Spring Container erhält somit seine Input Parameter, da ihn der Servlet Container an das richtige Ort navigiert, einer der DTO's (email as property)

Was bezeichnet man als POJO?

POJO heisst, Plain Old Java Object, also ein ganz "normales" Java Objekt.
In unserem Kontext wird ein POJO vorallem für den Payload verwendet, welcher in der Handler Methode zur Verfügung steht.

Für was wird der @RequestBody verwendet?

Mit @RequestBody muss dem Spring Framework mitgeteilt werden, dass der entsprechende Input Parameter an den Request Body (JSON Payload) gebunden werden muss.

Erkläre das "Never Blocking" Prizip

Das Prinzip "Never Blocking" und die Eigenschaft "Single Threaded" führen dazu, dass zeitintensive Aufgaben asynchron programmiert werden müssen - auch die Kommunikation über das Netzwerk.

Für was wird fetch() verwendet?

Um einen Request zum Laden einer Ressource zu starten.

In welchem Kontext wird das "await" verwendet und in welchem Rahmen ist es gültig?

Ausschliesslich in der async Methode ist ein await gültig und dient, wie ma aus dem Namen schliessen kann, um künstlich ein Abwarten einer Antwort zu erzwingen.

Wo werden Promises verwendet und wie bildet man eine Kette davon?

In der fetch() Methode.

.then(response =>
    response.json()
)

 

Nachteil: Nicht gut lesbar

Wie ist ein konfigurierbarer Code aufgebaut? Wieso ist das so?

  • Konstanten, die das Programmverhalten beeinflussen, sollen bei Programmstart aus einer Konfigurationsdatei ausgelesen werden.

  • Der Code zeigt dadurch einer bessere Wartbarkeit, Erweiterbarkeit und Wiederverwendbarkeit.

Wie gewährt man die Konfigurierbarkeit auf dem SpringBoot Server?

  • Spring Boot stellt eine grosse Anzahl von Konfigurations-Parameter zur Verfügung (siehe Appendix "Spring Boot Reference Documentation")

  • Konfigurierbarkeit wird über das File "application.properties" realisiert.

Wie gewährt man die Konfigurierbarkeit auf dem Client mit JavaScript?

  • Applikation wird in den Browser geladen und dann gestartet.

  • Wie kommt die Konfigurationsdatei in den Browser?

Was ist der Ansatz beim Polling? Was sind die Nachteile?

  • Beim Polling wird der Server in einem festgelegten Intervall gefragt, ob er neue Informationen hat.

  • Nachteile

    • Grosser Overhead des Netzwerkes

    • Zusätzliche, unnötige Last auf dem Server

Was ist der Ansatz vom LongPolling? Was sind die Nachteile?

  • Beim Long Polling wird eine separate HTTPVerbindung zum Server erst geschlossen, wenn neue Daten verfügbar sind. Nachdem der Browser sie verarbeitet hat, sendet er einen neuen Request zum Server, um auf weitere Updates zu warten.

  • Nachteile

    • Möglichkeit Events zu verpassen

    • Zusätzliche Last auf dem Server um die offenen HTTP Verbindungen zu verwalten

Was ist der Vorteil eines Websocket oder weshalb benutzt man eine Websocket verbindung?

Der Websocket erlaubt eine Full-Duplex Kommunikation über TCP

Welche 3 Protokolle haben wir verwendet?

HTTP, MQTT und WebSocket

Welche Verbindungsart hat die WebSocket Verbindung?

one-to-one,

ist bidirektional

und vebindungsorientiert

Welche Verbindungsart hat die HTTP Verbindung?

one-to-one,
ist unidirektional
und verbindungslos

Welche Verbindungsart hat die MQTT Verbindung?

one-to-many,
ist bidirektional
und vebindungsorientiert

Was sind Eigenschaften vom WebSocket?

  • Internet tauglich
  • sicher mittels TLS
  • Plattformunabhängig

Was sind Eigenschaften des HTTP Protokolls?

  • Internettauglich 
  • synchron
  • Stateless
  • sicher mittels TLS
  • plattformunabhängig

Was sind Eigenschaften des MQTT Protokolls?

  • Publish/Subscribe-Pattern ersetzt Punkt zu Punkt Verbindung
  • Verwendung von Topic's um publishen und subscriben zu können
  • Sicher mittels TLS
  • plattformunabhängig
  • Kann Websocket nutzen
  • Kann vom Server aus gepusht werden

Vorteil einer WebSocket Verbindung?

Die Verbindung bleibt offen solange die Session läuft.

Weshalb verwendet man WebSocket bei einer HTTP Verbindung?

Bei einer HTTP Verbindung muss man immer einen Befehl absetzen um neue Daten zu erlangen, beim WebSocket ist eine Verbindung offen (Session) und kann somit immer wieder Daten vom Server empfangen ohne diese mittels Befehl immer wieder zu holen

Wie lautet das Pattern welches das AJax verhindert?

"click-wait-refresh"-Pattern

Zeichne das Sequenzdiagramm zu Konfigurierbarkeit via JSON-File auf

<Bild>

Benenne die beiden URI-Schemas

ws: für unverschlüsselte Verbindungen

wss: für verschlüsselte Verbindungen

Erkläre den Opening Handshake vom WebSocket

  • Der Handshake wird vom Client eingeleitet und ist ein valider HTTP Request
  • Server akzeptiert und bestätigt den Upgrade-Request mit HTTP Response (inkl Header)
  • WebSocket baut eine TCP Verbindung auf Zwischen Client und Server

Wie nennt man das WebSocket Protokoll auch noch?

  • Low-Level Protokoll
  • Socket on the Web
  • Das heisst, ein zusätzliches Protokoll ist notwendig für z.B. CRUD Operationen, Caching oder Routing

Erkläre den Closing Handshake

  • Schliessende Seite sendet Frame mit Befehlscode "0x8"
  • AndereSeite sendet Close Frame als Antwort (ohne zuvor eines gesendet zu haben)
  • Die Seite, welche sowohl ein Close-Frame empfangen als auch gesendet hat, trennt die TCP Verbindung

Beide Seiten können zur gleichen Zeit parallel ein Close-Frame senden und eines  kurz darauf empfangen. Kein Problem bei gleichzeitigem Verbindungsabbruch.

Wieso verwendet man AJAX?

AJAX ermöglicht, HTTP-Anfragen durchzuführen, während eine HTML-Seite angezeigt wird, und die Seite zu verändern, ohne sie komplett neu zu laden

Study