dbExpress-Framework

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenbankanwendungen für die Win32-Plattform entwickeln - Index


Das dbExpress-Framework (DBX-Framework) ist eine Menge abstrakter Klassen, die sich in der Unit DBXCommon befinden. Anwendungen können mit dem Framework über verschiedene Wege in Verbindung treten: Sie können das Framework direkt oder die dbExpress VCL-Komponenten, die sich in der oberen Schicht des Frameworks befinden, für native und verwaltete Anwendungen einsetzen.

Obwohl viele Anwendungen mit dbExpress-Treibern über die dbExpress VCL-Komponenten in Verbindung treten, bietet das DBX-Framework eine bequeme, einfachere Option für die Kommunikation mit einem Datenbanktreiber. Sie können auch für dbExpress einen Datenbanktreiber erstellen, indem Sie die abstrakten DBXCommon-Basisklassen des Frameworks erweitern. Das DBX-Framework stellt die gebräuchlichste Datenbanktreiberfunktionalität für eine "mengenorientierte" Datenbankanwendung bereit, bietet aber ein einfaches Interface.

Im Folgenden finden Sie einige Schlüsselfunktionen des DBX-Framework:

  • Das Treiber-Framework ist vollständig in Delphi geschrieben und ermöglicht, dass Treiber ebenfalls in Delphi geschrieben werden.
  • Es verwendet einen streng typisierten Datenzugriff anstelle von Zeigern. Das Framework verwendet z.B. String-Typen anstatt Zeiger auf Strings.
  • Das Treiber-Framework verwendet einen einzigen Quelltext Sie können den Quelltext mit dem nativen DCC32-Compiler compilieren.
  • Das Framework hat nur abstrakte Basisklassen, die für Treiber, Verbindungen, Befehle, Reader usw. verwendet werden.
  • Das Framework verwendet eine auf Exception basierte Fehlerbehandlung anstelle der Rückgabe von Fehlercodes.

Leistungsmerkmale

Es gibt zwei Treiberkategorien, die die Klassen in DBXCommon erweitern: DBXDynaLink und DBXDirect. Diese Treiber unterscheiden sich in der Art und Weise, wie sie geladen werden und in den Leistungsmerkmalen, die sie für eine Anwendung bereitstellen. Dies wird weiter unten detaillierter beschrieben.

Sie können das DBX-Framework auch erweitern, um Delegattreiber zu schreiben, die eine Extra-Schicht zwischen der Anwendung und dem eigentlichen Treiber bereitstellen. Delegattreiber sind beim Verbindungs-Pooling, beim Erstellen von Treiberprofilen, bei der Ablaufverfolgung und beim Auditing hilfreich. Eine weitere mögliche Anwendung der Treiberdelegation ist das Erstellen eines Thread-sicheren Treiberdelegaten. Ein solcher Delegat könnte einen Thread-synchronisierten Zugriff auf alle public Methoden bereitstellen.

Absolute Thread-Sicherheit bleibt den Anwendungen überlassen, die dbExpress verwenden. Gewisse Thread-Sicherheitsbelange werden aber vom dbExpress-Framework ausgezeichnet gehandhabt. Zu den Thread-sicheren Operationen von dbExpress zählen das Laden und Entladen von Treibern und die Verbindungserstellung. Wie weiter oben erwähnt, kann ein Delegattreiber erstellt werden, um das gesamte public Interface von dbExpress bei Bedarf Thread-sicher zu machen.

Ein dbExpress-Treiber kann Treiber, die als Delphi-Packages erstellt wurden, statisch oder dynamisch linken. Der einfachste Weg, ein Treiber-Package zu linken, ist, es einfach in die "uses"-Klausel aufzunehmen. Der Treiberlader lädt auch Packages, die in einer config- oder ini-Datei angegeben sind, mit der Methode LoadPackage. Dies ermöglicht das dynamische Laden von Treibern, die in keiner uses-Klausel in den Units der Anwendung angegeben sind. Beachten Sie bitte, dass die Methode LoadPackage nur für Anwendungen eingesetzt werden kann, die für die Verwendung von Packages vorgesehen sind.

Entwickler von dbExpress-Treibern sollten den Abschnitt "initialization" der Units DBXDynalink und DBXTrace im mit dbExpress ausgelieferten Quelltext aufmerksam durchlesen. Diese Abschnitte registrieren sich selbst mit einer Singleton-Unit namens ClassRegistry. ClassRegistry wird von den dbExpress-Treiberladern zum Instantiieren der Treiberladeklassen anhand des Namens (ein String) verwendet. ClassRegistry ist ein einfacher, schmaler Mechanismus zum Registrieren und Instantiieren einer Klasse über ihren Namen.

DBXDynalink-Treiber

DBXDynalink wird für vorhandene dbExpress-Treiber und für neue Treiber verwendet. Es wird als natives Delphi-Package compiliert. DBXDynalink lädt native dbExpress-Treiber, die ein primitiveres "natives" Interface namens DBXExports implementieren. Das Interface DBXExports ist eine kleine Sammlung von "linearen" Exportmethoden. Der Quelltext von DBXExports ist in dbExpress enthalten. DBXExports stellt eine strenger typisierte API als das COM-basierte Interface von dbExpress 3 bereit. Daher können Methoden zu zukünftigen Produktgenerationen hinzugefügt werden, ohne dass die Kompatibilität mit älteren Implementierungen des DBXExports-Interface verloren geht.

DBXAdapter ist ein dbExpress-konformer Treiber, der das DBXExports-Interface an das ältere dbExpress COM-Interface adaptiert. Neuere native Treiber können durch direktes Implementieren von DBXExports geschrieben werden.

Weil das DBXExports-Interface für die Implementierung über eine native Sprache (Delphi oder C++) entwickelt wurde, verwendet es eine primitivere Fehlerbehandlung, die nicht auf Exceptions basiert. DBXDynalink ordnet Fehlercodes einer DBXCommon-Exception zu.

Die Unit DBXDynalink enthält einen dbExpress-Treiber. Dieser Treiber delegiert an Nicht-Delphi-Treiber, die das lineare Export-Interface DBXDynalinkExport implementieren. DBXTrace ist ein Delegattreiber für die Ablaufverfolgung. Die dbExpress-VCL verwendet DBXCommon, DBXDynalink und DbxTrace als "Standardtreiber". Dies kann jedoch für statisch gelinkte Anwendungen geändert werden, ohne dass der dbExpress VCL-Quelltext (SQLExpr.pas) bearbeitet werden muss. SQLExpr.pas verwendet die Unit DBXDefaultDrivers. Die Unit DBXDefaultDrivers enthält nur eine uses-Klausel. Die uses-Klausel in DBXDefaultDrivers enthält DBXCommon, DBXDynalink und DBXTrace. DBXCommon muss immer verwendet werden. Eine statisch gelinkte Anwendung kann aber DBXTrace entfernen und DBXDynalink durch einen anderen Treiber ersetzen.

DBXDirect-Treiber

Ein DBXDirect-Treiber ist ein beliebiger Treiber, der durch Erweiterung der abstrakten DBXCommon-Basisklassen implementiert wird. Diese Klassen sind für native Implementierungen in Delphi geschrieben.

Streng genommen sind alle DBX-Framework-Treiber eine Form von DBXDirect-Treiber. DBXDynalink und DBXRemote stellen jedoch eine "indirektere" Bindung an Treiberimplementierungen bereit.

Themen

Siehe auch