Web-1

Uit Inf2019
Versie door Eelco (overleg | bijdragen) op 7 nov 2017 om 22:51 (1 versie geïmporteerd)
Naar navigatie springen Naar zoeken springen
Web1
Netwerken

Zie ook Regels en richtlijnen
Zie ook Artikelen bewerken

Web1: webservers

In deze module behandelen we een aantal principes van het web, in het bijzonder aan de kant van de webserver.

Het uitgangspunt van deze module is: het web, dat maak je zelf. Hoe kun je je eigen website maken, hoe kun je je eigen webserver inrichten?

Voor het experimenteren met een eenvoudige webserver gebruiken we NodeRed.

  • Web1/Client-server Achtergrondinformatie/theorie
    • het HTTP-protocol; client-server interactie; http-request, response;
    • alternatieven voor client-server interactie: publish/subscribe (MQTT); bidirectionele verbindingen (websockets)
    • URL; opbouw van URL: protocol; domeinnaam; padnaam; parameters; (inhoud/body)
    • wat zie je hiervan in de browser?
  • Web1/NodeRed
    • installeren
    • configuren
    • hoe werkt een flow?
    • eerste flow (inject/debug)
    • exporteren en importeren van flows
  • /Statische website
    • http-flow
    • NodeRed: configureren van statische pagina's
    • gebruik van CSS en Javascript
  • /Templates
    • website met meerdere pagina's
    • template-concept
    • templates voor een uniforme layout
  • /HTML formulieren
    • HTML formulier
    • HTTP-POST request; formulier-data
    • HTTP-POST flow
    • templates en data
  • /Server state
    • NodeRed: globale variabele
    • uitbreiden van form-flow met extra pagina, met naam van de gebruiker
    • (voorbeeld van gebruikers-voorkeuren)
  • /Gebruikers en sessies - en cookies
    • wat is de levensduur van een cookie? "persistent" client-state
    • /Headers
  • /Server database
  • /Web services
    • vb: weerdienst
  • /AJAX
    • client-side rendering
    • asynchrone acties in JavaScript
  • /Websockets
    • websockets voor "push" vanuit de server
    • en voor client-server interactie met lage overhead, lage latency
  • /Authenticatie en autorisatie
  • /REST

Concepten

Voorkennis

  • Web0, Web1: html, css, javascript
  • werken met Cloud9 (incl. eenvoudig gebruik van Linux shell)
    • wat is een absolute padnaam?
    • hoe achterhaal je het absolute pad van een bestand?
    • hoe maak je een bestand aan (met de Cloud9 editor)?
    • hoe verander je de naam van een bestand?
  • JSON - wordt o.a. gebruikt in de Mustache template-voorbeelden.

Opmerkingen

  • hoe vertaal je e.e.a. naar een normale webserver; bijvoorbeeld (het eenvoudigst), een nodejs-server?
    • geven we die voorbeelden erbij?
    • het NodeRed-model is in zekere zin wel handig, zeker voor al die operaties die onbepaalde tijd vragen: je wilt niet dat die de server ophouden.
      • hoe is e.e.a. opgelost in NodeRed? Hoe vindt de scheduling plaats van de verschillende operaties? (Het message-model geeft je natuurlijk wel een grote mate van vrijheid, in de scheduling.)
  • een van de afwegingen bij een website/webapp is: welk deel van de berekening/rendering doe je aan de kant van de server, en welk deel aan de kant van de client?
    • om dit te begrijpen moeten we ook AJAX behandeld hebben.
  • welke algemene informatica-concepten spelen hierbij een rol? Kunnen we bepaalde concepten generaliseren?
    • o.a. "asynchroon"; blokkerende operaties; gedistribueerde systemen (en de problemen die daarbij een rol spelen).
    • veiligheid: hoe kan ik daar verder aandacht aan besteden?
  • er is een (groot) verschil in het gebruik van databases voor IoT-systemen, en voor klassieke web-toepassingen. In het laatste geval spelen "updates" een veel grotere rol; in het geval van het IoT niet of veel minder: de sensor-gegevens worden altijd als nieuwe data toegevoegd, er worden geen oude sensordata verwijderd. (Dat is ook weer een reden om zuinig te zijn met sensordata: voordat je het weet heb je een erg grote database...)
  • welke figuren kunnen het begrip ondersteunen? (Eventueel: animaties, zoals met powerpoint.)
  • ik heb de indruk dat Cloud9 het gebruik van een website alleen mogelijk maakt voor de eigenaar van de website: je moet eerst inloggen...?
    • dat is voor ons doel nog wel geschikt; maar je kunt er geen demonstraties voor anderen mee geven...

Toetsvragen

I.h.b.: diagnostische vragen.

Webserver in NodeJS