🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
What is MDriven Server?
This page was created by Stephanie on 2025-04-17. Last edited by Wikiadmin on 2026-07-29.

MDriven Server is the backend runtime for developers and administrators who want to receive an MDriven Designer model, evolve the database that stores its data, and make that data available to MDriven applications and other clients.

What MDriven Server does

MDriven Server receives model updates from MDriven Designer. When it receives a model, it creates or evolves the database schema used to store the model's data.

For example, when you add a Customer class and its attributes in MDriven Designer, then deploy the updated model, MDriven Server calculates and applies the database changes needed to store customers. When you later add an association from Customer to Order, the next model update evolves the database for that relationship.

MDriven Server is responsible for backend concerns including:

  • Object-relational mapping (OR mapping) between model objects and database storage.
  • Database evolution when the deployed model changes.
  • Server-side jobs.
  • Multi-user data access and synchronization.
  • Logging and server administration through its web interface.

It is the backend component in a local server environment; MDriven Turnkey is the frontend component responsible for the user interface and REST services. See Documentation:LocalServers for the local MDrivenServerCore and MDrivenTurnkeyServerCore pairing.

How the model-to-data workflow works

Use this workflow when developing an application backed by MDriven Server:

  1. Create or update the UML model in MDriven Designer. Define classes, attributes, associations, business rules, and other model behavior.
  2. Configure MDriven Designer to use MDriven Server in the Prototyper settings.
  3. Select Start System. MDriven Designer sends the model to MDriven Server.
  4. MDriven Server creates or evolves the database schema for the deployed model.
  5. Run a client application against the server. This can be an application built with the MDriven Framework, or a Turnkey application configured to use the server.

For an on-premise Turnkey setup, MDriven Designer is configured with the MDriven Server address, a server user and password, a slot such as A0, and Automated Deploy when model uploads should deploy automatically. See Documentation:Set up MDriven Turnkey on premise for the complete configuration procedure.

Accessing model data

MDriven Server exposes data through more than one interface. Choose the interface based on the type of client you are building.

Interface Use it when What it provides
MDriven Framework PersistenceMapper API You are building an application with the MDriven Framework. A multi-user data-access API with optimistic locking, client synchronization, CRUD operations in transactions, and OCL queries executed as SQL in the database.
JSON access You are building a client that is not MDriven-aware. Access to model data as JSON objects for CRUD operations on the data in the model.

CRUD means create, read, update, and delete. For example, a non-MDriven client can use the JSON-based access path to create a customer, retrieve its current values, update an address, or delete the record. An MDriven Framework application can instead use the PersistenceMapper API and benefit from transactional CRUD and optimistic locking when multiple users edit data.

Read Documentation:MDriven Server User/Web interface for the MDriven Server interfaces and web interface.

Database behavior

MDriven Server uses a database to persist the data defined by the deployed model. The default database described for MDriven Server is SQL Server Compact Edition installed with the server. You can change the data database by supplying a connection string; the documented example is SQL Server in Azure.

The database schema follows the deployed model. Database evolution is therefore part of deploying a changed model, rather than a separate manual schema-design step.

When you update server packages in an on-premise installation, use the documented Append files option. Do not use an option that deletes files, because deletion can remove server settings and the database containing deployed models and data. See Documentation:Set up MDriven Turnkey on premise.

MDriven Server and Turnkey

MDriven Server and Turnkey have separate responsibilities:

Component Responsibility
MDriven Server Backend server: OR mapping, SQL database evolution, server-side jobs, model persistence, and data access.
MDriven Turnkey Frontend server: user interface and REST services.

A Turnkey application needs connection information for MDriven Server. In an on-premise setup, this information is held in TurnkeySettings.xml in the Turnkey application's App_Data folder. The file contains the MDriven Server user credentials needed by Turnkey. Follow Documentation:Set up MDriven Turnkey on premise rather than editing production settings without the documented setup process.

Local development

You can run the backend and frontend locally through the LocalServers concept. LocalServers downloads the MDrivenServerCore and MDrivenTurnkeyServerCore components and creates a named local server pair with separate MDrServer and MDrTurnkey folders.

A local server pair is useful when you want to test the full development loop on your computer:

  1. Create a local server pair.
  2. Open the model in MDriven Designer.
  3. Select MDriven Server in the Prototyper settings.
  4. Start the system to send the model and evolve its database.
  5. Run the associated Turnkey frontend against that server pair.

For folder locations, downloads, and recovery after the local-server folder move, see Documentation:LocalServers. For local installation guidance, see HowTos:Local Installation.

Administration and troubleshooting

MDriven Server is an IIS application. Use its main UI and log when you need to check server status or investigate an error. If an error is shown but no logs are available, check the application-pool user settings.

Use the following documentation for operational tasks:

See also