.Net Modeling Framework
The .Net Modeling Framework (NMF) is a framework to support model-driven engineering using .NET technologies. It consists of several subprojects that ease various model-driven tasks, such as generating code for model representation, or languages to support model transformation, synchronization and optimization.
The Version Control System of Codeplex is no longer used. The code for NMF can be obtained at GitHub, http://github.com/NMFCode/NMFIn the following, the subprojects of NMF are explained.
The Models project defines the
NMeta meta-metamodel and the classes that the generated code for the model representation is based upon. As such, the Models project supports the serialization and deserialization of models to XMI, as well as the resolution or creation of model URIs.
NMF Transformations consists of a framework for model transformations (NMF Transformations Core) and an internal DSL for C# (VB.NET supported as well), built on top of NMF Transformations Core, the NMF Transformations Language (
NTL). NTL provides several important abstractions known from model transformation and provides these abstractions for model transformations in C#.
NMF Transformations does not rely on the input or output models being NMeta models. Rather, any CLR classes can be used as input or output models.
NMF Expressions is a subproject responsible for the incremental and reversable evaluation of expressions. The framework takes expressions of the
System.Linq.Expressions namespace that can be obtained e.g. directly through lambda expressions in C# and evaluates them incrementally and reversable (if possible).
NMF Synchronizations is an internal DSL for model synchronizations. That is, one can define correspondence rules and the framework synchronizes models according to these rules.
NMF Synchronizations supports various kinds of change propagation, where the change propagation mode is only defined by clients. Thus, the correspondence rules can be reused for multiple modes, similar to TGGs.
The purpose of NMF EcoreInterop is to provide an interopability layer with Ecore from
EMF. This interopability is already included in the Models project, as NMeta uses a very similar model addressing scheme as EMF does, but NMF EcoreInterop furthermore provides transformations to transform an Ecore metamodel into an NMeta metamodel, e.g. to generate code for this metamodel. Thus, NMF EcoreInterop is a good candidate to transition the platform and handle models originally created with the EMF tool stack with .NET tools.
The serialization project is the technical basis for the serialization, but independent of NMeta. It provides a generic XML serializer that - unlike the XML serializer from the BCL - is able to cope with circular references. Similar, the serializer is steered through attributes.
NMF Collections is library that contains several collection classes that are missing in the .NET framework like ordered sets or observable sets. Furthermore, basic implementations for various opposite collections are given, i.e. collections where the containment in this collection is mirrored elsewhere.
The Utilities project consists of a set of cross-cutting helper functionality. This includes the conversion of strings to Pascal Case or Camel Case, as well as generic operators like Closure.
Projects no longer maintained