IVXI 11. 11Développement d applications clientes Internet et intranet



Documents pareils
Gestion de stock pour un magasin

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Module BD et sites WEB

Architectures web/bases de données

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

< Atelier 1 /> Démarrer une application web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

ASP 3.0 Professionnel

De quoi avez-vous besoin pour ce manuel?

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Attaques applicatives

K?ellaWeb Saisie des absences, retards et sanctions APLON en mode Web

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

Reporting Services - Administration

Administration Centrale : Opérations

1. Des chartes graphiques homogènes, élégantes, créatives

Introduction à Microsoft InfoPath 2010

Programmation Web. Madalina Croitoru IUT Montpellier

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Créer et partager des fichiers

Votre site Internet avec FrontPage Express en 1 heure chrono

L accès à distance du serveur

Sessions en ligne - QuestionPoint

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Création de formulaires interactifs

Compte Rendu d intégration d application

Module 1 : Tableau de bord Excel * 2010 incl.*

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

COURS WINDEV NUMERO 3

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Création d un site Internet

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Le serveur web Windows Home Server 2011

Guide d installation BiBOARD

Notes de cours : bases de données distribuées et repliquées

Bases de données et Interfaçage Web

LES ACCES ODBC AVEC LE SYSTEME SAS

Dans cette Unité, nous allons examiner

Mise en œuvre des serveurs d application

SQL Data Export for PS/PSS

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Pré-requis pour les serveurs Windows 2003, Windows 2008 R2 et Windows 2012

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

La base de données XML exist. A. Belaïd

INTERCONNEXION ENT / BCDI / E - SIDOC

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

WebSpy Analyzer Giga 2.1 Guide de démarrage

BIRT (Business Intelligence and Reporting Tools)

Business Intelligence avec SQL Server 2012

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

CHAPITRE 11. Temps réel Remy Sharp

Comment accéder à d Internet Explorer

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Surveiller et contrôler vos applications à travers le Web

Administration de systèmes

Documentation Honolulu 14 (1)

Mettre en place un accès sécurisé à travers Internet

FileMaker Server 12. publication Web personnalisée avec XML

Bien architecturer une application REST

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

Créer le schéma relationnel d une base de données ACCESS

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

TP Contraintes - Triggers

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

INTERCONNEXION ENT / BCDI / E - SIDOC

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Installation de SCCM 2012 (v2)

HP StorageWorks All-in-One Storage Manager Manuel de l utilisateur

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Créer un rapport pour Reporting Services

Formulaires et Compteurs

Vulnérabilités et sécurisation des applications Web

FileMaker Server 14. Guide de démarrage

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

LIVRE BLANC. Guide des fonctionnalités. Aperçu des avantages et des fonctions.

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Styler un document sous OpenOffice 4.0

Tutorial Terminal Server sous

TP JAVASCRIPT OMI4 TP5 SRC

Assistance à distance sous Windows

2011 Hakim Benameurlaine 1

Groupe Eyrolles, 2003, ISBN : X

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Windows Server 2008 R2

SQL Server Installation Center et SQL Server Management Studio

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Microsoft Application Center Test

Utiliser le portail d accès distant Pour les personnels de l université LYON1

Transcription:

IVXI 11 11Développement d applications clientes Internet et intranet Le web a poussé le client-serveur d une façon spectaculaire. Entre la première version de HTML et l utilisation qui en est faite aujourd hui, se sont écoulées seulement quelques années. Personne ne songe aujourd hui à concevoir un site Internet ou intranet statique, à moins d avoir réellement peu de choses à dire, ou que ces choses n évoluent pas. Les bases de données relationnelles se sont imposées aujourd hui comme le meilleur endroit où stocker les informations à destination des sites web. Dans cette course au stockage, SQL Server n est pas resté de marbre. Dès la version 6, Microsoft a proposé un assistant et des procédures stockées d exportation de données vers le Web. Avec les technologies ADO, RDS et ASP, les données de SQL Server peuvent être mises en ligne de manière simple et rapide. Bref, SQL Server se présente comme une solution économique et performante de stockage des informations d un site Web. Dans ce chapitre, nous allons explorer la création d un site Internet, avec SQL Server en arrière-plan. Nul besoin d être programmeur HTML, ou de connaître ce langage, pour lire ce chapitre. Pour tout vous avouer, mes connaissances de HTML se limitent à quelques balises, guère plus. Les logiciels de mise en page, tels que Microsoft FrontPage ou autre, permettent de se passer de cet apprentissage, somme toute assez simple.

590 Développer une application SQL Server PARTIE IV Nous allons donc nous concentrer sur le code ASP/ADO/RDS à écrire au sein du HTML, pour assurer la connexion à SQL Server, la récupération et la mise à jour des données qui s y trouvent. Puis nous verrons comment tirer le meilleur parti de l assistant Web SQL Server, plus sophistiqué qu on ne le croirait de prime abord. Un peu de client-serveur Si vous avez lu ce livre jusqu à maintenant, tout d abord, soyez-en remercié, mais de plus, le concept de développement multiniveau vous est familier. Par principe, une application web est du type client-serveur à trois niveaux, au minimum. Figure 11 1 Modèle à trois niveaux pour le Web Alors que dans une application traditionnelle à deux niveaux, la logique de l application est répartie entre le serveur (procédures stockées, vues, déclencheurs) et le client (application cliente), dans une application web, le client est par définition «léger» : il s agit d un simple navigateur Internet, sans grande intelligence, si ce n est celle d afficher correctement du code HTML et parfois, d interpréter des applets Java ou des composants ActiveX. L intelligence de l application se trouve donc sur le serveur Internet.

Développement d applications clientes Internet et intranet CHAPITRE XI 591 Le serveur Internet, comme on le voit à la figure 11 1, est chargé du stockage des fichiers HTML, mais aussi de l exécution du code qui permet la connexion au serveur de données, la récupération et la mise à jour des données. Jusqu à il y a cinq ans environ, cette «intelligence» programmatique était réalisée à l aide de scripts CGI. Pas toujours simples d utilisation, ni souples, les langages de développement web permettaient cependant d effectuer toutes les opérations nécessaires à la récupération de données provenant d un SGBDR. Microsoft, avec Internet Information Server (IIS), allait offrir une alternative à CGI sous la forme de ISAPI, une API qui communiquait avec «l étranger» des serveurs web. À cette époque, les technologies de connexion aux bases de données étaient en pleine évolution et Microsoft se devait d en tenir compte, pour offrir une solution plus simple que ISAPI. Pour en savoir plus ISAPI et OLEISAPI sont décrites en détail dans un ouvrage remarquable : Interface entre Web et Bases de données sous Windows NT de Alex Homer, et al., publié aux Éditions Eyrolles. Vous y trouverez un historique et un tour d horizon complet de toutes les technologies de connexion aux bases de données, depuis un serveur web. Avec IIS 3 sont apparues les Active Server Pages (ASP), ou pages dynamiques, qui permettent d incorporer, dans le code source HTML, du code JavaScript ou Visual Basic Script (VBScript). Ce code, exécuté par le serveur, peut déployer toutes, ou presque, les possibilités de langages comme Java ou Visual Basic. Il devient alors simple de se connecter aux bases de données avec une méthode classique, par exemple les ADO et OLE-DB. De son côté, SQL Server ne s est pas arrêté de vivre et a offert lui-aussi des méthodes de connexion à Internet. Bref, au cours des six dernières années, sont apparus sept moyens de développer des pages web dynamiques, avec SQL Server pour source de données, soit, à peu près chronologiquement : les scripts CGI ; ISAPI et OLEISAPI ; Microsoft dbweb ; Internet Database Connector (IDC) ; Active Server Pages (ASP) et les ActiveX Data Objects (ADO) ; Remote Data Services (RDS, initialement appelé Active Data Connector) ; ASP.Net et ADO.Net ; L assistant Web SQL Server.

592 Développer une application SQL Server PARTIE IV Voilà une belle brochette de choix. dbweb et IDC sont des «technologies» qui n ont pas dépassé leur premier anniversaire. Intrinsèquement limitées, elles ont été supplantées par les ASP. Les seules méthodes aujourd hui réellement intéressantes sont les ASP/ADO/RDS, en attendant une version finale de ASP.Net, et l assistant Web SQL Server, qui retiendront toute notre attention dans ce chapitre. En fait, ces deux méthodes sont issues de deux façons de concevoir la mise à jour d un site Internet : le «Push» ou le «Pull». Les modèles push/pull Le push/pull, c est un peu comme les abonnements extraits ou envoyés en réplication : soit les données sont envoyées au serveur web (Push), soit le serveur web va chercher les données (Pull). Figure 11 2 Modèles Push/Pull Avec les ASP, le code présent dans la page gère la connexion au serveur de données et la récupération ou la mise à jour des données. Avec l assistant Web, SQL Server envoie les données au format HTML vers le serveur web. Chacune de ces deux méthodes a ses détracteurs.

Développement d applications clientes Internet et intranet CHAPITRE XI 593 Voici un tableau de comparaison des principaux avantages et inconvénients des deux méthodes, qui peuvent coexister, car elles ne répondent pas aux mêmes besoins. Tableau 11 1 Avantages et inconvénients des méthodes ASP.Net, ASP et Assistant Web Méthode Avantages Inconvénients ASP.Net/ADO.Net Très grande souplesse. Avantages de base du modèle ASP. Choix du langage. Performances. Mode déconnecté par défaut. Code compilé. Installation du.net framework sur le serveur Web. ASP/ADO/RDS Grande souplesse. Possibilité d utiliser procédures stockées et vues pour limiter l accès aux données. Possibilité d utiliser un serveur transactionnel avec des objets métier servant aux applications traditionnelles. Site réellement dynamique. Possibilité de mettre des données en cache sur le client. Connaissance de HTML requise pour faire des pages performantes. Pages HTML/ASP plus difficiles à maintenir. La connexion directe à SQL Server implique qu il soit en permanence disponible. La sécurité du serveur SQL doit être correctement étudiée et mise en place. La charge des serveurs web et SQL augmente en raison de l exécution des scripts et de l accès aux données. Assistant Web Simplicité. Possibilité d utiliser des pages modèle. Aucune connaissance de HTML requise. La charge du serveur de base de données est faible. Les pages sont statiques. Seuls des tableaux peuvent être affichés. Les technologie ASP.Net et ASP (Pull) sont à utiliser pour les pages qui ont besoin d être réellement dynamiques, comme celles qui affichent le résultat d une recherche ou les nouveautés de la société, ou celles qui permettent à l utilisateur de saisir des informations le concernant. L Assistant Web (Push), couplé à des déclencheurs ou à une planification d actualisation, convient bien aux listes de produits, d employés, ou à toute autre information qui peut apparaître sous forme tabulaire. Il vaut mieux utiliser des pages modèles si l on souhaite réaliser un site homogène.

594 Développer une application SQL Server PARTIE IV Dans les pages suivantes, nous allons détailler le développement d un site à l aide des ASP et des ADO, puis d ASP.Net et enfin le travail de personnalisation des pages issues de l assistant Web. Lire auparavant le chapitre 10, et surtout la partie relative aux ADO et à ADO.Net : même si les syntaxes sont ici légèrement différentes (pour ADO particulièrement), cela vous permettra de comprendre toutes les subtilités de cette méthode d accès aux données. Configurer le site web Un explorateur Internet est capable d ouvrir directement un fichier HTML. En revanche, un fichier ASP a besoin d être interprété pour être correctement ouvert. Il faut donc configurer le serveur Internet pour qu il puisse donner un accès correct aux fichiers ASP. Internet Information Server 5.0 est l un des outils disponibles pour ce faire. Il suffit de configurer un répertoire virtuel, afin de pouvoir accéder aux fichiers avec le protocole HTTP. Pour créer un nouveau site web ou ajouter un répertoire virtuel à un site existant, on lance Microsoft Management Console ou le Gestionnaire de Service Internet. Il faut d abord s assurer que le service World Wide Web est lancé. Important Internet Information Server est livré avec trois services : WWW, FTP et Gopher. Pour ce que nous allons voir, seul World Wide Web est utile. Pensez à arrêter tous les services dont vous n avez pas l utilisation : cela vous fera gagner quelques méga-octets de mémoire. Pour définir le répertoire virtuel, faire un clic droit sur le site web par défaut et choisir Nouveau, puis Répertoire virtuel, et se laisser guider par l assistant pour renseigner : le nom d alias : le nom avec lequel le répertoire du serveur va être référencé depuis l explorateur Internet ; le choix du répertoire physique contenant les fichiers du site web ; l autorisation d exécution des scripts. Dès que l on clique sur le bouton Terminé, l Assistant définit le nouveau répertoire virtuel. On peut en vérifier les paramètres (figure 11 3) en cliquant dessus avec le bouton droit de la souris et en choisissant Propriétés. Si l on envisage de mettre des pages ASP dans ce répertoire, il est primordial d accorder l autorisation d exécuter des scripts. Sans quoi, le serveur web renverra les fichiers tels quels et le code s affichera en clair dans l explorateur, sans être interprété.

Développement d applications clientes Internet et intranet CHAPITRE XI 595 Figure 11 3 Propriétés d un répertoire virtuel Normalement, la page d accueil d un site Internet géré par IIS s appelle DEFAULT.HTM, DEFAULT.ASP ou IISSTART.ASP. Si l on préfère utiliser un autre nom pour la page d accueil (INDEX.HTM ou MAPAGEDACCUEIL.ASP, par exemple), il faut le définir dans l onglet Documents de la boîte des Propriétés du répertoire (figure 11 4). Figure 11 4 Définition du nom de la page d accueil Le site Internet est alors prêt à fonctionner. Reste à en concevoir le contenu

596 Développer une application SQL Server PARTIE IV Une introduction aux ASP Active Server Pages est un monstre qui mérite un ouvrage complet : certains, excellents, lui ont d ailleurs été consacrés, dont vous trouverez les références à la fin du chapitre. Dans cette partie, nous allons nous intéresser à l utilisation conjointe des ASP et des ADO/RDS, pour accéder à une base de données SQL Server. Néanmoins, pour comprendre le mode de fonctionnement général des ASP, une introduction détaillée s impose. Principe de fonctionnement Les ASP sont partie intégrante d Internet Information Server, depuis sa version 3. Ils ne se limitent pas à la connexion aux bases de données, mais offrent plutôt un environnement de scripts serveur, c est-à-dire la capacité d interpréter et d exécuter des portions de code écrites en VBScript, JavaScript, ou tout langage dont on possède un interpréteur, et de référencer des objets extérieurs à IIS. En résumé, les ASP apportent un aspect dynamique aux pages HTML statiques. Figure 11 5 Principe de fonctionnement d ASP et de la connexion à SQL Server En ce qui concerne la connexion à une base de données, le principe de fonctionnement des ASP est le suivant :

Développement d applications clientes Internet et intranet CHAPITRE XI 597 1. le client référence une URL qui désigne un fichier ASP ; 2. le serveur analyse la demande et découvre qu il s agit d un fichier ASP : il appelle alors l interpréteur adéquat pour exécuter les portions de script que contient le fichier ; 3. la requête est envoyée pour exécution au serveur à l aide des ADO et d OLE-DB ; 4. SQL Server traite la requête et renvoie le résultat ; 5. l interpréteur de script met en forme les résultats en suivant les directives du code ; 6. le serveur web renvoie à l explorateur client le résultat HTML et les scripts à exécuter éventuellement sur le client. Par défaut, IIS accepte les scripts écrits en JavaScript et en VBScript. On peut cependant utiliser d autres langages de script, comme le langage PERL par exemple, puisque les ASP autorisent l utilisation d autres interpréteurs. Scripts serveur et scripts client Une page ASP contient trois éléments : du texte ; des balises HTML ; des scripts. Dans la catégorie des scripts, il en existe trois types : scripts exécutés sur le serveur, au moment de la création de la page ; scripts, sous forme de procédures ou de fonctions, exécutés sur le serveur ; scripts exécutés sur le client, au moment de l interprétation de la page par l explorateur. Un script exécuté sur le serveur au moment de la création de la page est encadré par les balises <% et %>. <% If txtmontant > 1000 Then %> Nous vous offrons le transport! <% Else %> Le transport s élève à 10% du montant de la commande <% End If %>

598 Développer une application SQL Server PARTIE IV Dans cet exemple, les lignes 1, 3 et 5 contiennent le code à exécuter et les lignes 2 et 4 le texte à afficher en fonction du test. La page va donc être un savant mélange de portions de script, de texte et de balises HTML. Un outil, tel Visual Interdev, vous aidera à y voir clair, en utilisant des couleurs qui distinguent balises, textes et scripts. Il se peut que vous ayez à écrire des routines génériques réutilisables. Dans ce cas, elles doivent être introduites par une balise <SCRIPT>, comme dans l exemple suivant : <SCRIPT LANGUAGE=VBScript RUNAT=Server> Function PrixEuro(curPrixFF As Currency) As Currency PrixEuro = curprixff / 6.55957 End Function </SCRIPT> La fonction décrite dans cette portion de code pourra alors être appelée n importe où dans une même page, comme s il s agissait de code standard : <% curprixeuro = PrixEuro(txtPrixFF) %> Enfin, on peut écrire des portions de scripts qui vont s exécuter sur le client. Dans l exemple précédent de script serveur, on remarque l utilisation de la commande RUNAT=Server : si on l omet, cela indique que le script est destiné au client car, par défaut, un script ASP s exécute sur le client. Important Les scripts serveurs peuvent être écrits dans le langage que l on souhaite. En revanche, il est préférable d écrire les scripts client en JavaScript, car il est mieux supporté que VBScript par les navigateurs et autres explorateurs. Un script client s introduit donc comme un script serveur sans la commande RUNAT, comme ceci : <SCRIPT LANGUAGE=javascript>... </SCRIPT> Enfin, un développeur «classique» a l habitude de générer un fichier exécutable de l application : ici, que nenni. La notion même d exécutable n existe pas : une application web est formée de l ensemble des fichiers ASP, HTML, etc. qui se trouvent dans le répertoire virtuel déclaré.

Développement d applications clientes Internet et intranet CHAPITRE XI 599 Fonctions, procédures, variables, constantes et objets globaux Dans une application standard, tout développeur à l habitude d appeler des bibliothèques de fonctions. Par exemple, le calcul de la conversion Francs/ Euros peut avoir été défini une fois pour toutes. On a deux possibilités avec les ASP pour partager les mêmes fonctions : soit un composant ActiveX, soit un fichier de script que l on inclut dans la page ASP (ces «inclusions» de document sont aussi appelées SSI, Server-Side Include). Pour ma part, je trouve la seconde solution souvent plus simple. On écrit un fichier, comme s il s agissait d un fichier ASP moins le code HTML puis on l inclut avec la commande #include, comme dans l exemple suivant : <!-- #include file = "monfichier.inc" --> Cette ligne incorpore le contenu du fichier MONFICHIER.IDC dans le fichier ASP. Le chemin d accès au fichier doit être relatif au répertoire virtuel contenant la page ASP. Si ce fichier se trouve dans un autre répertoire virtuel, il faut utiliser la syntaxe suivante : <!-- #include virtual = "/messcripts/monfic.inc" --> qui incorpore le contenu du fichier MONFIC.INC se trouvant dans le répertoire virtuel MESSCRIPTS. Avec ces deux directives, on peut partager des fichiers de fonctions ou de constantes. Parmi les fichiers le plus souvent inclus figurent ADOVBS.INC et ADOJAVAS.INC qui contiennent les constantes globales des ADO, comme adopenkeyset ou adlockbatchoptimistic (cf. chapitre précédent) : ils sont à inclure dans les pages ASP qui utilisent les ADO. Les variables, constantes et objets globaux se déclarent de plusieurs façons. La première consiste à s appuyer sur les objets Session et Application du modèle objet ASP (voir «Le modèle objet des ASP», page 600) ; la seconde, à utiliser le fichier GLOBAL.ASA et à s appuyer sur le modèle objet des ASP En fait, le fichier GLOBAL.ASA est l équivalent d une commande #include, puisqu il contient des procédures et des références globales, partagées par toutes les pages d une application. Il définit les fonctions événementielles de démarrage et de fin de session ou d application (voir les pages suivantes) et les objets utilisés dans toutes les pages de l application. L approche d un script ASP peut sembler un peu confuse. Le schéma de la figure 11 6, page 600, qui s inspire de l un de ceux de l ouvrage Interface entre Web et bases de données sous Windows NT [6], permet de distinguer tous les types de scripts et d inclusions d objets ou de code.

600 Développer une application SQL Server PARTIE IV Figure 11 6 Page ASP et global.asa Enfin, étudions le modèle objet des ASP pour mieux comprendre l implication des déclarations et la portée des variables, constantes et objets. Le modèle objet des ASP Comme la majeure partie des «objets» programmables, les ASP possèdent leur propre modèle objet. Il s agit du regroupement de sept objets, qui président aux destinées d une application web ASP : Server : permet d accéder aux méthodes et propriétés du serveur. Application : définit une application ASP, c est-à-dire l ensemble des fichiers et répertoires d un répertoire virtuel. Cet objet permet de définir des variables globales communes à tous les utilisateurs d une même application, par exemple un compteur de hit. Session : définit une session utilisateur. Une session est démarrée dès qu un utilisateur référence pour la première fois une page de l application. Elle se termine au bout de 10 minutes d inactivité de l utilisateur, à moins que cette valeur n ait été redéfinie ou que la session ait été terminée volontairement dans le code au moyen de la méthode Abandon.

Développement d applications clientes Internet et intranet CHAPITRE XI 601 Figure 11 7 Modèle objet ASP Important La notion de Session est intimement liée à celle de cookie. Si l explorateur Internet de l utilisateur n accepte pas les cookies, une nouvelle session sera démarrée chaque fois qu il ouvrira une page de l application! Request : contient les requêtes utilisateur, c est-à-dire les éléments envoyés par l explorateur au serveur. Response : contient la réponse envoyée à l utilisateur de l explorateur. ObjectContext : utilisé conjointement avec Microsoft Transaction Server, permet de valider ou d annuler une transaction initiée par l utilisateur. ASPError : définit les paramètres de la dernière erreur survenue dans le code ASP, avant que la page ne soit envoyée au client. Ces différents objets n ont pas réellement de liens entre eux, si ce n est la Session qui fait partie d une Application. L intérêt de ce modèle objet est qu il donne accès à tous les éléments du serveur et de l interaction clientserveur, depuis du code Java ou Visual Basic. Il devient alors très simple d intercepter les demandes de l utilisateur, de les interpréter et de lui renvoyer une réponse cohérente. Nous allons les retrouver tout au long des exemples qui suivent. Ces bases étant posées 1, passons maintenant au travail avec les ADO et la connexion à SQL Server. 1. Pour plus de détails sur les différents objets des ASP, se reporter aux ouvrages dont les références sont indiquées à la fin du chapitre.

602 Développer une application SQL Server PARTIE IV ADO, RDS et ASP ADO n est que l un des composants utilisables par les ASP. Il permet à des scripts de se connecter à un serveur de données, de l interroger, de récupérer et de mettre à jour des données. En fait, il y a deux façons de lier une page web à des données SQL Server : avec ou sans RDS. RDS (Remote Data Services) est une surcouche d ADO qui offre au client la capacité de parcourir les données, presque sans programmation. Comparons les deux approches pour bien comprendre le mode de fonctionnement de l une et de l autre. Figure 11 8 ADO sans et avec RDS ADO à lui seul permet la connexion, la récupération et la mise à jour des données. Ensuite, tout fonctionne à l aide de scripts et de HTML. C est-à-dire que si l on souhaite écrire une application permettant, par exemple, de se déplacer d enregistrement en enregistrement, il faudra s appuyer sur les méthodes d ADO pour y parvenir. Alors qu ADO travaille en totalité sur le serveur, RDS se déploie à la fois sur le client et sur le serveur. Le composant client (appelé RDS.DataControl) est une sorte de contrôle de données invisible il ressemble un peu à l ADODC rencontré au chapitre précédent qui va permettre de lier des contrôles aux champs d un Recordset qui aura été créé et dont les données auront été récupérées par le composant serveur (appelé RDS.DataFactory). Il est possible de créer ses propres composants serveur et de les relier au RDS.DataControl. En

Développement d applications clientes Internet et intranet CHAPITRE XI 603 fait, RDS est un moyen d envoyer un Recordset sur le client pour que celui-ci le traite comme bon lui semble, sans que des allers-retours sur le réseau soient nécessaires. RDS est, comme le contrôle de données ADO, d une utilisation beaucoup plus simple qu ADO seul. Nous terminerons donc cette partie par un petit air sur RDS («Remote Data Services», page 619). Important Le code ADO utilisé dans les pages ASP est très proche voire, par moment, totalement équivalent à celui que l on utilise dans Visual Basic. Lire le chapitre précédent, tout particulièrement la partie consacrée aux ADO pour avoir une idée assez précise de leur fonctionnement, de leur modèle objet Sachant, que nous ne revenons pas ici sur ces notions! Ouvrir et fermer une connexion La création d une connexion se fait en trois temps : la déclaration de la variable ; la définition des paramètres de la connexion ; l ouverture de la connexion. Les paramètres de la connexion constituent le cœur de sa définition. Examinons la portion de code suivante : <% set cn = Server.Createobject("ADODB.Connection") cn.provider = "SQLOLEDB" cn.connectionstring = "Data Source=GODZILLA;" & _ "Initial Catalog=Pubs;" cn.open userid:="sa", password:="" %> La première ligne définit et instancie la variable cn de type Connection. La seconde indique le nom du fournisseur OLE-DB à employer. SQLOLEDB est le nom du fournisseur de SQL Server. La troisième ligne donne une partie de la chaîne de connexion : Data Source définit le nom du serveur et Initial Catalog le nom de la base de données à utiliser. Enfin, on ouvre la connexion en indiquant le nom d utilisateur et le mot de passe. La connexion est alors ouverte et disponible. Quand on n en a plus besoin, on la ferme et on supprime l instance de l objet :

604 Développer une application SQL Server PARTIE IV <% cn.close Set cn = Nothing %> Si l on ne supprime pas les références de l objet, le serveur s en chargera, car à la fermeture de la Session, tous les objets référencés sont supprimés. Dans les exemples précédents, la connexion est locale dans la page. Si l on souhaite utiliser la même connexion de page en page, par exemple pour parcourir plusieurs tables, il faut la déclarer dans le fichier GLOBAL.ASA, dans l événement Session_OnStart : <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Session_OnStart Set cn = Server.CreateObject("ADODB.Connection") cn.provider = "SQLOLEDB" cn.connectionstring = "Data Source=GODZILLA;" & _ "Initial Catalog=Pubs;" cn.open userid:="sa", password:="" Set Session("cnsession") = cn End Sub Sub Session_OnEnd cn.close Set cn = Nothing End Sub </SCRIPT> À partir de là, l objet cn est disponible. Pour garantir sa disponibilité pendant toute la session, une autre variable cnsession est définie grâce à l objet Session. Pour récupérer l objet cn dans les pages, il suffira de faire référence à Session("cnsession"). Revenons quelques instants sur les propriétés de la connexion. Le nom de l utilisateur et son mot de passe ont été passés «en dur» et, qui plus est, on a utilisé le compte de l administrateur système, ce qui n est pas forcément une bonne idée pour un site Internet. Via une connexion Internet, un utilisateur peut employer une connexion anonyme ; il peut aussi avoir besoin d accéder à certaines parties protégées du site, un Extranet par exemple. Dans ce cas, on doit mettre en place une sécurité autre qu un codage en dur dans l application. Il y a deux solutions simples : la demande d ouverture de session : le serveur web envoie une demande d identification dès la première page ;

Développement d applications clientes Internet et intranet CHAPITRE XI 605 le mode intégré : l utilisateur anonyme rentre suivant un accès SQL prédéfini dans SQL Server ; celui qui aura ouvert une session au préalable entre avec son nom d accès. Pour en savoir plus Pour en savoir plus sur les modes d accès à SQL Server et sur le mode intégré, reportez-vous au chapitre 6. Le mode intégré offre l intérêt de l ouverture de session unique et d alléger le code. En effet, on n a pas besoin de définir le nom d accès et le mot de passe, car le nom d utilisateur est récupéré automatiquement depuis Windows et comparé à la table des noms d accès SQL Server. On se sert de l option Trusted Connection dans la chaîne de connexion et on ne passe ni le nom d utilisateur ni le mot de passe : <% cn.connectionstring = "Trusted Connection=true;" & _ "Data Source=GODZILLA;Initial Catalog=Pubs;" cn.open%> Accéder aux données On dispose d une connexion ouverte, il faut maintenant accéder aux données d une ou plusieurs tables. Pour ce faire, un seul objet : le Recordset. Toute lecture des données se fait au travers d un recordset. Les enregistrements lus peuvent ensuite être envoyés vers l explorateur à l aide de scripts serveurs ou de l objet Response. Ouvrir et fermer un recordset L ouverture d un recordset est une opération relativement simple. On peut créer un recordset à l aide d une commande Transact-SQL, un nom de table, un nom de vue ou une procédure stockée. <% Set cn = Session("cnsession") Set rs = Server.CreateObject("ADODB.Recordset") Set rs.activeconnection=cn rs.open "Authors" %> Dans cet exemple, la source du recordset est la table Authors de la base Pubs. La base a été définie dans la connexion utilisée (cn). Remarquez que la variable cn n a pas été définie : en effet, il n est pas nécessaire de définir les varia-

606 Développer une application SQL Server PARTIE IV bles en ASP, sauf quand il s agit de variables globales communes à plusieurs procédures ou pages. Ici, le système découvre automatiquement s il s agit d une requête ou d un nom d objet. Avec les commandes, il est possible de les lui préciser afin de contrôler plus finement l exécution du code, puis d ouvrir un jeu d enregistrements sur la commande ainsi créée : <% Set rs = Server.CreateObject("ADODB.Recordset") Set co = Server.CreateObject("ADODB.Command") co.commandtype = adcmdtable co.commandtext = "Authors" Set co.activeconnection = Session("cnsession") rs.open co %> De cette manière, on ouvre un recordset situé sur le serveur de données en lecture seule et à défilement vers l avant, c est-à-dire que le pointeur d enregistrement ne peut se déplacer que vers l avant. Il existe quatre types de recordset : statique, dynamique, à jeu de clés et à défilement vers l avant. On choisit le type de recordset utilisé de manière à minimiser la charge des serveurs : inutile donc de mettre en œuvre des fonctionnalités dont on ne se servira pas! Voir le chapitre précédent pour plus de détails sur les types de curseurs (Recordset). Important Toutes les constantes définies dans le chapitre précédent sont utilisables si l on inclut le fichier ADOVBS.INC ou ADOJAVAS.INC dans la page avec une directive #include. Affichage des enregistrements Quand le recordset est ouvert sur la bonne source de données, le pointeur se trouve sur le premier enregistrement. Pour envoyer les données à l explorateur, il y a deux méthodes : l imbrication de code au milieu de balises HTML ; l utilisation de la méthode Response.Write. Dans les deux cas, il faut faire référence aux champs du recordset. Deux syntaxes sont possibles : rs("nom_champ") rs.fields(indice_champ).value

Développement d applications clientes Internet et intranet CHAPITRE XI 607 La première est beaucoup plus simple et présente l avantage que le nom de champ peut être passé en variable. La seconde est à réserver aux boucles ; elle se révèle parfois fort pratique pour l écriture de procédures génériques. Voici comment renvoyer dans l explorateur, à l aide des deux méthodes évoquées précédemment, tous les champs de tous les enregistrements de la table ouverte dans le recordset : <TABLE CELLPADDING=3 BORDER=0 COLSPAN=8> <TR> <%For i = 0 To rs.fields.count-1%> <TD CLASS=header><STRONG> <%= rs.fields(i).name%> </STRONG></TD> <%Next%> </TR> <%Do While Not rs.eof Response.Write "<TR>" For i = 0 to rs.fields.count-1 Response.Write "<TD>" Response.Write rs.fields(i).value Response.Write "</TD>" NEXT Response.Write "</TR>" rs.movenext LOOP %> </TABLE> Les deux lignes en gras affichent les noms et les valeurs des champs. Dans le premier cas, la valeur à afficher est introduite par <%=. Dans le second, Response.Write se comporte comme s il s agissait d une ligne de texte à afficher. Ici on utilise la collection Fields pour réaliser la boucle parmi toutes les colonnes. Déplacement et recherche Les méthodes de déplacement et de recherche dans un recordset sont les méthodes couramment utilisées vues au chapitre précédent. Cependant, il nous faut revenir sur une méthode particulière de transmission d informations d une page à l autre à l aide des hyperliens. En effet, le principe même du web est de circuler d une page à l autre via des hyperliens. Nous pouvons tirer parti de cette fonctionnalité et nous servir de ces liens comme paramètres de requêtes ou de procédures stockées. Par exemple, le code ci-dessous crée un hyperlien par identifiant d auteur : <A HREF="titre.asp?AuthorID=<%=rs("au_id")%>"></A>

608 Développer une application SQL Server PARTIE IV Chaque au_id affiché par rs("au_id") est transformé en hyperlien de la forme titre.asp?authorid=au_id. C est-à-dire que lorsque l utilisateur clique sur l hyperlien, la page titre.asp est ouverte et que la «variable» AuthorID lui est passée avec pour valeur l identifiant de l auteur. Dans la page titre.asp, on interroge l objet Request, pour en extraire la valeur de la variable : auid = Request.Querystring("AuthorID"). qui peut alors être utilisée comme paramètre d une procédure stockée ou d une requête, comme nous le verrons un peu plus loin dans ce chapitre. Mettre à jour les données La mise à jour de données sur SQL Server à partir d ADO se fait de deux façons : au travers d un Recordset ouvert ; directement par une requête ou une procédure stockée. Le résultat est en tous points identique, ainsi que les fonctionnalités offertes : il est possible de mettre à jour, insérer ou supprimer des données dans n importe quelle table, à partir du moment où l on dispose des droits nécessaires. Mettre à jour, insérer, supprimer des enregistrements avec un recordset Pour mettre à jour un enregistrement accessible au travers d un recordset, trois conditions doivent être remplies : le recordset autorise les mises à jour (il n est donc pas ouvert en lecture seule) ; le pointeur est positionné sur l enregistrement à mettre à jour ; on a le droit de mettre à jour l enregistrement concerné. Il s agit ici d une démarche identique à celle que nous avons rencontré dans le chapitre précédent. De même, les modes de verrouillage et d ouverture des recordsets sont identiques. Cependant, pour pouvoir procéder à une mise à jour, il faut que l utilisateur ait pu saisir des informations. Pour ce faire, on utilise les contrôles HTML INPUT (figure 11 9). Le code permettant d afficher les champs dans les zones de texte et dans la case à cocher est le suivant :