Framework dbExpress
Remonter à Développement d'applications de bases de données pour la plate-forme Win32 - Index
Le framework dbExpress (framework DBX) est un ensemble de classes abstraites fournies dans l'unité DBXCommon. Les applications peuvent s'interfacer avec le framework de différentes façons : en utilisant le framework directement pour les applications natives et managées, et en utilisant les composants dbExpress VCL disposés en couches au sommet du framework pour les applications natives et managées.
Bien que de nombreuses applications s'interfacent avec les pilotes dbExpress via les composants dbExpress VCL, le framework DBX offre une option utile et légère pour communiquer avec un pilote de base de données. Vous pouvez également créer un pilote de base de données pour dbExpress en étendant les classes de base abstraites DBXCommon du framework. Le framework DBX fournit les fonctionnalités de pilote de base de données les plus courantes pour une application de base de données orientée "ensemble", ainsi qu'une interface simple.
Voici quelques fonctionnalités clés du framework DBX :
- Le framework de pilote est écrit entièrement en langage Delphi et permet aux pilotes d'être écrits en Delphi.
- Il utilise l'accès aux données fortement typées au lieu des pointeurs. Par exemple, il utilise les types chaîne à la place des pointeurs vers des chaînes.
- Le framework de pilote est à source unique. Vous pouvez compiler le source avec le compilateur DCC32 natif.
- Le framework a seulement des classes de base abstraites qui sont utilisées pour les pilotes, les connexions, les commandes, les lecteurs, et ainsi de suite.
- Le framework utilise la gestion des erreurs basée sur les exceptions, plutôt que le renvoi de codes d'erreur.
Capacités
IL existe deux catégories de pilotes qui étendent les classes dans DBXCommon : DBXDynaLink et DBXDirect. Ces pilotes diffèrent les uns des autres dans la façon dont ils sont chargés et par les capacités qu'ils fournissent à une application. Ces capacités sont détaillées par la suite.
Vous pouvez également étendre le framework DBX pour écrire des pilotes de délégation qui fournissent une couche supplémentaire entre l'application et le pilote réel. Les pilotes délégués sont utiles pour le pooling de connexion, le profilage de pilote, le traçage et l'audit. Une autre application possible de délégation de pilote est la création d'un délégué de pilote adapté aux threads. Un tel délégué peut fournir un accès synchronisé de thread à toutes les méthodes publiques.
La sécurité de thread absolue est laissée aux applications utilisant dbExpress. Toutefois, certains problèmes de sécurité de thread sont mieux gérés par le framework dbExpress. Les opérations de sécurité de thread dbExpress incluent le chargement et le déchargement des pilotes, ainsi que la création de connexions. Comme mentionné plus tôt, un pilote délégué peut être créé pour rendre l'interface publique entière de dbExpress adaptée aux threads si nécessaire.
Un pilote dbExpress 4 peut lier statiquement ou dynamiquement des pilotes construits en tant que packages Delphi. La meilleure façon de lier un package de pilote est simplement de l'inclure la clause "uses". Le chargeur de pilote charge également les packages spécifiés dans un fichier config ou ini à l'aide de la méthode LoadPackage. Cela permet un chargement dynamique des pilotes qui ne sont jamais spécifiés dans une clause uses d'une des unités de l'application. Notez que l'approche LoadPackage peut seulement être employée pour les applications construites pour utiliser des packages.
Les auteurs de pilotes dbExpress 4 doivent examiner les sections d'initialisation des unités DBXDynalink et DBXTrace dans le code source fourni avec dbExpress. Ces sections se recensent elles-mêmes avec une unité singleton appelée le ClassRegistry. Le ClassRegistry est utilisé par le chargeur de pilote dbExpress 4 pour instancier les classes chargeur de pilote par le nom (une chaîne). Le ClassRegistry est un mécanisme léger et simple pour le recensement et l'instanciation d'une classe par le nom.
Pilotes DBXDynalink
DBXDynalink est utilisé pour les pilotes dbExpress 3 existants, ainsi que pour les nouveaux pilotes. Il est compilé comme un package Delphi natif. DBXDynalink charge les pilotes dbExpress natifs qui implémentent une interface "native" plus primitive appelée DBXExports. L'interface DBXExports est une petite collection de méthodes d'exportation simples. Le source de DBXExports est inclus avec dbExpress. DBXExports fournit une API plus fortement typée que l'interface COM de dbExpress 3. Cela permet l'ajout des méthodes dans les générations de produits futures sans casser la compatibilité avec les anciennes implémentations de l'interface DBXExports.
DBXAdapter est un pilote compatible dbExpress 4 qui adapte l'interface DBXExports à l'ancienne interface COM dbExpress 3. Les nouveaux pilotes natifs peuvent être écrits en implémentant directement DBXExports.
Puisque l'interface DBXExports a été conçue pour être implémentée au moyen d'un langage natif (Delphi ou C++), elle utilise une gestion d'erreurs basée sur les exceptions plus primitive. DBXDynalink mappe les codes d'erreur en exception DBXCommon.
L'unité DBXDynalink contient un pilote dbExpress 4. Ce pilote délègue les pilotes non-Delphi qui implémentent l'interface d'exportation simple DBXDynalinkExport. DBXTrace est un pilote délégué utilisé pour le traçage. La bibliothèque VCL dbExpress utilise DBXCommon, DBXDynalink et DbxTrace comme pilotes "par défaut". Toutefois, cela peut être changé pour les applications liées statiquement sans modifier le code source dbExpress VCL (SQLExpr.pas). SQLExpr.pas utilise l'unité DBXDefaultDrivers. L'unité DBXDefaultDrivers contient seulement une clause uses. La clause uses de DBXDefaultDrivers contient DBXCommon, DBXDynalink et DBXTrace. DBXCommon doit toujours être utilisé. Toutefois, une application liée statiquement peut retirer DBXTrace et remplacer DBXDynalink par un pilote différent.
Pilotes DBXDirect
Un pilote DBXDirect est un pilote implémenté en étendant les classes de base abstraites DBXCommon. Ces classes sont écrites en Delphi pour les implémentations natives.
Strictement parlant, tous les pilotes de framework DBX sont une forme de pilote DBXDirect. Toutefois, DBXDynalink et DBXRemote fournissent une liaison plus "indirecte" aux implémentations de pilotes.