Le
développement d'application orientée web
L’irruption
massive du web a des conséquences non négligeables sur le monde
de la conception et du développement. La programmation web est une réelle
compétence spécifique mêlant des langages de présentation
et des langages de programmation et ceci dans des architectures logicielles souvent
complexes. Cet article présente quelques solutions utilisées pour
la mise en oeuvre des applications accessibles sur le web.
Un
site web présente des pages dont tous les éléments
sont statiques[1] et proviennent directement,
et sans traitement, de fichiers chargés à partir d’un site distant.
Le langage utilisé pour décrire le contenu et la présentation
de ces pages est le langage HTML[2]. Ces pages
peuvent aussi contenir différents morceaux de programmes appelés
scripts qui en améliorent globalement l’ergonomie et le contrôle
(menus déroulants, saisie de donnée contrôlée). Le
succès de ces sites ont amené les éditeurs à proposer
différents produits permettant de construire les pages web sans
l’intervention d’un développeur (c’est-à-dire des éditeurs
de pages capables de produire du code HTML). C’est le cas des logiciels FrontPage
et Dreamweaver par exemple. Ces sites sont en général le résultat
d’un travail effectué par un graphiste qui met en œuvre ses compétences
artistiques tout en respectant une charte et des règles d’ergonomie. Ainsi
des milliers de sites ont été créés sans aucune compétence
de développement particulière.
Une page
est dite « statique » quand son contenu est fixé une fois pour
toute au moment de sa création et, pour modifier son contenu, il faut modifier
le fichier qui correspond à la page.
Une page est dite
« dynamique » quand elle est produite « à la volée
» au moment où l’internaute demande à la visualiser. Une page
dynamique contient un programme qui s’exécute sur le serveur et qui produit
le contenu de la page en puisant par exemple dans des données situées
dans une base de données.
L’application web[3]
Une application web offre par contre des services
qui dépassent la simple visualisation d’informations figées. L’application
est souvent reliée à une base de données, les fonctionnalités
offertes sont plus importantes : recherches, formulaires de saisie… Les mises
à jour des informations n’influencent pas le code des pages mais seulement
la base de données.
Pour mettre en œuvre cette architecture,
des compétences de développement sont cette fois-ci indispensables.
Le développement d’une application web nécessite
l’écriture de programmes qui s’exécutent sur le serveur web
(celui-là même qui est sollicité par l’internaute lorsqu’il
fait une demande de page au travers de son adresse ou URL[4]).
Ces
programmes ont pour objectif de produire dynamiquement des pages HTML, et de traiter
les informations issues de formulaires remplis pas l’internaute.
Plusieurs
solutions existent, pouvant d’ailleurs être menées de front :
- Le lien (URL) pointe sur un programme exécutable (processus)
écrit dans un langage compilé (en général C) ; ce
programme traite directement les informations issues du formulaire (par exemple
il les enregistre dans une base de données et retourne à l’internaute
une page de confirmation). Cette solution est la plus ancienne, elle souffre de
lenteur dans le cas de sollicitations très nombreuses car le programme
exécuté mobilise à chaque fois des ressources importantes
sur le serveur.
- Le lien pointe sur une page qui contient des
instructions écrites dans un langage de scripts interprété
comme PHP[5] ou ASP[6].
Ces instructions ont pour objectif de construire des pages en HTML qui seront
retournées. Cette fois, la page pointée par l’internaute doit faire
appel à un programme intermédiaire (interpréteur d’instructions
PHP ou ASP) qui va en convertir le contenu. La solution utilisant le langage PHP
– issu du monde du logiciel libre – est de loin la plus utilisée. De très
nombreuses applications y font appel grâce notamment à sa simplicité
de mise en œuvre. Le fonctionnement simplifié dans le cas du langage PHP
est présenté ici :

- La dernière solution met en œuvre des architectures
plus complexes, l’une proposée par Sun et utilisant le langage Java : J2EE
et l’autre proposée plus récemment par Microsoft : .NET (voir article
dans le numéro 16). Cette solution propose de diviser toute application
web en couches logicielles classées par fonctionnalités
: une couche de présentation – ce que voit l’internaute – assurée
par des scripts qui s’exécutent côté client (voir solution
précédente), une couche applicative assurant l’essentiel des traitements
côté serveur, une troisième couche qui assure la cohérence
entre les deux premières. Ces modèles appelés framework[7]
utilisent pleinement la programmation objet ; ils mobilisent des compétences
importantes en termes de conception et développement, dues à une
certaine complexité de mise en œuvre.
Enfin, les
applications web doivent être conçues de manière à
préserver la cohabitation de deux métiers, celui du développeur
et celui du web designer. L’organisation même des pages doit permettre
au graphiste d’intervenir sans altérer le code de l’application « logique
».
Cependant, ces solutions abritent également
des préoccupations de sécurité et d’organisation des traitements.
Ce sont les « dessous » des applications web.
La face cachée des applications
Toute application web
suppose des contrôles de sécurité et un modèle de répartition
des traitements.
Le souci de la sécurité
prend une acuité toute particulière dans l’environnement web.
Les concepteurs doivent surveiller les failles potentielles dans les trois zones
à risques :
- la partie client en évitant
des téléchargements de programmes non authentifiés,
- le
réseau en cryptant les informations sensibles qui circulent,
- le
serveur en sécurisant l’accès aux pages (mot de passe, sécurité
d’accès des répertoires du serveur), en identifiant et authentifiant
les différentes sessions en cours.
Les modèles
d’application web, comme toute architecture client-serveur, doivent envisager
les types de répartition des traitements. À cet effet, une classification
a été proposée sous forme de patterns[8]
d’architecture[9] :
- le
client léger ne nécessite la présence que
d’un navigateur web standard, toute la logique métier est assurée
par le serveur. Des contrôles - de cohérence, de saisies - peuvent
être traités sur la partie cliente à partir de scripts embarqués
dans la page envoyée. Cette solution est très souvent utilisée
dans des sites de « e-commerce » ou de réservations en ligne
du fait de la très grande hétérogénéité
des configurations clientes. La priorité est donnée à la
fiabilité des échanges au détriment de la rapidité
et de la sophistication de l’interface.
- le client
lourd permet à une partie significative de la logique métier
d’être exécutée sur le poste client par l’intermédiaire
par exemple d’applets[10] java. Cette solution
est adaptée à des publics ciblés ou des intranets, du fait
de la garantie de l’environnement logiciel du client (version et configuration
du navigateur).
- La livraison web
ressemble à une architecture client-serveur faisant communiquer des objets
distribués et résidants sur les machines serveur et client. Cette
solution est adaptée aux intranets ou à la mise en œuvre de services
web (voir article dans le numéro 16). L’architecture logicielle
utilise les frameworks J2EE ou .NET.
Quelles que soient
les solutions adoptées, des compétences de plus en plus complexes
sont sollicitées, aussi bien au niveau de la conception que de la mise
en œuvre du framework utilisé en fonction du choix de pattern
architectural.
Pour en savoir plus :
http://www.phpfrance.com/
http://asp.developpez.com/
Mots-clés :
Application
web, ASP, client léger, client lourd, client serveur, PHP, script, site
web
[1]
Grâce au DHTML, au javascript et autres il est possible de multiplier les
animations sur les pages web. Il ne s’agit toujours pas de pages dynamiques, mais
elles ne sont plus non plus intégralement statiques.
[2]
Langage qui décrit sous forme de balises la manière dont les informations
sont visualisées dans le navigateur
[3]
Également appelée « site web dynamique », à opposer
aux sites web proprement dit.
[4] URL =
Uniform Resource Locator. Adresse d’une ressource Internet, exemple : http://unepage.html
(Adresse réticulaire, en Français).
[5]
À l’origine Personal Home Page, langage créé en 1994 par
Rasmus Lerdoft et inséré dans le code HTML permettant de créer
des pages dynamiques.
[6] Langage de script
développé par Microsoft offrant des fonctionnalités comparables
à PHP.
[7] En programmation orientée
objet, désigne l'infrastructure logicielle qui facilite la conception des
applications par l'utilisation de bibliothèques de classes.
[8]
Terme utilisé pour décrire une réponse éprouvée
à un problème récurrent. Synonyme : patron.
[9]
Voir le livre de Jim Conallen : Concevoir des applications web avec UML, Editions
Eyrolles.
[10] Petit programme compilé
en java et dont la durée de vie sur le poste client est liée à
une session. (Appliquette, en Français).