So hier mal eine kleine Demo zu
mORMot inkl. Source und Binaries (wer das nicht selber kompilieren will)
Screenshots spare ich mir mal, denn es geht nicht um die Bilder sondern das ORM
Der Kern des Ganzen besteht aus einem Model, welches die Daten-Objekte beinhaltet.
Aus diesen Datenobjekten werden dann
automatisch die Tabellen erzeugt, bzw. erweitert.
In der Demo verwende ich folgendes Datenobjekt:
Delphi-Quellcode:
unit Model.Demo.Person;
interface
uses
SynCommons, SQLite3Commons;
type
TGeschlecht = ( gsMann, gsFrau );
TSQLPerson =
class( TSQLRecord )
private
fVorname : SynUnicode;
// ist ein Unicode-String
fNachname : SynUnicode;
// ist ein Unicode-String
fGeschlecht : TGeschlecht;
// ja, Enums gehen auch
function GetAnzeige :
string;
public
property Anzeige :
string read GetAnzeige;
published
property Vorname : SynUnicode
read fVorname
write fVorname;
property Nachname : SynUnicode
read fNachname
write fNachname;
property Geschlecht : TGeschlecht
read fGeschlecht
write fGeschlecht;
end;
implementation
{ TSQLPerson }
function TSQLPerson.GetAnzeige :
string;
begin
Result := Nachname + '
, ' + Vorname;
end;
end.
Aus den
published Properties werden die Feldnamen der Tabelle gebildet.
Die Tabelle selber bekommt als Namen
Person (also
TSQL<TabellenName>).
Um aus den Daten-Objekten ein Model zu erstellen benutze ich eine eigene
Unit, die mir alle Daten-Objekte sammelt und in einem Model zusammenstellt:
Delphi-Quellcode:
unit Model.Demo;
interface
uses
SQLite3Commons;
function CreateModel : TSQLModel;
implementation
uses
Model.Demo.Person;
function CreateModel : TSQLModel;
begin
Result := TSQLModel.Create( [TSQLPerson], '
Demo' );
end;
end.
Ok, bis hier sollte das alles noch nachvollziehbar sein
Jetzt zum schwierigien Teil Client und Server.
In der Demo verwende ich einen Http-Server. Also brauchen wir eine
VCL-Formular-Anwendung (oder meinetwegen auch eine Service-Anwendung) und setzen diesen Server einmal auf:
Delphi-Quellcode:
uses
mORMot.Connector, mORMot.Connector.Server,
Model.Demo;
...
fSrvCon := // eine Server-Instanz für
TmORMotServerHttp.Create( // einen Http-Server
TmORMotConfigurator.Create, // mit der Konfiguration
CreateModel // und diesem Model
);
ja, das war schon alles ...
Jetzt der passende Client:
Delphi-Quellcode:
uses
mORMot.Connector, mORMot.Connector.Client,
Model.Demo;
...
fCltCon := // eine Client-Instanz
TmORMotClientHttp.Create( // für den Zugriff via Http
TmORMotConfigurator.Create, // mit der Konfiguration
CreateModel // und diesem Model
);
Der TmORMotConfigurator kümmert sich um das Erzeugen aller benötigten Objekte.
Steuern
kann man das Verhalten über eine Ini-Datei.
TmORMotConfigurator.Create('<Pfad zur Ini-Datei>');
Wird keine Ini-Datei angegeben, dann wird der Name der Ini-Datei aus dem Anwendungsnamen gebildet:
Code:
<MeinAnwendungsName>_mORMot.ini
Notwendig ist die nicht, da für alle Einstellungen sinnvolle Default-Werte hinterlegt sind.
Um z.B. den Port für den Http-Server einzustellen trägt man folgendes in die Ini-Dateien für Client und Server ein:
Code:
[Server]
;Port Default 8080
Port=8888
Ist der Server nicht auf dem lokalen Rechner, dann trägt man in der
Client-Ini einfach den Hostnamen ein:
Code:
[Server]
;Host Default
localhost
Host=<Adresse des Servers>
Die Konfiguration wird immer nur beim Erzeugen der Connectoren benutzt, somit ist ein Neustart von Server/Client erforderlich.
Vielleicht sollte man noch erwähnen dass der Server ein REST-Server ist und die Daten auch direkt via WebBrowser ausgelesen werden können.
Sind im Demo-Server schon Datensätze vorhanden, dann einfach mal diesen Link öffnen
http://localhost:8080/Demo/Person/1
(Wer den FireFox einsetzt sollte sich das AddOn JSONview installieren)
So das sollte für den ersten Test schon mal reichen