< Terug naar vorige pagina

Project

Multi-tier Functioneel Reactief Programmeren voor het Web

Webapplicaties zijn inherent gedistribueerd en niet alleen omdat de client- en serveronderdelen verbonden zijn over een netwerk.
Webapplicaties zijn ook geschreven in meerdere programmeertalen en als meerdere samenwerkende programma's: het client- en serverprogramma.
Om de complexiteit van het web te verminderen stelt men multitierprogrammeertalen voor.
In multitierprogrammeertalen geeft de taal en zijn gereedschappen extra ondersteuning om webapplicaties te creëren zodat deze geschreven kunnen worden als één geheel in één taal.

Webapplicaties zijn ook inherent asynchroon.
Aan de kant van de server moeten webapplicaties constant verzoeken van de client verwerken en in de browser moeten ze constant reageren op invoer van de gebruiker.
Een techniek dat hiervoor kan toegepast worden om zo'n programma's makkelijker te maken is functioneel reactief programmeren (FRP).
Het is een functioneel programmeermodel dat een interactief programma modelleert als composities tussen twee primitieven: behavior en event.

In dit onderzoek passen we beide technieken toe op webapplicaties, we maken vooruitgang in het toepassen van multitiertaaltechnieken op bestaande talen en op functioneel reactief programmeren.
We tonen aan dat het geheel van multitier functioneel reactief programmeren groter is dan de som van de delen.

Multitier Functioneel Reactief Programmeren
Multitier FRP is onze unificatie van multitier programmeren en functioneel reactief programmeren.

Het pakt twee problemen aan in ontwikkeling, (1) de inherent gedistribueerde en (2) de asynchrone aard van webapplicaties.
Met ons design en onze implementatie is het mogelijk om een volledige webapplicatie (zowel client als server) te schrijven in een enkele taal als een compositie tussen events en behaviors.
Communicatie tussen de client- en serverdelen wordt gedaan via speciale communicatie primitieven, een abstractie met een lage kost die toch nuttige eigenschappen heeft zoals atomische propagatie over het netwerk.
Via deze primitieven is compatibiliteit tussen client en server gegarandeerd op taalniveau.

We stellen Gavial voor, een bruikbare en realistische implementatie van multitier FRP in Scala als een bibliotheek.
Om bruikbaar te zijn bouwt het verder op andere technieken, verschillende die we zelf uitwerken en bespreken doorheen dit proefschrift:

 

FRP DOM bibliotheken zijn de sleutel tot het maken van een praktisch bruikbaar FRP web-raamwerk.
Maar subtiele ontwerpbeslissingen hebben een grote impact en verschillende problemen hebben niet noodzakelijk een ideale oplossing.

Wat doen we met het toegangspunt van het programma?
Hoe behandelen we recursieve definities in HTML?
De gebruikersomgeving is vaak recursief uitgedrukt, bijvoorbeeld, een todo-lijst dat rijen toevoegt wanneer er op een ``toevoegen'' knop wordt gedrukt.
Hoe koppelen we FRP aan het ``document-object-model'' (DOM) van de browser?
De browser is zowel een bron als opslag van data.

We bekijken al deze vragen en implementeren een pragmatische FRP DOM bibliotheek die gebruikt wordt in Gavial.

Scalagna is ons multitier-als-een-bibliotheek-project voor Scala.
Er zijn verschillende potentiële problemen met multitiertaalontwikkeling.
Sommige talen starten van niets en hebben moeite om alle bibliotheken op te bouwen die volwassen talen al aanbieden.
Andere starten van een bestaande taal maar hebben een grote implementatiekost bij bijvoorbeeld het compileren naar JavaScript.

Wij stellen Scalagna voor, een eerste stap richting multitier programmeren voor Scala.
Het maakt gebruik van Scala.JS, een volwassen Scala-naar-JavaScript-compiler met zijn eigen waaier aan bibliotheken.

Incrementele behaviors zijn een toegevoegd FRP primitief.
Incrementeel opbouwende gegevensstructuren zijn vaak voorkomend in webapplicaties.
Iemand die een programma gebruikt verandert immers telkens de toestand van de applicatie bij elke vorm van invoer.

In een FRP worden deze toestanden gemodelleerd met behaviors, maar traditionele FRP stelt geen informatie bloot over waarom of wanneer deze behaviors veranderen.
Deze informatie wordt cruciaal in multitier FRP.
Incrementele data structuren kunnen hier groot worden (bv., door meerdere interacties van gebruikers).
Zulke grote data structuren moeten efficiënt behandeld worden, mogelijk wat betreft berekeningen maar vooral wat betreft bandbreedte.
Om deze informatie beschikbaar te maken in multitier FRP stellen we incrementele behaviors voor.
Dit primitief beschrijft waarom en wanneer het van waarde verandert zodat het efficiënt over het netwerk kan worden verstuurd.

 

Datum:2 sep 2014 →  31 dec 2019
Trefwoorden:Functional, Reactive, programming, Multi-tier
Disciplines:Toegepaste wiskunde, Computerarchitectuur en -netwerken, Distributed computing, Informatiewetenschappen, Informatiesystemen, Programmeertalen, Scientific computing, Theoretische informatica, Visual computing, Andere informatie- en computerwetenschappen
Project type:PhD project