Wat is flow-based programmeren?
Flow-gebaseerde programmering is een methode voor het ontwerpen van computertoepassingen en architecturen die anders is dan traditionele gestructureerde methoden voor het ontwerpen van toepassingen, omdat gegevens bedoeld zijn om in een stroom te worden verwerkt door componenten die niet met elkaar zijn verbonden en een extern berichtensysteem gebruiken om te communiceren . Bij flow-based programmeren wordt de nadruk gelegd op het transformeren van gegevens met behulp van verschillende componenten, die in wezen ingekapselde modules of functies zijn die geen directe verbinding hebben met de andere componenten in het programma. Elk van de datastromen en andere gebeurtenissen wordt beheerd door een extern systeem voor het doorgeven van berichten, wat niet anders is dan sommige soorten netwerkprotocollen, waarin een informatiepakket (IP) wordt afgeleverd aan een module door het gebruik van een abstracte poort. In deze op componenten gebaseerde ontwerpweergave kan een toepassing afzonderlijk ontwikkelde codemodules hebben die alleen hoeven te reageren op een systeembericht, een IP verwerken en vervolgens de IP weer in het systeem vrijgeven. Deze benadering is nuttig op gedistribueerde systemen, netwerken en met internet- en webgebaseerde programma-architecturen zoals e-commerce servers.
Een van de fundamentele bouwstenen van flow-based programmeren is het idee van een geïsoleerde node, proces of module. Dit kan worden gezien als een stuk programmabroncode dat geen directe afhankelijkheden heeft van andere modules, waardoor de module bijna een zelfstandig onderdeel van de applicatie wordt die kan worden opgeroepen wanneer het nodig is. Elke component is niet afhankelijk van het opeenvolgend oproepen van een andere component, dus de componenten van een applicatie kunnen in elke volgorde worden gerangschikt en gebruikt, waardoor meerdere unieke gegevensstromen kunnen bestaan naarmate informatie door het systeem beweegt.
Elk van de afzonderlijke modules in flow-based programmeren accepteert gegevens via een abstracte interface die bekend staat als een poort, die werkt als een gegevenspoort in een computernetwerk. Gegevens worden naar een poort verzonden via een buffer met een beperkte grootte maar die meerdere IP's omzet in een stroom die constant naar de poort wordt gevoerd. Een enkele poort kan betrekking hebben op meerdere instanties van een enkele component, waardoor de structuur gemakkelijk te gebruiken is op een gedistribueerd systeem of voor parallelle verwerking.
De gegevens in een informatiepakket worden door de modules gemanoeuvreerd door een extern berichtensysteem. Bij flow-based programmeren staat dit berichtensysteem los van de modules en IP's en beheert het alleen de programmastroom door het gebruik van buffers die aan poorten zijn gebonden. Het berichtensysteem heeft in principe geen kennis van wat de modules doen of doen en maakt zich geen zorgen over welke gegevens zich bevinden in de IP's die de modules verwerken.
De divisies en modulariteit van elk van de componenten die stroomgebaseerde programmeertoepassingen vormen, lenen zich goed voor processen zoals debuggen en teamgeoriënteerde ontwikkeling. Veel van de code is ingekapseld, dus broncode heeft een hoog potentieel voor herbruikbaarheid. Dit betekent ook dat het upgraden of schalen van een toepassing die gebruikmaakt van flow-gebaseerde programmering eenvoudiger kan zijn dan met een meer geïntegreerde toepassing, omdat het berichtensysteem, de modules en het poortsysteem elk onafhankelijk kunnen worden gewijzigd zonder het grotere programma te beïnvloeden.