Web-1
Naar navigatie springen
Naar zoeken springen
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.