Computer Science Experimentation

Sunday, March 18, 2012

Real-time Computational Engine with F#

Real-time systems require computational engines to process tasks. These engines usually are connected to data servers.

This paper presents an engine with the following properties:
  • Agents-based computation (components communicate to each other through messages)
  • Agents are state-machines
  • Agents communicate in an asynchronous mode
  • Waiting agents don’t block computer treads (asynchronous programming)
  • Engines live in an interactive environment
  • Engines of agents are distributed allowing messages from remote locations
The advantages of this implementation are:
  • Agents can be created, modified and ended without requiring restarting the process.
  • Uses F# interactive environment (Read, Evaluate, Print Loop (REPL). This allows interaction and modification of agents without stopping the process.
  • Remote clients can send messages to the engine’s agents including creating and ending agents.
  • Remote clients can use several communication protocols, available in WCF, to communicate with the engine including pipes, TCP and HTTP.
  • Asynchronous programming provides great performance and scalability.
Check the the full paper at skydrive.