synopse / mORMot2

OpenSource RESTful ORM/SOA/MVC Framework for Delphi and FreePascal
https://synopse.info
Other
485 stars 122 forks source link
delphi freepascal mvc-framework orm-framework pascal soa

Synopse mORMot 2 Framework

An Open Source Client-Server ORM/SOA/MVC framework in modern Object Pascal

Happy mORMot

(c) 2008-2024 Synopse Informatique - Arnaud Bouchez

https://synopse.info - http://mORMot.net

Thanks to all Contributors!

NOTICE: This version 2 replaces mORMot 1.18 which is now in maintainance-only mode. Consider using mORMot 2 for any new or maintainable project.

Resources

You can find more about mORMot 2 in:

If you find it worth using, please consider sponsoring mORMot 2 dev if you can - and even better through sharing your own commits. :-)

Presentation

mORMot What?

Synopse mORMot 2 is an Open Source Client-Server ORM SOA MVC framework for Delphi 7 up to Delphi 12 Athenes and FPC 3.2/trunk, targeting Windows/Linux/BSD/MacOS for servers, and any platform for clients (including mobile or AJAX).

mORMot map

The main features of mORMot are therefore:

Emphasizing speed and versatility, mORMot leverages the advantages of modern object pascal native code and easy-to-deploy solutions, reducing deployment cost and increasing ROI. It can be used:

Sub-Folders

The mORMOt 2 repository content is organized into the following sub-folders:

Feel free to explore the source, and the inlined documentation.

MPL/GPL/LGPL Three-License

The framework is licensed under a disjunctive three-license giving you the choice of one of the three following sets of free software/open source licensing terms:

This allows the use of our code in as wide a variety of software projects as possible, while still maintaining copy-left on code we wrote. See the full licensing terms.

Quick Start

Compiler targets

The framework source code:

Note that FPC 3.2.2 has a regression with variant late binding - use FPC 3.2.2 fixes branch instead.

On Delphi, only the Windows target is available for mORMot general units, but you can use the cross-platform clients units on all Delphi targets. FPC is a much better and consistent cross-platform compiler, we gladly support.

Please submit pull requests for non-validated versions.

Installation

  1. Get the source, Luke!
  2. Setup your favorite IDE:
    • On Lazarus:
    • Just open and compile the /packages/lazarus/mormot2.lpk package;
    • and mormot2ui.lpk if needed.
    • On Delphi:
    • Create a new environment variable mormot2 with full path to your mORMot 2 src sub-folder (Tools - Options - IDE - Environment Variables), e.g. c:\github\mORMot2\src or d:\mormot2\src depending on step 1;
    • Add the following string to your IDE library paths (for all target platforms, i.e. Win32 and Win64): $(mormot2);$(mormot2)\core;$(mormot2)\lib;$(mormot2)\crypt;$(mormot2)\net;$(mormot2)\db;$(mormot2)\rest;$(mormot2)\orm;$(mormot2)\soa;$(mormot2)\app;$(mormot2)\script;$(mormot2)\ui;$(mormot2)\tools;$(mormot2)\misc
    • There is no IDE or UI package needed (yet).
  3. Discover and enjoy:
    • Open and compile test/mormot2tests.dpr in the IDE, and run the regression tests on your machine.
    • Browse the examples folder (work in progress) - especially Thomas Tutorials which are realistic and pedagogical.
    • Start from an example, and follow the documentation.
    • Feel free to contribute by posting enhancements and patches to this quickly evolving project.

Coming From Version 2

Why Rewrite a Working Solution?

The mORMot framework stayed in revision 1.18 for years, and is was time for a full refactoring.

The main refactoring points tried to better follow SOLID principles:

We therefore created a whole new project and repository, since switching to version 2 induced some backward uncompatible changes. New unit names were used, to avoid unexpected collision issues during migration, or if 1.18 is to remain installed for a compatibility project.

Upgrade In Practice

Quick Steps when upgrading from a previous 1.18 revision:

1) Note all units where split and renamed, and some breaking changes introduced for enhanced features, therefore a direct update is not possible - nor wanted

2) Switch to a new folder, e.g. #\lib2 instead of #\lib

3) Download latest 2.# revision files as stated just above

4) Change your references to mORMot units:

5) Consult the documentation about breaking changes from 1.18, mainly: