Passer au contenu

ColdFusion s’inspire de la simplicité d’HTML

Environnement de développement destiné à des serveurs Web de pages dynamiques, ColdFusion doit sa force à sa simplicité (apparente), grâce à une syntaxe proche d’HTML. Cette boîte à outils devrait rassurer une frange de développeurs que rebute la complexité des langages procéduraux (type C) ou objets (Java et C++).

Parmi les boîtes à outils qui permettent de développer des applications pour serveurs Web avec génération dynamique de pages HTML, ColdFusion, d’Allaire (racheté par Macromedia l’an passé), occupe une place à part. Contrairement à ASP (un langage script basé sur des objets), de Microsoft, CFML, le langage interprété de ColdFusion, s’appuie sur des balises, au même titre que HTML ou XML.

CFML fait tout ce que ne peut pas faire HTML

Dans sa formulation, CFML ressemble à HTML, à la grande différence qu’il donne la possibilité de faire tout ce que ne peut pas faire HTML, à savoir accéder directement à des bases de données ou gérer des applications, des transactions et des sessions. On peut le considérer comme un compromis entre un langage de balises HTML ou XML et un langage traditionnel, dans la mesure où il comporte aussi près de deux cents fonctions utilisables directement dans le code CFML.La famille ColdFusion comprend un serveur d’applications, qui s’installe sur la même machine que le serveur Web HTTP, un atelier de développement (ColdFusion Studio), le langage CFML, ainsi qu’une extension script CFML très proche de JavaScript.ColdFusion fonctionne sur les plates-formes Intel sous NT, Unix (Sparc sous Solaris et HP-UX) et Red Hat Linux. Théoriquement, ColdFusion est capable de gérer des applications volumineuses, en phase avec ce que peut délivrer NT.Le principe de ColdFusion est le même que celui de PHP ou d’ASP. Quand un internaute appelle une page écrite en CFML et dotée d’une extension CFM, cette page est prise en charge par le serveur d’applications ColdFusion. Celui-ci interprète tout ce qui le concerne, à savoir les balises commençant par CF, et exécute les appels aux Custom tags (terme propre à ColdFusion), des balises écrites par les utilisateurs eux-mêmes pour enrichir la bibliothèque standard et résoudre des problèmes spécifiques non traités. Le serveur d’applications exécute également les appels aux CFX, des objets externes COM ou Corba. Une fois ce travail terminé, il génère une page contenant le code HTML, le résultat des divers traitements effectués par les balises standards, les Custom tags ou les CFX, ainsi que les accès aux bases de données, par exemple, qu’il retourne au client. Ce dernier ne voit donc jamais le code source CFML et se trouve dans la même situation que lors de l’appel d’une page ASP ou PHP. ColdFusion est bien, de ce point de vue, un langage serveur, une sorte de HTML évolué exécutable sur ce serveur.Une application ColdFusion est un ensemble de programmes CFML (extension CFM) dans lesquels cohabitent des balises spécifiques ColdFusion, toutes préfixées CF, et des balises traditionnelles HTML. Ces programmes sont généralement placés dans des sous-répertoires spécifiques, comme c’est le cas pour n’importe quel code HTML, à la différence près qu’ils ont tous besoin de se référer à un ou plusieurs fichiers, dits application.cfm, dans lesquels sont décrits les fonctions et les paramètres applicables au niveau global de l’application : nom de l’application ; options de gestion de l’état client ; moyen de stockage des variables clients (registre, répertoire ou cookie) ; variables clients proprement dites (disponibles depuis n’importe quelle page CFML pour ce client précis) ; et, surtout, variables session et application, qui permettent au développeur d’imaginer de véritables applications transactionnelles.Ces variables session et application, qui se déclarent dans le fichier application.cfm, sont dotées d’un préfixe selon leur étendue (session.variable ou application.variable), et restent stockées dans la mémoire vive du serveur ColdFusion pour des questions de performances.Elles sont essentielles puisque ce sont elles qui, par exemple, vont conserver l’identifiant et le mot de passe d’un utilisateur, ou les données à faire passer d’une partie à l’autre de l’application. La différence entre ces variables tient à ce que la session ne concerne qu’un seul utilisateur, schématiquement depuis le moment où il entre dans l’application et celui où il la quitte, alors que l’application est le chapeau global qui s’applique à tous les usagers, du lancement de l’application à sa fermeture.Il peut n’y avoir qu’une seule application.cfm pour l’ensemble de l’application, ou un seul fichier par sous-répertoire ; chaque page ColdFusion, dès qu’elle est appelée, allant chercher le fichier application.cfm le plus proche, quitte à remonter jusqu’à la racine, afin d’ajouter son code au sien propre.Outre ces aspects session et application, le fichier application.cfm permet de définir un traitement personnalisé des erreurs (des pages prédéfinies, par exemple) et un mécanisme de verrous pour garantir l’exclusivité d’emploi de certaines ressources à un utilisateur donné.ColdFusion, on l’a vu, est un compromis entre un langage procédural classique de type PHP ou C++ et un langage de balise tel que HTML. Il comporte, en effet, de nombreuses balises – soixante-dix, qu’il faut assimiler avant de se lancer dans un développement – permettant de réaliser ce que l’on fait habituellement avec des fonctions ou des classes.Ces balises sont des outils qui donnent la possibilité d’organiser fonctionnellement les applications. Elles interviennent peu sur les données et variables, si ce n’est pour en tester l’existence ou en ordonnancer le traitement. ColdFusion dispose, pour cela, de deux cents fonctions, qui agissent directement sur ces données et variables.

Fonctions de manipulation de formatage et de sécurité

On trouve une trentaine de fonctions de manipulation de chaînes de caractères. Ainsi en est-il de Find (qui recherche une occurrence de chaîne dans une chaîne cible) ; des fonctions de date et d’heure permettant non seulement de manipuler ces variables, mais aussi de les formater, comme dans #DateFormat(Now(), DD/MM/YY)#, qui affiche la date du jour sous la forme jour/mois/année ; des fonctions de mise en forme des données, comme dans #NumberFormat(variable_numerique, +9999.99)#, qui affiche la variable avec le signe en premier, suivi d’un nombre décimal de quatre chiffres et de deux chiffres après la virgule (cela rappelle le Cobol) ; et, bien entendu, d’une multitude de fonctions mathématiques. En plus de fonctions d’internationalisation très utiles, ColdFusion propose des fonctions de manipulation de listes, de tableaux, de requêtes et de structures (des types de données spéciaux qui contiennent une ou plusieurs autres variables).ColdFusion, enfin, propose des fonctions de sécurité, qui permettent d’accéder aux informations de sécurité retournées par la balise ; des fonctions purement systèmes, pour arriver aux répertoires du système, aux chemins et aux fichiers temporaires ; des fonctions de manipulation des variables clients ; et des fonctions d’évaluation d’expressions et de manipulation d’octets, en particulier des masques binaires.

Pas d’équivalent au Do…While

Un langage ne pouvant pas se concevoir sans instructions de contrôle, ColdFusion dispose de trois balises qui permettent d’effectuer des traitements sous condition : , et . La première est l’équivalent du Case traditionnel, la deuxième permet de tester une condition, et la troisième rend possible l’exécution d’une boucle. Il n’y a pas d’équivalent au Do…While, mais les programmeurs ColdFusion s’en passeront sans problème.Au final, on constate qu’un code source ColdFusion est un mélange de balises ColdFusion, de balises HTML ” traditionnelles “, et d’expressions plus ou moins complexes, dans lesquelles interviennent des fonctions.ColdFusion comporte deux possibilités d’extension : les Custom tags, ou balises personnalisées, et les CFX. Les Custom tags sont des scripts écrits en CFML, que l’on appelle ensuite dans d’autres programmes CFML, comme s’il s’agissait d’une balise standard. Ces Custom tags, qui se présentent tous de la même manière, avec un préfixe CF_ suivi du nom de la balise, prennent en entrée une liste renseignée de paramètres, qu’il faut leur transmettre pour exécution : . Ce ne sont ni plus ni moins que des fonctions, si ce n’est qu’elles s’intègrent sous la forme d’une balise HTML. La seule contrainte est qu’il faut au préalable avoir récupéré ou écrit les Custom tags en question, et les avoir placés dans un répertoire Custom tags, lui-même situé dans un répertoire CFUSION, tous les deux ayant été créés lors de l’installation.Les CFX nécessitent un peu plus de technicité. Ce sont des programmes écrits en C, C++, Java, JavaScript ou VBScript, conformes aux spécifications COM, de Microsoft, ou de Corba, compilés ou interprétables, qui s’intègrent, eux aussi, comme s’il s’agissait d’une balise standard. Les sites Web consacrés à ColdFusion regorgent de produits prêts à l’emploi.Il n’y a pas de règle absolue pour savoir si une extension doit être écrite sous la forme de Custom tags ou de CFX. C’est une simple question de compétence – certains développeurs se sentant plus à l’aise en C ou C++ -, de nature et de complexité du problème à traiter. En effet, CFML ne dispose pas des mêmes ressources de ” fabrication ” qu’un langage structuré et procédural tel que C ou C++. Il est évident qu’un code compilé sera beaucoup plus rapide à exécuter qu’un code interprété, mais un développeur ne connaissant pas ces langages ne sera pas pour autant condamné aux Custom tags et aux balises standards.

Une ” modularisation du code CFML “

L’insertion des Custom tags et de CFX a pour effet de ” modulariser ” le code CFML, avec obligation, pour le développeur, d’organiser logiquement son application en prévision de l’apport de programmes externes. Mais ColdFusion contribue par lui-même à cette modularité. Il dispose d’une balise , qui permet d’insérer, à l’endroit même où elle est écrite, un code réutilisable, écrit ou non par le même développeur : .Si l’application est importante, le chef de projet devra commencer par construire un schéma bloc précis et exhaustif, avec description de l’enchaînement exact des programmes, qu’il pourra ensuite découper de manière à favoriser la meilleure réutilisation possible de ses éléments constitutifs. De ce point de vue, ColdFusion n’a rien à envier aux autres langages. Bien que très marqué balise, il ne sera pas ridicule pour élaborer de grosses applications… à condition d’en exploiter au mieux les multiples subtilités.L’une des balises les plus utilisées est , qui autorise l’accès à une base de données en insérant, entre les balises de début et de fin, des instructions SQL de sélection, d’insertion et de mise à jour. Son grand intérêt est sa capacité de retourner une sélection, sur laquelle il est ensuite possible d’agir, un peu comme le fait un curseur SQL. Une autre originalité de ColdFusion est qu’il possède une balise permettant d’accéder directement à des procédures cataloguées SQL : , dont les paramètres sont au minimum le nom de la procédure cataloguée et la source de données (comme pour CFQUERY).Il n’est plus d’application Internet solide sans un annuaire LDAP en arrière-plan. ColdFusion propose une balise très puissante, qui rend possible l’interaction, sans faire appel à des CFX pour cela.

Une balise. , pour lire et manipuler un fichier

Il est rare qu’une application n’ait pas, à un moment donné, le besoin de lire un fichier Ascii, par exemple, pour le modifier avant d’envoyer tout ou partie de son contenu dans un autre fichier texte ou une base de données. Les autres langages passent par des fonctions pour traiter ce problème, ColdFusion, lui, se contente d’ajouter une balise. permet de lire le fichier, dont il transfère le contenu dans une variable, de manière à le manipuler sans contrainte. On peut aussi écrire un fichier texte (ACTION=write) en créant un nouveau fichier ou en réécrivant un fichier existant (annule et remplace), voire ajouter des éléments sans effacer les autres : ACTION=append. Il est également possible de le renommer, de le déplacer, de le copier, de l’effacer et, surtout, d’ajouter un contenu externe provenant d’un autre fichier (ACTION=upload).ColdFusion comporte une balise , qui lui permet de s’interfacer directement avec un serveur de messagerie, et d’actionner un mécanisme d’envoi et de réception de messages. Normalement, il faut passer par des outils externes. possède un grand nombre d’attributs dont l’objet est d’organiser ces envois : FROM et TO (émetteur et destinataire), SERVER (pour l’identité du serveur SMTP de messagerie), CC (pour les copies conformes), MAXROWS (pour limiter le nombre de messages à envoyer), SUBJECT (pour préciser le sujet du message) et, surtout, QUERY, pour détailler une requête dont le résultat record set (ensemble des enregistrements sélectionnés et isolés, en quelque sorte, pour traitement) servira de base à l’envoi des messages. À vrai dire, c’est surtout cette fonctionnalité qui est utilisée, le servant à sélectionner une base de données d’adresses, et le étant là pour exécuter les envois. ColdFusion s’intéresse même à l’exploitation machine via une balise d’ordonnancement et de lancement de travaux, qui vient en complément, voire en surnombre, des fonctions disponibles dans l’administration. La balise permet de planifier une tâche à exécuter à une date et à une heure données ; de la lancer à intervalles réguliers, en précisant où se trouve la tâche en question et où il faut mettre les fichiers résultats ; et de fixer une limite maximale de temps d’exécution de la tâche, pour ne pas bloquer le système en cas de problème. Trois actions sont prévues : DELETE, UPDATE et RUN. Cette fonction vient, bien sûr, en complément de tout ce que l’on peut faire avec un bon SGBD, SQL Server, Oracle ou Informix, en termes de procédures cataloguées, de curseurs, de déclencheurs et d’agents d’exploitation programmés, exécutables, eux aussi, à des dates et à des heures précises, agents qui font partie intégrante du SGBD.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Claude Marson