Project Description
In software development we know many programming paradigms like structured programming, object-oriented programming and so on (http://en.wikipedia.org/wiki/Programming_paradigm). One of these paradigms is the flow-based programming (FBP) (http://en.wikipedia.org/wiki/Flow-based_programming) and a special variation of it is called event-based-components (EBC).You can find further information about the basic concept here: http://geekswithblogs.net/theArchitectsNapkin/archive/2011/03/19/flow-design-cheat-sheet-ndash-part-i-notation.aspx
Simply explained, this concept means that software should be designed as small function units. Data flows from unit to unit by events. If you are interested in more information you will find some “mind openers” in the following articles:
http://en.wikipedia.org/wiki/Flow-based_programming
http://en.wikipedia.org/wiki/Dataflow_programming
http://event-based.org/link-collection/index.html
http://geekswithblogs.net/theArchitectsNapkin/category/11899.aspx
http://de.wikipedia.org/wiki/Ereignisgesteuerte_Architektur
http://clean-code-advisors.com/ressourcen/flow-design-ressourcen (German)
In principle, C# supports event based programming. However, the usability is a little bit complicated. Therefore, there are some efforts to simplify the usage. Here are two possibilities:
Event-Based Component Tooling: http://ebclang.codeplex.com/
Flow Execution Engine NPantaRhei: http://geekswithblogs.net/theArchitectsNapkin/archive/2012/04/27/introduction-to-the-flow-execution-engine-npantarhei.aspx
After initial skepticism, this way of software development fascinated me but the implementation results didn’t impress me (maybe baseless). In my opinion, the success of EBC (and any other concept) depends on the usability of the implementation. This issue motivated me to develop my own implementation of tooling.
Update (2015-12-02)
This project is going to be replaced by a followup project called AD4.AppDesignerSee http://ad4appdesigner.codeplex.com for more information
Documentation
"Real Live" Applications using the AppBuilder
AppDesigner
(included in downloads)
Party DJ Player
(See: https://djp.codeplex.com/)
Update (2015-12-02): Starting with DJP version 126.00 the AD4.AppBuilder is used instead
Alarm Clock Sample
(included in downloads)