in

Event Driven Programming is hip en trending

Event Driven Programming, het is hip, het is trending en het is iets waar je misschien geen flauw idee bij hebt. Wat is het, hoe werkt het en vooral wat kun je er mee. Voor wat pas je het toe? Hoe ziet het eruit, met deze korte toelichting verduidelijken we het fenomeen. Je zult zien wat je er mee kan, hoe het werkt en vervolgens kun je er zelf mee aan de slag.

Event Driven Programming

De basis van event driven programming is gebaseerd op daadwerkelijke menselijke interactie van actie en gevolg. Zoals op een actie een gevolg volgt, volgt op een functie actie een gebeurtenis (event). Deze functies of methodes, zijn de ‘handlers’ omdat ze respons geven aan een reactie van een bepaalde gebeurtenis.

Maar een eerlijke vraag om te stellen op dit punt is: wat is een evenement? Ondanks hoe dubbelzinnig deze vraag is, denk ik dat hij in aanmerking komt als een criterium voor het beoordelen van ons begrip van door gebeurtenissen gestuurde programmering.

EDP (event driven programming) is taal agnostisch. Dit houd in dat we het kunnen toepassen op elke taal. Het voorbeeld wat we zullen gebruiken is JavaScript, dit omdat deze taal erg populair is bij programmeurs.

Wat zijn gebeurtenissen?

Gebeurtenissen zijn acties. Dit zijn werkwoorden – elke gebeurtenis die we in ons programma kunnen identificeren. Hoewel we ons niet bezighouden met de meeste van deze evenementen, zullen we meestal handlers maken voor degenen die voor ons belangrijk zijn. Natuurlijk zoals in de realiteit, puur omdat we niet reageren op een gebeurtenis maakt dit de gebeurtenis niet perse gebeurtenis loos.

Voorbeeld van gebeurtenissen

  • Gebruikers interactie: klikken met de muis, toetsen en dergelijke
  • Programma’s: van uit het programma of andere programma’s welke gebruik maken van berichten
  • Sensorische connecties: Netwerk connecties
  • Hardware connecties: USB

Waarom zouden we waarden moeten hechten aan EDP?

Enkele voordelen zijn:

  • Het bouwt voort op Object gebaseerd programmeren
  • Het zorgt vaak voor een beter software ontwerp
  • Het verbeterd het bouwen van gebeurtenis gerichte applicaties zoals applicaties welke veranderingen constateren in de applicaties status
  • Verbetering van de interactie en flexibiliteit treed op
  • Processen verlopen sneller, data kan immers via verschillende processors en handlers lopen
  • Het vergroot de mogelijkheden tot opschalen van reeds bestaande infrastructuur.

AngularJS en Flux/ReactJS

AngularJS: de implementatie van tweerichtingsverbinding zorgt voor gegevenssynchronisatie tussen de weergave en de gegevensopslag via API-aanroepen. Controllers spelen een sleutelrol in het event driven ontwerp van AngularJS (ook voor Ember and Backbone).

Flux/ReactJS: Flux bouwt voort op het principe van “unidirectionele stroom” door de status bij te werken op basis van gegevens van de server en spawning-gebeurtenissen in dispatchers. Ja, het is een model, maar een gebeurtenis gestuurd model.

Ontwerp patronen

Ontwerppatronen zijn slechts een manier om code te schrijven en ze zijn rijk. Hieronder staan de basisimplementaties van het Observer- en Pub / Sub-patroon om ons op weg te helpen met EDP.

Waarnemerspatroon: subscription model dat objecten een subscription op gebeurtenissen biedt. Deze objecten worden op de hoogte gebracht wanneer zich een gebeurtenis voordoet, en ze handelen dienovereenkomstig. De meeste front-end frameworks en libraries, zoals AngularJS, zijn hierop gebouwd.

Publish/Subscribe

Publish/Subscribe: vergelijkbaar met waarnemerspatroon. Het verschil is dat objecten zich abonneren (subscribe) op onderwerpen. Een object krijgt alleen een melding wanneer een gebeurtenis plaatsvindt binnen een onderwerp waarop het is geabonneerd (subscribed). Waarom zou je een melding willen ontvangen over iets wat je niet nodig heb?

Pub / Sub wordt meestal aan de serverzijde gebruikt.

Terminologie welke je moet begrijpen:

Publisher, Observable, Subject, Dispatcher: The gebeurtenis aangever. Hier komt de gebeurtenis vandaan.

Subscriber, Observer, Object, Listener: De handlers van de gebeurtenis. Methodes welke ontworpen zijn om te reageren op een gebeurtenis.

Register, Subscribe: Methode voor het toevoegen van een nieuwe observatie tot de obesrvatie lijst.

Unregister, Unsubscribe: Methode voor het verwijderen van een observatie van de observatielijst.

Notify, Publish, Emit: Methode voor het verzenden van een bericht aan de subscriber.

Messages, Payload: Data verzonden tussen de ‘publishers en subscribers’.

Channel, Topic: Pub/Sub routes subscribers in de lijst voor data. Er kunnen meerdere kanalen zijn.

Interface: Blauwdruk van gebeurtenissen waar ‘handlers’ zich verplicht aan comformeren.

Dit zijn veel voorkomende termen in EDP. Sommige hebben meerdere namen, dus het is goed om ze te begrijpen voor verschillende gebruikssituaties.

Push en Pull Modellen

Push: De uitgever (publisher) stuurt alle gegevens naar abonnees (subscribers). Dit kan moeilijk zijn omdat je veel aannames moet doen over abonnees (subscribers), die mogelijk onjuist zijn.

Pull: Hier stuurt de uitgever (publisher) minimale data aan de abonnees (subscribers). De abonees (subscribers) stuurt een terugkoppeling voor een eventueel nodige update en de uitgever (publisher) geeft deze data aan de abonee (subsriber). De moeilijkheid hier is latentie. Je stuurt meerdere keren een terugkoppeling.

Aanverwante concepten

Reactive Programming (RX): en.wikipedia.org/wiki/Reactive_programming
Functional Programming (FP): “function-level”-programmeertaal ontworpen door John Backus.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd.