.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/NMF

In the following, the subprojects of NMF are explained.

Models

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.

Transformations

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.

Expressions

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).

Synchronizations

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.

EcoreInterop

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.

Serialization

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.

Collections

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.

Utilities

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

Last edited Oct 16, 2015 at 8:00 AM by georghinkel, version 12

Comments

No comments yet.