mORMot

GITHUB:

https://github.com/synopse/mORMot

Synopse mORMot framework

An Open Source Client-Server ORM/SOA framework
(c) 2008-2018 Synopse Informatique
https://synopse.info
http://mormot.net

Contributors
Alexander (sha)
Alexander (volax)
AlexPirate
Alfred Glaenzer (alf)
Arnaud Bouchez
ASiwon
Aweste
Bas Schouten
BigStar
Cheemeng
CoMPi
Damien (ddemars)
Daniel Kuettner
David Mead (MDW)
Delphinium (louisyeow)
DigDiver
Dominikcz
EgorovAlex
Emanuele (lele9)
Eric Grange
Esmond
Esteban Martin (EMartin)
Eva Freimann (EVaF)
Goran Despalatovic (gigo)
Jean-Baptiste Roussia (jbroussia)
Joe (jokusoft)
Johan Bontes
Jordi Tudela
Leon Oosthuizen
Maciej Izak (hnb)
Mario Moretti
Marius Maximus (mariuszekpl)
Martin Eckes
Martin Suer
Mazinsw
MChaos
Miab3
Michael (EgonHugeist)
MilesYou
Mingda
Nzsolt
Ondrej (reddwarf)
Pavel (mpv)
Pierre le Riche
RalfS
Richard6688
Sabbiolina
Sanyin
Sinisa (sinisav)
Sllimr7139
SSoftPro
Stefan (itSDS)
Transmogrifix
Uian2000
Vaclav
Vadim Orel
Willo vd Merwe
Win2014
Wloochacz
Wolfgang Ehrhardt
Yoanq
Ysair
Zed

[See below if you upgrade from 1.17 revision]

Synopse mORMot is an Open Source Client-Server ORM SOA MVC framework
for Delphi 6 up to Delphi 10.2 Tokyo and FPC, targeting Windows/Linux
for servers, and any platform for clients (including mobile or AJAX).

The main features of mORMot are therefore:

- ORM/ODM: objects persistence on almost any database (SQL or NoSQL);
- SOA: organize your business logic into REST services;
- Clients: consume your data or services from any platform, via ORM/SOA APIs;
- Web MVC: publish your ORM/SOA process as responsive Web Applications.

With local or remote access, via an auto-configuring Client-Server REST design.

Due to its modular design, switch from a Client-Server architecture over
HTTP, named pipes or GDI messages into a stand-alone application is just
a matter of mORMot classes initialization.
For instance, the very same executable can even be running stand-alone,
as a server, as a service, or a client, depending on some run-time parameters!

Emphasizing simplicity, speed and versatility, mORMot is a incredibly well
documented Open Source project easy enough to add basic ORM or Client-Server
features to simple applications for hobbyists, or let experienced users
develop scaling and strong service-based projects for their customers, with
the advantages of native code and easy-to-deploy solutions, reducing
deployment cost and increasing ROI.

It provides an Open Source self-sufficient set of units (even Delphi starter
edition is enough) for creating any application, from a stand-alone solution
up to the most complex Domain-Driven Design (DDD):

- Presentation layer featuring MVC UI generation with i18n and reporting
(with pdf export) for rich Delphi clients, MVC web clients (with logic-less
Mustache templates) or rich AJAX clients (via native JSON/REST access);

- Application layer implementing Service Oriented Architecture via
interface-based services (like WCF) and Client-Server ORM (including
method-based services) - following a RESTful model using JSON over several
communication protocols (e.g. HTTP/1.1);

- Domain Model layer handling all the needed business logic in plain Delphi
objects, including high-level managed types like dynamic arrays or records
for Value Objects, dedicated classes for Entities or Aggregates, and variant
storage with late-binding for dynamic documents;

- Data persistence infrastructure layer with ORM operations on direct
Oracle, MS SQL, OleDB, ODBC, ZEOS/ZDBC access or any TDataSet provider (e.g.
FireDAC/AnyDAC, UniDAC, NexusDB, BDE...), with a powerful SQLite3 kernel,
and optional SQL access if needed, with amazing performance and advanced
features like Array DML, auto-generating SQL for SQLite3, Oracle,
Jet/MSAccess, MS SQL, Firebird, DB2, PostgreSQL, MySQL and NexusDB - and
alternative high-speed MongoDB NoSQL database access for ODM persistence;

- Cross-Cutting infrastructure layers for handling data filtering and
validation, security (e.g. Windows authentication or any custom model),
caching, logging and testing (framework uses test-driven approach and
features interface stubbing and mocking).

With mORMot, ORM/ODM is not used only for data persistence of objects (like
in other implementations), but as part of a global n-Tier, Service Oriented
Architecture (SOA), ready to implement Domain-Driven solutions. This
framework is not an ORM on which a transmission layer has been added, like
almost everything existing in Delphi, C# or Java: this is a full Client-Server
ORM/SOA from the ground up.
This really makes the difference.

The business logic of your applications will be easily exposed as Services,
and will be accessible from light clients (written in Delphi or any other
mean, including AJAX).
The SpiderMonkey JavaScript engine has been integrated on the server side
and can be used to define business rules or any process (including MVC web
rendering) - just like node.js, but with a multi-threaded core, and the
full power of our optimized Delphi libraries at hand.

The framework Core is non-visual: you will get everything you need in a
consistent set of classes to be used from code. In order to let you focus
on your business, using mORMot's KISS/DRY/SOC/YAGNI/TDD and Convention Over
Configuration patterns. But you have also some UI units available (including
screen auto-generation, reporting and ribbon GUI), and you can use it from
any RAD, web, or AJAX clients (via JavaScript or Smart Mobile Studio).

No dependency is needed on the client side (no DB driver, or third-party
runtime): it is able to connect via standard HTTP, even through a corporate
proxy or a VPN. Rich Delphi clients can be deployed just by copying and running
a stand-alone small executable, with no installation process. Stream can be
encrypted via HTTS or with proven SHA/AES-256. Endpoints are configured
automatically for each published interface on both server and client sides,
and creating a load-balancing proxy is a matter of one method call.
Speed and scalability has been implemented from the ground up: a genuine
optimized multi-threaded core let a single server handle more than 50,000
concurrent clients, faster than DataSnap, WCF or node.js, and our rich SOA
design is able to implement both vertical and horizontal scalable hosting,
using recognized enterprise-level SQL or NoSQL databases for storage.

Even if mORMot will be more easily used in a project designed from scratch,
it fits very well the purpose of evolving any existing Delphi project, or
creating the server side part of an AJAX application.

Licensed under a disjunctive tri-license giving you the choice of one of
the three following sets of free software/open source licensing terms:
- Mozilla Public License, version 1.1 or later;
- GNU General Public License, version 2.0 or later;
- GNU Lesser General Public License, version 2.1 or later.
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.

Main project page:
http://mORMot.net

Documentation:
https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html

Installation:
https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_113

FAQ:
https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_123

How to get the source:
https://synopse.info/fossil/wiki?name=Get+the+source

A forum is dedicated to support:
https://synopse.info

A blog is available:
http://blog.synopse.info

Issues and feature requests can be posted (take a look at the forums
and latest unstable version first!):
https://synopse.info/fossil/reportlist

You can also monitor/fork our projects on GitHub:
https://github.com/synopse/mORMot

You may also install it as a Delphinus package: Delphinus-Support

Don't forget to download the documentation (available online or as pdf files,
created by our SynProject tool).
In particular, you should take a look at all general introduction chapters
of the SAD document. It will cover all key-concepts and code modelling
used by the framework.
A developer guide is included in this SAD document, in its 2nd part. You'll
get good practice guidance, presentation of the ORM/SOA approach and other
underlying concepts.

Feel free to contribute by posting enhancements and patches to this
quickly evolving project.

Enjoy!

Some units (e.g. SynPdf, SynGdiPlus, SynBigTable, SynCommons, SynCrypto,
SynDB*, SynSQLite3, SynMongoDB, SynMustache, SynSM, mORMotReport) are used
by mORMot, but do not require the whole framework to be linked.
That is, you can use e.g. only PDF generation, SynDB fast database
access, a static-linked SQLite3 engine, direct MongoDB access, Mustache
templates, SpiderMonkey JavaSCript engine, code-generated reports, or
the TDocVariant, TDynArray, TSynLog classes of SynCommons, without using
the main mORMot units and features (ORM, Client-Server, services, UI).

Some of those units can even be compiled with Delphi 5 (e.g. SynPdf, SynDB).

Quick Steps when upgrading from a previous 1.17 revision:

1) Note that some units where renamed, and some breaking changes introduced
by some enhanced features, therefore a direct update is not possible

2) Erase or rename your whole previous #\Lib directory

3) Download latest 1.18 revision files as stated just above

4) Change your references to mORMot units:
- Add in your uses clause SynLog.pas and/or SynTests.pas if needed;
- Rename in your uses clause any SQLite3Commons reference into mORmot;
- Rename in your uses clause any SQLite3 reference into mORMotSQLite3;
- Rename in your uses clause any other SQlite3* reference into mORMot*;
- Add in one uses clause a link to SynSQLite3Static (for Win32).

5) Consult the units headers about 1.18 for breaking changes, mainly:
- TSQLRecord.ID: TID primary key, TIDDynArray, and TRecordReference are now Int64;
- Renamed Iso8601 low-level structure as TTimeLogBits;
- TJSONSerializerCustomReader/Writer callbacks changed;
- TSQLRestServerCallBackParams replaced by TSQLRestServerURIContext class;
- TSQLRestServerStatic* classes renamed as TSQLRestStorage*;
- rmJSON* enums replaced by TSQLRestRoutingREST/JSON_RPC classes;
- Changed '? into '~' character for mORMoti18n language files.

mORMot的更多相关文章

  1. mormot 数据集转换为JSON字串

    mormot 数据集转换为JSON字串 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph ...

  2. mormot orm rest注意事项

    mORMot创建ORM RestFul,当CreateMissingTables的时候报错,搜了n多资料没搞定,后来胡乱建了个表测试了一通搞定了. ORM对应的每个数据表都需要一个ID字段并设置主键, ...

  3. mORMot 数据库操作

    程序中要使用数据库,首先是引用SynCommons, SynDB单元,根据不同的数据库类型,简单举几个例子: 1 使用Access数据库,引用SynCommons, SynDB,SynOleDb三个单 ...

  4. mORMot使用基础

    mORMot 名称来自Marmot,对,土拨鼠,俗称旱獭,是一种生活在高寒山区的动物.多数都在白天活动,喜群居,善掘土,所挖地道深达数米,内有铺草的居室,非常舒适.通常洞穴都会有两个以上的入口,以策安 ...

  5. mormot THttpApiServer使用例子

    mormot THttpApiServer使用例子 THttpApiServer封装了WINDOWS的HTTPS.SYS. unit Unit1; interface uses Winapi.Wind ...

  6. DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP

    DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP 程序员搞任何语言的程序开发上升到一定的层次,要想进步,必须要接触和学习使用优秀的开源框架. MORMOT封装了WINDOWS最新的H ...

  7. Delphi语言最好的JSON代码库 mORMot学习笔记1

    mORMot没有控件安装,直接添加到lib路径,工程中直接添加syncommons,syndb等到uses里 --------------------------------------------- ...

  8. Aurelius vs mORMot vs EntityDAC Delphi 的 ORM框架

    Aurelius vs mORMot vs EntityDAC   Delphi 的 ORM框架: http://www.tmssoftware.com/site/aurelius.asp#produ ...

  9. mormot支持TCP/IP

    mormot支持TCP/IP http.sys本来就构建于TCP/IP之上,因此HTTP.SYS是支持TCP/IP连接的. 笔者为此特意写了一个测试DEMO.TCP/IP连接成功. 如果客户端过一段时 ...

  10. 咏南中间件新增MORMOT移动端演示

    咏南中间件新增MORMOT移动端演示 基于FMX,支持安卓.IOS移动端. 1)使用INDY 的HTTP控件进行查询: procedure TForm1.查询1Click(Sender: TObjec ...

随机推荐

  1. CSS常见简写规则整理

    外边距(margin) margin-top margin-right margin-bottom margin-left 简写顺序为顺时针方向(上.右.下.左),如:margin: 1px 2px ...

  2. JQuery中Table标签页和无缝滚动

    HTML代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...

  3. Sourcetree配置ssh密钥 - git图形化工具(二)

    这里主要介绍Sourcetree如何导入已经生成好的ssh私钥,如何生成ssh私钥自行百度. 如果Sourcetree没有配置ssh密钥,克隆时会提示如下错误: 仓库类型:这是一个无效的源路径/URL ...

  4. mongo 运维管理学习

    1 如何在线修改chunk大小 https://docs.mongodb.com/manual/tutorial/modify-chunk-size-in-sharded-cluster/ 2 chu ...

  5. 【BZOJ】1566: [NOI2009]管道取珠

    题解 假如我们非常熟练的看出来,平方和转有序对统计的套路的话,应该就不难了 我们只需要统计(wayA,wayB)生成的序列一样的有序对个数就行 可以用一个\(n^3\)的dp解决 \(dp[i][j] ...

  6. 【POJ】2454.Jersey Politics

    题解 有种迷一样的讽刺效果 每个城市有1000头牛,然后你现在知道对于自己政党每个城市的选票,把城市划分成三个州,保证在至少两个州内获胜 找出前2K大的然后random_shuffle,直到前K个加起 ...

  7. 跟我一起学WPF(0):初识WPF

    WPF是什么 WPF是微软的新一代图形引擎系统,全称为Windows Presentation Foundation,从.NET3.0版本开始引入,为用户界面.2D/3D 图形.文档和媒体提供了统一的 ...

  8. Winsock—I/O模型之选择模型(一)

    Winsock中提供了一些I/O模型帮助应用程序以异步方式在一个或多个套接字上管理I/O. 这样的I/O模型有六种:阻塞(blocking)模型,选择(select)模型,WSAAsyncSelect ...

  9. Linq To Sql 使用初探

    最近有数据处理需要,就是那种从数据库中把数据取出来 ,对其中的部分字段做一些处理再吐回去的工作,从同事那里学习到了,这中活最适合使用 Linq to Sql 这种方式,不用搭建框架,不用自建实体,直接 ...

  10. 基于 Laravel 开发博客应用系列 —— 从测试开始(一):创建项目和PHPUnit

    1.创建博客项目 我们将遵循上一节提到的六步创建一个新 Laravel 5.1 项目的步骤,创建本节要用到的博客项目 —— blog. 首先,在本地主机安装应用骨架: nonfu@ubuntu:~/C ...