Current Project Status

The current latest release of MMF is version, and includes the following features...

  • A base class from which clients can create their own modules
  • Robust mechanism to create module graphs (workflows) and execute them
  • Serialization and deserialization of module graphs to and from XML
  • Ability to serialize and deserialize input data values attached to modules embedded in a module graph (e.g for configuration data)
  • Ability to copy, validate, and cancel processing of module graphs
  • Integrated logging
  • Capturing of metrics / instrumentation
  • Complete unit test coverage

Future Enhancements

  • A GUI application which allows module graphs to be created visually, with drag and drop operations. This will allow the full power and flexibility of MMF to be realized.
  • Remove the <AssemblyPath> tag from the XML document representing module graphs, and instead register all module assemblies in the .NET global assembly cache.
  • Create a method on the ModuleGraph class to allow other module graphs to be added to the current module graph. This would allow small fragments of modules graphs which are regularly used to be 'templated' and easily reused.
  • Support slot data types deriving from System.IO.Stream. I.e. if several modules are linked by data types deriving from System.IO.Stream, the ModuleGraphProcessor should be aware of this and not expect processing of parent modules to complete until dependent child modules are finished processing.
  • Wrap the ModuleGraphProcessor CancellationTokenSource with in an interface (to allow unit testing of the Dispose() method).
  • Add support for more value types, arrays, generics to the XmlDataSerializer class.
  • Consider changing fields 'inputs' and 'outputs' in the ModuleBase class from Lists to HashSets.
  • ModuleGraphRecurser class should probably be renamed to ModuleGraphTraverser (and associated member names and comments corrected/updated... e.g. the in ModuleGraphProcessor class).