Was ist Flow-based Programming?
Flow-based Programming ist eine Methode zum Entwerfen von Computeranwendungen und -architekturen, die sich von herkömmlichen strukturierten Methoden zum Entwerfen von Anwendungen unterscheidet, bei denen Daten in einem Stream von Komponenten verarbeitet werden sollen, die nicht miteinander verbunden sind und für die Kommunikation ein externes Messagingsystem verwenden . Bei der flussbasierten Programmierung liegt der Schwerpunkt auf der Transformation von Daten unter Verwendung verschiedener Komponenten, bei denen es sich im Wesentlichen um gekapselte Module oder Funktionen handelt, die keine direkte Verbindung zu den anderen Komponenten im Programm haben. Jeder der Datenströme und andere Ereignisse wird von einem externen Nachrichtenübermittlungssystem verwaltet, das mit einigen Arten von Netzwerkprotokollen vergleichbar ist, bei denen ein Informationspaket (IP) über einen abstrakten Port an ein Modul übermittelt wird. Diese komponentenbasierte Entwurfsansicht ermöglicht es einer Anwendung, separat entwickelte Codemodule zu haben, die nur auf eine Systemnachricht antworten, eine IP verarbeiten und die IP dann wieder an das System freigeben müssen. Dieser Ansatz eignet sich für verteilte Systeme, Netzwerke sowie für internet- und webbasierte Programmarchitekturen wie E-Commerce-Server.
Einer der Grundbausteine der flussbasierten Programmierung ist die Idee eines isolierten Knotens, Prozesses oder Moduls. Dies kann als ein Teil des Programmquellcodes betrachtet werden, der keine direkten Abhängigkeiten von anderen Modulen aufweist, wodurch das Modul fast zu einem eigenständigen Teil der Anwendung wird, der bei Bedarf aufgerufen werden kann. Jede Komponente muss nicht unbedingt nacheinander mit einer anderen Komponente aufgerufen werden, sodass die Komponenten einer Anwendung in beliebiger Reihenfolge angeordnet und verwendet werden können. Auf diese Weise können mehrere eindeutige Datenflüsse vorhanden sein, während sich Informationen durch das System bewegen.
Jedes der einzelnen Module in der flussbasierten Programmierung akzeptiert Daten über eine abstrakte Schnittstelle, die als Port bezeichnet wird und ähnlich wie ein Datenport in einem Computernetzwerk funktioniert. Daten werden über einen Puffer mit begrenzter Größe an einen Port gesendet, der jedoch mehrere IPs in einen Stream umwandelt, der dem Port ständig zugeführt wird. Ein einzelner Port kann sich auf mehrere Instanzen einer einzelnen Komponente beziehen, wodurch die Struktur auf einem verteilten System oder für die parallele Verarbeitung einfach zu verwenden ist.
Die in einem Informationspaket enthaltenen Daten werden von einem externen Nachrichtensystem durch die Module geleitet. Bei der flussbasierten Programmierung ist dieses Messagingsystem von den Modulen und IPs getrennt und verwaltet den Programmfluss nur mithilfe von Puffern, die an Ports gebunden sind. Das Nachrichtensystem hat im Grunde keine Kenntnis darüber, was die Module tun oder tun, und keine wirkliche Sorge darüber, welche Daten in den IPs enthalten sind, die die Module verarbeiten.
Die Aufteilung und Modularität der einzelnen Komponenten, die flussbasierte Programmieranwendungen darstellen, eignen sich gut für Prozesse wie das Debuggen und die teamorientierte Entwicklung. Ein Großteil des Codes ist gekapselt, sodass der Quellcode ein hohes Wiederverwendbarkeitspotenzial aufweist. Dies bedeutet auch, dass ein Upgrade oder eine Skalierung einer Anwendung mit Flow-basierter Programmierung einfacher ist als mit einer stärker integrierten Anwendung, da das Messaging-System, die Module und das Port-System unabhängig voneinander geändert werden können, ohne das größere Programm zu beeinträchtigen.