MDriven Framework is a .net Framework that allows you to model your requirements in UML – and get an exact match of this as a domain layer in c# code.
The model and MDriven Framework also helps you to bind your domain layer data to UI technologies as WPF, WindowsForms, ASP.NET, ASP MVC, Silverlight, Windows Store apps, Windows Universal, Windows Phone – or in short pretty much anything you can think of.
The model is also used to automatically maintain and evolve a database schema for a primarily SQLServer or MySQL – but it is not limited to this – a simple PeristenceMapper api can be fulfilled and make MDriven maintain schema for Orcale, SQLLite, Interbase and a bunch of other brands for relational databases. The code written with MDriven Framework is db-agnostic and the same code will work on different persistence backends – making it ideal to withstand the test of time – and making it easy to mock persistence backend for testing purposes.
MDriven Framework follows you into runtime and handles things as:
- efficient lazy fetch,
- tracking of change state,
- undo and redo of domain objects,
- Linq to SQL translation,
- OCL interpretation OCL to SQL translation,
- Versioning of object contents,
- report production with OpenDocuments ,
- tracking state machines where your business rules may reside,
- in memory transactions,
- Association consistency (set one end will automatically reflect in other end),
- sending diff-grams for changes with WFC,
- enabling you to separate your client logic from persistence logic into different tiers with WCF communication in between,
- object level client to client efficient synchronization,
- Asynchronous data fetch for always responsive UI,
- Automatically maintained Derivations of Associations and attributes
- Automatic tracking of subscriptions in the subscription publisher pattern that is available on all domain objects from your model
- Ability to save to XML
- Ability to serialize a whole object set for de-serialization on a later date – keeping full change state
- Full support for model class level inheritance
- Full support for model class level association classes
- Ability to design and use declarative ViewModels defined in the model
- Ability to design and use declarative actions (buttons and menus) defined in the model
- Ability to design and use Constraints in the model to enforce business rules
- Optimistic locking for persistence
You can use MDriven Framework with Visual Studio in design time and you can use it in Mono – including Unity, Portable including Xamarin, Windows Store, Silverlight5 and .net 4.0+ frameworks in runtime
The MDriven Framework has been around since 2007 and it is a replacement for the similar product ECO For VisualStudio and for the discontinued product Bold for Delphi (1995-2003, acquired by Borland)
Taking all the design time functions of MDriven Framework – remove the ability to generate code in Visual studio and remove Visual Studio – then you have the MDriven Designer. The MDriven Designer is a standalone .net Application that can be used to model all things used by MDriven Framework (Classes, State machines, ViewModels, Actions).
All the logic in MDriven Designer is incorporated in the Visual Studio plugin that makes up the MDriven Framework design time support.
MDriven Designer can be downloaded from here.
Taking all the abilities of the MDriven Framework’s remote persistence mechanism that allows for automatic db schema maintenance and evolve – accessed via WCF. Then we get the MDriven Server.
MDriven Server is an IIS hosted web-application. The UI of MDriven Server is intended for developers/administrators of an MDriven System.
The MDriven Server can receive models from MDriven Designer or MDriven Framework design time – it will maintain a SQLCompact, SQLServer or MySQL database and implement all the necessary logic for client to client synchronization. The MDriven Server also implements an ability to execute periodic declarative jobs server side. These jobs are fully defined on the model level in MDriven Designer or framework.
The MDriven Turnkey product is not a finished system (vertical) – and it is not a framework (horizontal). The MDriven Turnkey product is semi-vertical.
MDriven Turnkey is an IIS Model Driven application that make use of all of the possibilities in MDriven Framework, Designer and Server. It addresses the security concerns that is normally brought on by traditional client server development by filtering data (on attribute or byte level) server side to only expose information as described in declarative ViewModels.
It solves common application needs as authentication (ASP.NET Identity and OAuth with federated login with major providers – also plain OpenID for AzureAD and others).
The WEB-UI’s provided by MDriven Turnkey make use of standard Bootstrap rendering producing clean and readable html5. You choose on screen by screen basis to use MVC5/Razor or AngularJS for your displays.
You choose on a screen by screen basis to override the UI generated from your model description or not.
You can already in the modeled ViewModels describe style to be used when rendering – either static of data dependent styles can be used.
You can easily publish REST services in your Turnkey app and design their information content just as you design UI’s or reports – with declarative view models.
You can easily call external REST or SOAP – and you can translate hierarchical response data to objects if needed.
Product choice help
Anyone can use the MDriven Designer to model requirements and prototype detailed information systems. You will not grow out of this product. Even if you use nothing else this product helps you to think about large complex interlocked requirements for any domain. MDriven Designer is free for use for models up to 50 information classes.
With MDriven Turnkey you can be in the cloud with your information system later today. Your system will follow your model without deviation. Found issues are corrected in the model – model is uploaded to the supporting MDriven Server – and system is re-rendered and refreshed by a simple F5 in the browser.
MDriven Framework offers more degrees of freedom – and as such is a harder product to master. It is recommended that you start with MDriven Designer, then MDriven Turnkey.
MDriven Framework is the best choice if you have scenarios where Turnkey is not right like building a standalone app in a device like a Hololens, Android phone, IOs or some other reason.
MDriven Framework is is the best choice if you want to write c# code towards your domain model – the c# can replace OCL implementations of methods and derivations. Such c# domain layer code may integrate with anything you can reach from c#. A complete system produced with MDriven Framework can run standalone – but the domain layer (including c# code you have written) can be submitted to MDriven Turnkey to reach the product advantages available there (security model, AngularJS etc).
Use MDriven Server for your MDriven Framework projects if you want a cloud based server application that talk WCF (over https amongst other) and manage your model and database with zero hassle. The MDriven Server is included as a required component in MDriven Turnkey. It is optional in MDriven Framework. MDriven Server is included in active license for Turnkey or Framework.
Synonyms and name changes
During the life cycle of our software toolset, strategy and scope have evolved. To better reflect our current vision, the product line now has consistent naming and branding: MDriven Framework, MDriven Designer, MDriven Server, MDriven Turnkey. This was not always the case and you may find old names in articles. To mitigate confusion we supply this list of old names:
MDriven Designer: AppComplete, Gaffr
MDriven Server: BoringPredictable Server, BorPred Server
MDriven Framework: ECO
Other names you may read:
WECPOF: This is what we call the prototyping motor. The motor is part of MDriven Designer and can be used to quickly execute the model including view model UI’s and actions. The WECPOF engine got its name from mixing ECO with WPF. Since then ECO has changed name to MDriven Framework – and the WECPOF motor is used for WPF, MVC and AngularJS. The name is still used to denote the prototyping ability and the runtime assembly MDriven Framework users can use to get the Prototyping engine inside their own applications (WECPOFLogic.dll).