Mittwoch, 23. Mai 2012


Artikel

September 2008 | Artikel

Delphi 2009 Fortsetzung, Teil 2

Teil 1   Teil 2   Teil 3   Teil 4   

Die Sort-Methode könnte dann folgenden Code enthalten:

  1. var
  2. x, y: TFoo;
  3. begin
  4. if AComparer(x, y) then
  5. Swap(x,y);
  6. end;

D. h. immer wenn x > y ist, dann wird die Reihenfolge von x und y getauscht (trivialer Sortieralgorithmus – hier nur mit Swap() angedeutet). Die Verwendung sieht dann so aus:

  1. Var
  2. LSomeFoo : TFooList;
  3. LSomeFoo.sort(LNameComparer);

Oder

  1. LSomeFoo.sort(LAgeComparer);

Natürlich kann man sich aber auch das „Einpacken“ des Vergleichcodes in LNameComparer sparen – der folgende Code ist korrekte Syntax:

  1. LsomeFoo.sort(function(a, b: TFoo):boolean; begin
  2. result := a.FAge > b.FAge; end;);

D.h. man kann Pascal-Code als Parameter von Methoden übergeben. Man erkennt an diesen Beispielen, dass sich Anonyme Methoden immer dann anbieten, wenn man kurze Code-Fragmente ohne viel Aufwand und flexibel einsetzen möchte.

Erweiterte Unterstützung bei der Erstellung von Datenbankanwendungen mit dbExpress und DataSnap

von Thomas Pfister

Mit Delphi 2007 wurde ein komplett neues Datenbankframework mit dem Namen „dbx4“ veröffentlicht. Bis auf den Namen und eine Abwärtskompatibilität zu der Vorgängerversion blieb eigentlich nichts beim Alten. Das neue Datenbankteam erstellte das Framework zum einen von Grund auf neu und zum anderen komplett in Pascal. Die Unicodefähigkeit wurde von Anfang an berücksichtigt; dementsprechend waren die Änderungen von WideString auf UnicodeString innerhalb von dbx4 sehr schnell realisiert worden. Weitere Neuerungen bei dbx4 sind die Metadaten-Parameter. Diese werden aktiviert, wenn ein Kommando ohne das vorherige Einfügen von Parametern vorbereitet wird; bisher werden nur die folgenden Datenbanken dafür unterstützt: InterBase, Blackfish SQL, Sybase ASE, MSSQL und DB2.

Aufgrund des Kundenfeedbacks gibt es nunmehr auch neue TDateTime sowie Currency “As” Methoden.

Damit wurde die Client/Server-Entwicklung mit einer ausgereiften Technik umfassend unterstützt. Der nächste Schritt ist die Multi-Tier-Architektur, die früher unter dem Namen „MIDAS“ und seit Delphi 6 als „Datasnap“ bekannt ist. Eine Einführung in diese Thematik ist an dieser Stelle aus Platzgründen nicht möglich.

Mit Delphi 2009 wurde DataSnap 2009 veröffentlicht. Analog zu dbx4 wurde DataSnap 2009 konsequent von Grund auf in Object Pascal neu programmiert. In der Praxis hat dieser Wechsel des Codes zur Folge, dass kein COM mehr notwendig ist. Glücklicherweise hat CodeGear auf eine Abwärtskompatibilität geachtet, die bestehende Applikationen mit einem überschaubaren Aufwand in das neue Framework übernimmt. Die bekannte IAppServer-Klasse wird mittels eines Synchronisationsprotokolls weiterhin unterstützt.

Für Serververbindungen gibt es damit eine skalierbare Technik, die Multi-Tier-Applikationen sehr leicht realisieren lassen.

Im Serverbereich gibt ein neues TServerModule, welches ungefähr wie das TRemoteDataModul arbeitet, aber zudem auch von TProviderDataModule erweitert wurde. Die Servermethoden sind nun reine Delphimethoden – also kein IDL mehr.

Könnte der Leser nun auf die Idee kommen, dass aufgrund der Pascal-Programmierung eine proprietäre Kommunikation zwischen dem Datasnap-Server und -Client stattfindet, so täuscht er sich. CodeGear wählte JSON aus, welches auf ECMA-Skript basiert und auch bei BlackfishSQL zum Einsatz kommt.

Damit schließt sich der Kreis und mit dbx4 und DataSnap 2009 erhält der Entwickler sowohl Frameworks, die er entsprechend erweitern kann, als auch einsatzbereite Komponenten, die auf das Framework aufsetzen. Durch die Framework-Architektur wird der Entwickler in die Lage versetzt, relativ leicht andere Transportprotokolle, wie z.B. http(s), SSL/TLS und weitere zu integrieren.

Die SQLConnection wird über den Datasnap-Driver verbunden (Abbildung 1):

Auf der Client-Seite gibt es die TSQLServerMethod-Komponente, die vergleichbar mit der TSQLStoredProc-Komponente ist. Damit ist es möglich, auf dem Server definierte Methoden sehr einfach zu nutzen (Abbildung 2):

In diesem Bereich wurde auch darauf geachtet, dass sämtliche Klassen streng typisiert sind.

Auf der Clientseite wurde als Ersatz für TDComConnection und TSocketconnection die Komponente TDSProviderConnection bereitgestellt.

Das gesamte Framework, d.h. sowohl dbx4 als auch Datasnap 2009, ist in der jetzt zur Verfügung stehenden Version von Delphi schon sehr ausgereift. Insbesondere der Framework-Ansatz ist elementar wichtig, da der Entwickler an nahezu jeder Stelle in die Abläufe eingreifen kann und so ein optimal abgestimmtes Programm anbieten kann.

Teil 1   Teil 2   Teil 3   Teil 4   

Kommentare