2012, Monday February 6
By A.Bouchez on 2012, Monday February 6, 22:05 - mORMot Framework
In order to implement some RESTful Services, a
callback has to be defined on the server side.
The prototype of these methods has been modified one more time, to supply an
unique parameter:
This is a CODE BREAK change and you shall refresh ALL your server-side
code to match the new signature.
This unique parameter will let the signature remain untouched in your code
implementation, even if the framework evolves (like adding a new
parameter).
Continue reading...
2011, Sunday November 27
By A.Bouchez on 2011, Sunday November 27, 23:39 - Pascal Programing
Delphi is sometimes assimilated to a RAD product - and this is a marketing
label - but IMHO Delphi is much more than RAD.
With Delphi, you can make very serious and clean programming.
Including SOLID style of coding.
The acronym SOLID is derived from the following OOP principles (quoted from
the corresponding
Wikipedia article):
- Single responsibility principle: the notion that an object should
have only a single responsibility;
- Open/closed principle: the notion that “software entities ...
should be open for extension, but closed for modification”;
- Liskov substitution principle: the notion that “objects in a
program should be replaceable with instances of their subtypes without altering
the correctness of that program” - also named as "design by
contract";
- Interface segregation principle: the notion that “many client
specific interfaces are better than one general purpose interface.”;
- Dependency inversion principle: the notion that one should “Depend
upon Abstractions. Do not depend upon concretions.”. Dependency
injection is one method of following this principle.
If you have some programming skills, those principles are general statements
you may already found out by yourself. If you start doing serious
object-oriented coding, those principles are best-practice guidelines you would
gain following.
They certainly help to fight the three main code weaknesses:
- Rigidity – Hard to change something because every change affects
too many other parts of the system;
- Fragility – When you make a change, unexpected parts of the system
break;
- Immobility – Hard to reuse in another application because it
cannot be disentangled from the current application.
Continue reading...
By A.Bouchez on 2011, Sunday November 27, 07:21 - mORMot Framework
In order to implement some RESTful Services, a
callback has to be defined on the server side.
The prototype of these method has been modified, to supply an additional
aSession: cardinal parameter: this is a CODE BREAK change and you
shall refresh ALL your server-side code to match the new signature.
Continue reading...
2011, Sunday September 25
By A.Bouchez on 2011, Sunday September 25, 13:59 - SQLite3 Framework

In case you were redirected from the previous "Synopse SQLite3
framework" category link, here is the new thread to be used instead:
http://blog.synopse.info/category/Open-Source-Projects/mORMot-Framework
Since revision 1.15 of the framework, it is able to connect to any database
engine (therefore is not limited to
SQLite3), and is now called mORMot.
2011, Wednesday August 10
By A.Bouchez on 2011, Wednesday August 10, 20:52 - mORMot Framework
The framework
documentation was just updated.
The general organization of the SAD document (which is the one to be read in
all cases) has been refreshed, and is now separated in smaller chapters.
The new official name has been changed into "Synopse SQLite3/mORMot
framework"...
Continue reading...
2011, Sunday August 7
By A.Bouchez on 2011, Sunday August 7, 09:46 - mORMot Framework
Our downloadable documentation
has been enhanced, and contains now a description about the main feature of
the near-to-come 1.15 version, i.e. "database agnosticism".
The core database of our mORMot / SQLite3 framework uses the
SQLite3 library, which is a Free, Secure, Zero-Configuration,
Server-less, Single Stable Cross-Platform Database File database engine.
As stated below, you can use any other database access layer, if you wish. A
fast in-memory engine is included, and can be used instead or together with the
SQLite3 engine. Since revision 1.15 of the framework you may be able
to access any remote database, and use one or more OleDB (or
Oracle) connections to store your precious ORM objects. The
SQlite3 will be used as the main SQL engine, able to JOIN all those
tables, thanks to its Virtual Table unique feature.
Continue reading...
2011, Monday July 25
By A.Bouchez on 2011, Monday July 25, 22:19 - mORMot Framework
Our ORM RESTful Framework is about to access any available database
engine.
It will probably change its name (since it won't use only SQlite3
as database), to become mORMot - could be an acronym for
"Manage Object Relational Mapping Over Tables", or whatever you may think
of...

We'll still rely on SQLite3 on the server, but a dedicated
mechanism will allow to access via OleDB any remote database, and mix
those tables content with the native ORM tables of the framework. A flexible
Virtual Tables and column mapping will allow any possible architecture: either
a new project in pure ORM, either a project relying on an existing database
with its own table layout.
Continue reading...
2011, Sunday July 3
By A.Bouchez on 2011, Sunday July 3, 20:12 - SQLite3 Framework
Here is what wikipedia states at http://en.wikipedia.org/wiki/Shared_nothing_architecture:
A shared nothing architecture (SN) is a distributed computing
architecture in which each node is independent and self-sufficient, and there
is no single point of contention across the system. People typically contrast
SN with systems that keep a large amount of centrally-stored state information,
whether in a database, an application server, or any other similar single point
of contention.
This is just one approach of "sharding". Sharding is indeed related to a
shared nothing architecture - once sharded, each shard can live in a totally
separate logical schema instance.
"I sharded, therefore it scales"...
You can do this in Delphi... and opens a new world of scaling
opportunities... Just as Google, Facebook, or
eBay do...
Continue reading...
2011, Saturday July 2
By A.Bouchez on 2011, Saturday July 2, 11:32 - mORMot Framework
There is a well known syndrome around, against ORM.
Do you remember The
Vietnam of Computer Science article?
It is worth reading... and commenting.
Sounds a bit outdated by now. Tempus fugit!
Continue reading...
2011, Tuesday May 24
By A.Bouchez on 2011, Tuesday May 24, 22:58 - SQLite3 Framework
How to handle authentication in a RESTful Client-Server architecture is a
matter of debate.
Commonly, it can be achieved, in the SOA over HTTP world via:
- HTTP basic auth over HTTPS;
- Cookies and session management;
- Query Authentication with additional signature parameters.
We'll have to adapt, or even better mix those techniques, to match our
framework architecture at best.
Each authentication scheme has its own PROs and CONs, depending on the
purpose of your security policy and software architecture.
Continue reading...
2011, Monday February 7
By A.Bouchez on 2011, Monday February 7, 20:56 - SQLite3 Framework
The Synopse SQLite3 Database Framework was just released under version
1.12:
- internal SQLite3 database engine was updated to version 3.7.5,
and SQL functions have been enhanced;
- now handle
prepared SQL statements with a neutral automated syntax;
- with Delphi 2009/2010/XE, you can define directly
Unicode string properties in TSQLRecord (will be stored
as UTF-8);
- include some overloaded methods using Variants for direct property
access (e.g. in any grid);
- SynPdf has now direct bookmarks and links methods, can reuse any
existing bitmap, and generate PDF/A-1
files;
- internal reporting now supports bookmarks and
links (with on screen navigation), and better integrates with
SynPdf;
- a lot of bug fixes, new methods and enhancements.
Continue reading...
2010, Saturday October 23
By A.Bouchez on 2010, Saturday October 23, 09:52 - SQLite3 Framework
The Synopse SQLite3 Database Framework was just released under version
1.10:
- internal SQLite3 database engine is updated to version 3.7.3;
- code modifications to compile with Delphi 6 compiler;
- enhancements in TSQLRestServerStatic, for easier stand-alone work of this
in-memory database engine;
- new SQLite3Edit unit, for automated creation of a UI window, ready to edit
any TSQLRecord, with no RAD necessary (all components are created from RTTI):
think this is an ORM for User Interface.
This version compiles from Delphi 6 up to Delphi XE.
Continue reading...
2010, Wednesday August 4
By A.Bouchez on 2010, Wednesday August 4, 00:48 - SQLite3 Framework
The SQLite3 MainDemo source code has just been uploaded to the repository.
This application is just a database tool which stores text content and files
into the database, in both clear and "safe" manner. Safe records are stored
using AES-256/SHA-256 encryption. There is an Audit Trail table for tracking
the changes.
Continue reading...
2010, Sunday July 18
By A.Bouchez on 2010, Sunday July 18, 17:44 - SQLite3 Framework
You certainly knows about the new DataSnap Client-Server features, based on
JSON, introduced in Delphi 2010.
http://docwiki.embarcadero.com/RADStudi
… plications
We added such communication in our SQLite3 Framework, in a KISS (i.e.
simple) way: no expert, no new unit or new class. Just add a published method
Server-side, then use easy functions about JSON or URL-parameters to get the
request encoded and decoded as expected, on Client-side.
Continue reading...
2010, Friday July 2
By A.Bouchez on 2010, Friday July 2, 10:11 - Pascal Programing
RESTful JSON is still a buzzing process... there is no standard yet, and
they should not be, since JSON itself has its own RFC, and REST is a powerful
but vague statement.
Continue reading...
2010, Sunday March 14
By A.Bouchez on 2010, Sunday March 14, 15:16 - SQLite3 Framework
Our SQLite3 Framework has been updated into the 1.5 version.
Continue reading...
2010, Monday February 8
By A.Bouchez on 2010, Monday February 8, 14:29 - SQLite3 Framework
The framework has been updated, and is released now under the LGPL license (public domain
license was found to be confusing).
Continue reading...
2010, Friday January 22
By A.Bouchez on 2010, Friday January 22, 22:11 - SQLite3 Framework
The version 1.3 of the Synopse SQLite3 Framework is just released. It's a
minor release, with bug fixes, especially for Delphi 2009/2010.
Continue reading...
2010, Monday January 18
By A.Bouchez on 2010, Monday January 18, 00:16 - SQLite3 Framework
The version 1.2 of the Synopse SQLite3 Framework is just released. Includes
latest SQLite3 engine version 3.6.22. Now tested on Delphi 7, 2007
and 2009, it should work on all Delphi compiler versions from 3 to 2010.
Continue reading...
2009, Sunday December 20
By A.Bouchez on 2009, Sunday December 20, 18:18 - SQLite3 Framework
How to download and install the source code of this framework.
Continue reading...