Thema: Delphi Kleine Demo zu mORMot

Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Kleine Demo zu mORMot

  Alt 5. Nov 2011, 12:34
Datenbank: SQLite • Version: 3 • Zugriff über: mORMot
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
Angehängte Dateien
Dateityp: 7z mORMot_Demo_Source.7z (11,5 KB, 166x aufgerufen)
Dateityp: 7z mORMot_Demo_Bin.7z (1,65 MB, 152x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat