Tout d'abord commençons par définir la base de données. Pour cet exemple, nous avons juste besoin de données postales et téléphoniques. La structure sera donc très simple :

ScemaBDDAnnuaire

Le SGBD employé ici sera Firebird, mais vous pouvez bien entendu créer ces tables dans tout autre SGDB accessible depuis Delphi.

Bien, entrons dans le vif du sujet et créons notre projet Delphi. Pour cela dans le dialogue de création de projet, choisissons un projet de type 'Intraweb Application Wizard' :

TutoAnnuaire

L'écran suivant propose de sélectionner le type d'application Intraweb que nous voulons créer ainsi que les options associées :

TypeProjet

Nous pouvons effectivement créer trois types d'applications avec Intraweb :

  • Standalone Application : notre application sera sous la forme d'un exécutable autonome, Celui-ci embarque un serveur web et ne nécessite par conséquent la présence ni de IIS ni d'Apache.
  • Service Application : idem type précédent, mais ici notre application s'installera sur un serveur sous forme de service windows
  • ISAPI Extension : ici il sera créé une extension ISAPI Pour IIS ou un SO pour Apache

Parmis les principales options nous pouvons choisir ;

  • Pool Datas Connections : Permet de récupérer les modules de données à la fin d'une session pour les réattribuer aux nouveaux utilisateurs et gagner ainsi le temps de création.
  • Create User Session : prise en charge de la gestion utilisateur, ce qui est un des gros avantages de ce framework, nous y reviendrons très bientôt plus en détail dans un autre post.
  • Cible de l'application : HTML 4.0, 3.2, pda

Nous choisissons donc pour l'exemple de faire une application standalone, générant du html 4.0 et gérant les sessions. Nous précisons bien entendu le nom du projet et son emplacement. Après validation de nos choix, le projet est créé dans l'EDI de Delphi. Regardons maintenant ce qui a été créé : nous pouvons voir 3 unités. Tout d'abord l'unité ServerController.pas qui va être le point d'entrée de toute session et qui va permettre de toucher les paramètres du serveur. Ensuite un formulaire Unit2.pas a été créé, ce sera le premier formulaire de l'application et celui qui sera affiché par défaut si nous laissons les choses ainsi. Enfin la dernière untié, UserSessionUnit.pas est en fait un module de données qui est propre à chaque session. C'est ici que nous devons mettre les objets non visuels nécessaire à notre application. Nous y mettons donc les composants d'accès à la base de de données. La base de données sous-jacente chez moi étant Firebird j'ai choisis d'utiliser les excellents composants UIB, mais j'aurai très bien pu prendre une autre couche d'accès. Voici donc mon datamodule :

DataModule

On y trouve une connexion (cnxAnnuaire), une transaction( TransacAnnuaire), un Query (qryAnnuaire) et un Datasource (dsAnnuaire). Allons sur le Query et rentrons la requete SQL nécessaire à notre annuaire :

Requete

Enfin tapons un peu de code en ajoutant la fonction qui va être nécessaire à la recherche :

 procedure TIWUserSession.Search(aName: string);
 begin
   qryAnnuaire.Close;
   qryAnnuaire.Params.ByNameAsString[ 'NOM'] := aName + '%';
   qryAnnuaire.Open;
 end;

Voilà, nous fermons la connexion pour le cas où nous aurions déjà fait une recherche, nous valorisons le paramètre de la requête et nous l'executons. C'est tout.

Maintenant interessons nous au formulaire. Cela va se passer dans l'unité Unit2.pas. Là nous allons faire comme dans toute application Delphi traditionnelle, c'est à dire que nous allons construire le formulaire en déposant des composants visuels correspondant à chaque éléments nécessaires : une zone de saisie pour que l'utilisateur tape sa demande, un bouton pour lancer la recherche et une grille pour présenter le résultat. Bien entendu il ne faut pas utiliser les composants classique de la VCL, il faut les choisir dans les onglets Intraweb (IWxxx). Voici ce que cela donne :

Formulaire

Il ne nous reste plus qu'à ajouter le datamodule dans les uses de notre formulaire, de relier le datagrid au datasource et enfin à coder l'action sur le bouton Search :

 procedure TIWForm2.btnSearchClick(Sender: TObject);
 begin
   UserSession.Search( edtSearch.Text);
 end;

Lançons l'execution avec le traditionnel F9, nous obtenons cette fenêtre :

Executer

Ceci est en fait un serveur web. Nul besoin donc de IIS ou de Apache pour tester/déboguer notre petite application. Nous verrons dans un prochain post cette fenêtre plus en détail, mais pour le moment, contentons nous de refaire une deuxième fois F9. A ce coup ci le navigateur s'ouvre et nous pouvons faire une recherche.

Voici le résultat :

Resultat

Voilà, nous venons de réaliser en une requête SQL et 4 lignes de code un petit annuaire simpliste !! Certe il n'est pas joli, disons qu'il est brut de fonderie. Mais nous verrons très bientôt comment le rendre beaucoup plus joli très simplement..

En résumé donc, Intraweb est un framework bien sympathique car simple, puissant et très pratique : nous disposons du même environnement de développement que pour nos applications windows et nous pouvons les débogguer de la même façon, et rien que ça c'est un gros avantage. Et ce n'est pas tout, nous verrons au fil des posts à venir qu'il y a d'autres avantage à Intraweb.