Flow-based programming เป็นวิธีการออกแบบแอพพลิเคชั่นคอมพิวเตอร์และสถาปัตยกรรมที่แตกต่างจากวิธีการที่มีโครงสร้างแบบดั้งเดิมของการออกแบบแอพพลิเคชั่นในข้อมูลที่มีวัตถุประสงค์เพื่อประมวลผลในสตรีมโดยส่วนประกอบที่ไม่ได้เชื่อมต่อกัน . ภายใต้การโปรแกรมแบบโฟลว์โฟกัสจะถูกวางไว้ที่การแปลงข้อมูลโดยใช้ส่วนประกอบที่แตกต่างกันซึ่งเป็นโมดูลหรือฟังก์ชั่นที่ห่อหุ้มซึ่งไม่มีการเชื่อมต่อโดยตรงกับส่วนประกอบอื่น ๆ ในโปรแกรม สตรีมข้อมูลแต่ละรายการและเหตุการณ์อื่น ๆ ได้รับการจัดการโดยระบบภายนอกของการส่งข้อความที่ไม่เหมือนกับโปรโตคอลเครือข่ายบางประเภทซึ่งแพ็กเก็ตข้อมูล (IP) จะถูกส่งไปยังโมดูลผ่านการใช้พอร์ตนามธรรม มุมมองการออกแบบแบบคอมโพเนนต์นี้อนุญาตให้แอปพลิเคชันมีโมดูลโค้ดที่พัฒนาแยกต่างหากซึ่งต้องการเพียงตอบสนองต่อข้อความระบบประมวลผล IP แล้วปล่อย IP กลับเข้าสู่ระบบ วิธีนี้มีประโยชน์ในระบบกระจายเครือข่ายและด้วยสถาปัตยกรรมโปรแกรมบนอินเทอร์เน็ตและเว็บเช่นเซิร์ฟเวอร์อีคอมเมิร์ซ
หนึ่งในหน่วยการสร้างพื้นฐานของการเขียนโปรแกรมแบบโฟลว์คือแนวคิดของโหนดกระบวนการหรือโมดูลที่แยกได้ นี่อาจเป็นส่วนหนึ่งของซอร์สโค้ดโปรแกรมที่ไม่มีการพึ่งพาโดยตรงกับโมดูลอื่นใด ๆ เกือบทำให้โมดูลนั้นเป็นชิ้นส่วนแบบสแตนด์อะโลนของแอปพลิเคชันที่สามารถเรียกใช้ได้ทุกเมื่อที่ต้องการ แต่ละองค์ประกอบไม่มีความเชื่อมั่นในการถูกเรียกตามลำดับพร้อมกับส่วนประกอบอื่นดังนั้นส่วนประกอบของแอปพลิเคชันสามารถจัดเรียงและใช้ในลำดับใด ๆ ช่วยให้มีหลายกระแสข้อมูลที่ไม่ซ้ำกันในขณะที่ข้อมูลเคลื่อนผ่านระบบ
แต่ละโมดูลของแต่ละโปรแกรมในการเขียนโปรแกรมตามกระแสรับข้อมูลผ่านอินเทอร์เฟซนามธรรมที่รู้จักกันในชื่อพอร์ตซึ่งทำงานเหมือนกับพอร์ตข้อมูลภายในเครือข่ายคอมพิวเตอร์ ข้อมูลจะถูกส่งไปยังพอร์ตผ่านบัฟเฟอร์ที่มีขนาด จำกัด แต่เปลี่ยน IP หลาย ๆ ตัวให้เป็นสตรีมที่ป้อนไปยังพอร์ตอย่างต่อเนื่อง พอร์ตเดียวสามารถเกี่ยวข้องกับหลายอินสแตนซ์ขององค์ประกอบเดียวทำให้โครงสร้างใช้งานง่ายบนระบบแบบกระจายหรือสำหรับการประมวลผลแบบขนาน
ข้อมูลที่อยู่ในแพ็คเก็ตข้อมูลจะถูกจัดทำผ่านโมดูลโดยระบบการส่งข้อความภายนอก ในการเขียนโปรแกรมแบบโฟลว์ระบบการส่งข้อความนี้จะแยกจากโมดูลและ IP และจัดการเฉพาะการไหลของโปรแกรมผ่านการใช้บัฟเฟอร์ที่ถูกผูกไว้กับพอร์ต ระบบการส่งข้อความโดยทั่วไปไม่มีความรู้ในสิ่งที่โมดูลกำลังทำหรือกำลังดำเนินการอยู่และไม่ต้องกังวลอย่างแท้จริงเกี่ยวกับข้อมูลที่มีอยู่ใน IP ที่โมดูลกำลังประมวลผล
หน่วยงานและโมดูลของแต่ละองค์ประกอบที่ประกอบเป็นแอพพลิเคชั่นการเขียนโปรแกรมแบบโฟลว์สามารถให้กระบวนการที่ดีเช่นการดีบักและการพัฒนาเชิงทีม รหัสส่วนใหญ่ถูกห่อหุ้มดังนั้นซอร์สโค้ดจึงมีความสามารถในการนำกลับมาใช้ใหม่ได้สูง นอกจากนี้ยังหมายความว่าการอัปเกรดหรือปรับขนาดแอปพลิเคชันที่ใช้การเขียนโปรแกรมแบบโฟลว์นั้นง่ายกว่าแอพพลิเคชั่นที่รวมเข้าด้วยกันมากขึ้นเพราะระบบการส่งข้อความโมดูลและระบบพอร์ตแต่ละตัวสามารถเปลี่ยนแปลงได้อย่างอิสระ


