Un environnement de prototypage rapide d`applications web pour

publicité
Un environnement de prototypage rapide
d’applications web pour bases de données
Bruno Defude
Institut National des Télécommunications
9 rue Charles Fourier 91011 Evry Cedex
[email protected]
RÉSUMÉ.
Nous décrivons un environnement de prototypage rapide d'applications web pour
bases de données, qui permet à partir d'un schéma entité-association de dériver
automatiquement le schéma de bases de données équivalent et une application web.
L'environnement est constitué de trois outils qui peuvent être utilisés soit de manière
intégrée, soit isolément. Cet environnement est utilisé surtout dans un contexte
d'enseignement car il permet à des étudiants de développer très rapidement et très
simplement des applications bases de données.
MOTS-CLÉS : prototypage rapide, application web, outil pour l'enseignement des bases de
données, programmation CGI, Oracle, XML
1. Introduction
Le Web est devenu de fait la plate-forme idéale de déploiement d’applications
puisqu’il fait appel à des standards éprouvés tant au niveau protocole (HTTP), qu’au
niveau des langages de description de documents (HTML et maintenant XML).
De nombreux outils de développement sont apparus venant soit du monde web
(interprète de langages de programmation associés à un serveur HTTP comme ASP
[ASP] de Microsoft, JSP [JSP] et servlet de Java ou PHP [PHP] de la communauté
logiciel libre), soit des langages de programmation (modèle J2EE [J2EE] de Java
par exemple). Ces solutions sont puissantes et permettent de répondre en grande
partie aux besoins mais par contre ne sont pas très faciles à utiliser pour des noninformaticiens. Elles ne sont pas non plus très centrées sur les bases de données
mais plus sur l’interface utilisateur ou bien la logique applicative.
Dans le domaine des bases de données, plusieurs propositions ont été faites tant
dans le monde commercial (WebDB [WEBDB] d’Oracle par exemple), que dans le
monde académique (Strudel [FLO 00] par exemple). Enfin, il y a des outils web
d’administrations de bases de données (PHPMyAdmin [PHPMYADMIN] pour
MySQL en est un exemple) mais qui ne remplissent pas complètement nos objectifs
puisqu’ils ne permettent pas réellement de développer des applications.
Les objectifs de notre projet sont de disposer d’une suite logicielle complète
(depuis la conception des schémas de la base de données, jusqu’au code de
l’application Web qui permet de la manipuler), gratuite, modifiable, facile à
déployer et facile d’utilisation pour nos étudiants. L’application produite n’a pas
forcément vocation a être l’application finale (c’est plutôt un prototype jetable qui
permet au moins de valider le schéma de base de données). Notre approche est très
voisine de celle de WebDB, mais nous essayons d’être plus indépendant du SGBD
et notre vision de l’interaction web/SGBD est assez différente (Oracle essaye de
faire le maximum de travail dans le SGBD alors que nous préférons en sortir
certaines fonctions comme l’habillage HTML).
Le reste de l’article est structuré comme suit. La section 2 décrit l’architecture
logique de l’environnement et ses principes d’utilisation. La section 3 décrit plus
précisément les fonctionnalités de la passerelle web/SGBD. Nous tirons dans la
section 4 un bilan et les perspectives d’évolution de cet environnement.
2. Architecture logique
L’architecture logique et les principes d’utilisation de notre environnement sont
décrits dans la figure 1. Cette suite logicielle comprend trois outils intégrés :
-un outil de conception de schéma de bases de données : il permet classiquement
à partir d’un schéma Entité-Association de générer le code SQL équivalent pour un
SGBD donné (Oracle et MySQL pour l’instant) ainsi qu’une description XML de
l’application à produire exprimée dans le langage d’entrée du générateur (celle-ci
peut être modifiée par le programmeur car elle ne correspond pas forcément à ses
besoins). Le code SQL peut être interprété sur le SGBD par n’importe quel
interprète SQL. Cet outil est implanté en langage Java et Swing. La représentation
interne des schémas se fait en XML, ce qui permet de faire la génération de code
SQL par des feuilles de style XSLT (cela permet d’ajouter facilement de nouvelles
cibles). ;
Editeur Entité-Association
Description
XML
Générateur
d’application
A1
E1
E2
Schéma BD
En SQL
Formulaires
HTML+JS
HTTP-CGI
HTML
Serveur
HTTP
Passerelle
web/SGBD
Client (navigateur web)
SGBD
Serveur
Figure 1 : Architecture logique et principes d’utilisation
-une passerelle gérant l’interface avec le SGBD qui permet l’interprétation d’une
ou plusieurs requêtes SQL et l’habillage HTML du résultat produit ;
-un générateur d’applications web qui, à partir d’une description XML de
l’application, construit les formulaires HTML s’interfaçant avec la passerelle. Ces
formulaires vont pouvoir être stockés sur n’importe quelle machine (pas
nécessairement celle où se trouve le SGBD) et interprétés par des navigateurs web
supportant le langage Javascript. Le générateur est développé en langage Java en
utilisant l’interface de programmation JAXP qui permet de manipuler des
documents XML.
3. Passerelle web/SGBD
Son rôle est d’interpréter une ou plusieurs requêtes SQL sur le SGBD et de
renvoyer le résultat récupéré habillé en HTML. L’interprétation des requêtes SQL se
fait dans la même transaction. L’originalité de cette passerelle réside dans le
paramétrage assez poussé qu’elle permet au niveau de l’habillage HTML. L’idée
consiste à utiliser le dictionnaire de données pour obtenir de l’information utile pour
la génération. Par exemple, simplement à partir du nom d’une relation on peut
générer un formulaire permettant l’insertion d’un tuple dans cette relation.
Pour l’instant la passerelle est implantée sous forme d’un programme de type
CGI écrit en langage C en utilisant l’interface de programmation Pro*C d’Oracle.
Du côté client, la passerelle se programme via un ensemble de variables dont le nom
est fixé (par exemple UID pour la chaîne de connexion Oracle, SQLSTATEMENT
pour les instructions SQL que l’on veut interpréter, …).
Pour augmenter les fonctionnalités de la passerelle, nous avons introduit
plusieurs modes d’interaction :
-mode normal : la passerelle interprète les instructions SQL et habille le résultat
en HTML ;
-modes insertion/suppression/mise à jour : la passerelle génère un formulaire
HTML et du code Javascript permettant l’insertion/suppression/mise à jour d’un
tuple dans une relation donnée en paramètre ;
-mode QBE : la passerelle génère un formulaire HTML et du code Javascript
permettant l’interrogation de type QBE d’une relation donnée en paramètre ;
-mode hypertexte : la passerelle interprète les instructions SQL et s’il s’agit de
requêtes de type SELECT, elle génère pour chaque valeur de clé étrangère un
formulaire qui va permettre l’accès au tuple pointé par la clé. Ce mode permet de
naviguer «à la hypertexte » dans une base de données via les clés étrangères ;
-mode copie : la passerelle interprète une requête de type SELECT et génère
pour chaque valeur retournée un formulaire qui permet la recopie de cette valeur
dans une variable du formulaire. Ce mode permet la construction de menus
déroulant dont les valeurs sont extraites de la base de données.
4. Bilan et perspectives
Cet environnement de prototypage est complètement opérationnel et a été utilisé
dans de nombreux projets d’élèves de l’INT depuis maintenant plusieurs années.
Nous avons, par exemple, développé un interprète SQL entièrement web qui nous
permet de ne plus utiliser de produits comme sqlplus d’Oracle. Nous l’utilisons
aussi dans le cadre de travaux pratiques et il permet de faire réaliser aux élèves une
application base de données dans un délai très court (3 à 6 heures). Il est également
utilisé dans le cadre d’applications de gestion internes à l’INT. Il est disponible sur
simple demande auprès de l’auteur pour les établissements d’enseignement
supérieur. Les évolutions les plus importantes en cours traitent de l’indépendance
vis à vis du SGBD. La passerelle est en cours de re-développement sous forme de
servlet Java ce qui va permettre de pouvoir sélectionner son SGBD, d’avoir une
gestion des connexions au SGBD plus efficace et du multithreading.
Un autre travail en cours consiste à donner une implantation sous forme de JSP
(Java Server Page) à la passerelle. Dans ce contexte, nous proposons de définir une
bibliothèque de balises spécialisées (taglib pour JSP) encapsulant les principaux
modes d’interaction de la passerelle. Ceci doit permettre une programmation de
pages JSP beaucoup plus facile, tout en gardant l’avantage des JSP de mieux
pouvoir gérer l’habillage HTML.
Remerciements
L’implantation de cet environnement a été réalisée en partie par de nombreux
projets d’élèves de l’INT que nous tenons à remercier pour le travail réalisé.
Bibliographie
[ASP] http://msdn.microsoft.com/asp
[FLO 00] D. Florescu, I. Manolescu, A. Levy, D. Suciu « Declarative Specification of Web
Sites with Strudel », VLDB Journal, Vol 9, No 1, 2000
[J2EE] http://java.sun.com/products/j2ee
[JSP] http://java.sun.com/products/jsp
[PHP] http://www.php.net
[PHPMYADMIN] http://sourceforge.net/projects/phpmyadmin
[WEBDB] http://otn.oracle.com/products/webdb/content.html
Téléchargement