Synopse

To content | To menu | To search

Tag - JSON

Entries feed

2012, Monday February 6

Modification of TSQLRestServerCallBack method prototype (bis)

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, Wednesday August 10

Framework documentation updated for revision 1.15

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, Saturday July 2

Is Object-Relational Mapping the Paradise of Computer Science?

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, Wednesday June 29

Synopse SQLite3 framework 1.14

Our ORM framework has been released as version 1.14.

It's mainly a bug-fix release:

  • Integrated SQLite3 engine updated to latest version 3.7.7.1;
  • Fix several issues about JSON generation layout;
  • Enhanced automated User Interface generation for object on-screen edition;
  • SynPdf unit now handles Bézier curves from TCanvas, and some CMYK functions; also enhanced PDF/A-1compatibility;
  • Some speed enhancements, and new functions for the SynOleDB unit.

Continue reading...

2011, Thursday June 2

Fast JSON parsing

When it deals with parsing some (textual) content, two directions are usually envisaged. In the XML world, you have usually to make a choice between:
- A DOM parser, which creates an in-memory tree structure of objects mapping the XML nodes;
- A SAX parser, which reads the XML content, then call pre-defined events for each XML content element.

In fact, DOM parsers use internally a SAX parser to read the XML content. Therefore, with the overhead of object creation and their property initialization, DOM parsers are typically three to five times slower than SAX. But, DOM parsers are much more powerful for handling the data: as soon as it's mapped in native objects, code can access with no time to any given node, whereas a SAX-based access will have to read again the whole XML content.

Most JSON parser available in Delphi use a DOM-like approach. For instance, the DBXJSON unit included since Delphi 2010 or the SuperObject or DWS libraries create a class instance mapping each JSON node.

In a JSON-based Client-Server ORM like ours, profiling shows that a lot of time is spent in JSON parsing, on both Client and Server side. Therefore, we tried to optimize this part of the library.

Continue reading...

BATCH sequences for adding/updating/deleting records

When use the so-called BATCH sequences?

In a standard Client-Server architecture, especially with the common understanding (and most implementations) of a RESTful service, any Add / Update / Delete method call requires a back and forth flow to then from the remote server.

In case of a remote connection via the Internet (or a slow network), you could have some 100 ms of latency: it's just the "ping" timing, i.e. the time spent for your IP packet to go to the server, then back to you.

If you are making a number of such calls (e.g. add 1000 records), you'll have 100*1000 ms = 100 s = 1:40 min just because of this network latency!

The BATCH sequence allows you to regroup those statements into just ONE remote call. Internally, it builds a JSON stream, then post this stream at once to the server. Then the server answers at once, after having performed all the modifications.

Continue reading...

2010, Saturday October 23

Synopse SQLite3 Framework 1.10 - including engine 3.7.3

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, Tuesday August 24

Synopse SQLite3 Framework 1.9.1

The Synopse SQLite3 Database Framework was just released under version 1.9.1:
- internal SQLite3 database engine is updated to version 3.7.2;
- new TSQLRecordFTS3 record, for using FTS3 virtual tables, i.e. implementing full-text search;
- new SQLite3UIEdit unit, to edit table content with a dialog created from RTTI;
- new dedicated BLOB methods and JSON array serialization;
- a lot of fixes and speed enhancements (including our HTTP/1.1 RESTful server now using Thread Pool).

The new 3.7.2 version of the SQLite3 engine, which is mandatory according to SQLite3's authors, is included.

Continue reading...

2010, Thursday August 19

How to implement multi-tier architecture in our SQLite3 Framework

In software engineering, multi-tier architecture (often referred to as n-tier architecture) is a client–server architecture in which the presentation, the application processing, and the data management are logically separate processes. For example, an application that uses middleware to service data requests between a user and a database employs multi-tier architecture. The most widespread use of multi-tier architecture is the three-tier architecture.

Both ORM and RESTful aspects of our framework makes it easy to develop using such a three-tier architecture.

Continue reading...

2010, Friday July 2

JSON format of a RESTful application

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, Monday May 24

SQLite3 Framework version 1.7

Our SQLite3 Framework has been updated into the 1.7 version. For Delphi 7 to Delphi 2010.

Mostly User-Interface (reporting) enhancements, and some bug fixes.

Continue reading...

2010, Sunday March 14

SQLite3 Framework version 1.5

Our SQLite3 Framework has been updated into the 1.5 version.

Continue reading...

2010, Monday February 8

SQLite3 Framework version 1.4

The framework has been updated, and is released now under the LGPL license (public domain license was found to be confusing).

Continue reading...

2010, Sunday January 24

SQLite3 Framework updates and Samples

The SQLite3 Framework has been updated. Three sample applications are provided, in order to show basic ORM features of the framework.

Continue reading...

2010, Friday January 22

Synopse Enhanced Framework version 1.3

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

Synopse SQLite3 Framework version 1.2

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...

2010, Thursday January 14

Synopse SQLite3 Framework version 1.1

The version 1.1 of the Synopse SQLite3 Framework is just released. Includes latest SQLite3 engine version 3.6.22. Delphi 3 to Delphi 2007 compatiblity, first attempt to compile under Delphi 2009/2010 and FPC.

Continue reading...

2010, Tuesday January 5

Synopse SQLite3 Framework: NULL handling

Question posted in the embarcadero forum:

Is there a way in your wrapper to know whether the field is NULL (say, Integer or String field)?
In most databases '' and null are different values.
Thanks,
Michael

Continue reading...

2009, Sunday December 20

SQLite3 Framework

More details (source code, JSON, REST) about this framework.

Continue reading...

2008, Saturday March 8

SQLite3 Framework

The Synopse SQLite3 database Framework interfaces the SQlite3 database engine into pure Delphi code: database access, User Interface generation, security, i18n and reporting are handled in a safe and fast Client/Server AJAX/RESTful model.

Continue reading...