Dans les chapitres précédents, nous avons complété une discussion générale sur les programmes CGI. Ici, je donne un programme de démonstration simple comme résumé du contenu précédent.
Pour utiliser ce programme, vous avez besoin de la dernière version bêta d'OmniHTTPD : OmniHTTPD 2.0b1 (bêta 1) pour Windows 95/NT. Si vous ne l'avez pas, vous pouvez le télécharger ici (oh20b1.zip).
La méthode d'installation d'OmniHTTPD est la même que dans le premier cours, je n'y reviendrai donc pas ici. Je vais juste parler de quelques problèmes de configuration dans cette version ici :
Ouvrez la boîte de dialogue des paramètres de propriété OmniHTTPD, utilisez le bouton Paramètres globaux du serveur Web, accédez à la page Externe et supprimez les paramètres .cgi. Lorsqu'ils ne sont pas supprimés, les programmes CGI avec l'extension cgi sont traités comme des programmes Perl ; dans notre cours, l'extension du programme CGI en langage Perl est .pl, et l'extension du programme CGI compilé est donc .cgi. les paramètres doivent être modifiés comme ceci.
Dans cette version d'OmniHTTPD, la prise en charge des commandes SSI (Server Side Include) est considérablement améliorée par rapport aux versions précédentes, et des commandes telles que include et exec sont prises en charge. Dans le programme de démonstration, j'ai utilisé ces commandes.
Une fois téléchargé (ex8.zip), il contient trois fichiers : index.shtml, makelog.cpp et makelog.exe. index.shtml est un script contenant des commandes SSI, veuillez le copier dans le répertoire c:httpdhtdocs ; makelog.exe est un programme CGI, veuillez le copier dans le répertoire c:httpdcgi-bin ; exe, si Si vous souhaitez modifier la compilation, vous devez utiliser un compilateur 32 bits, tel que VC, sinon il ne pourra pas être utilisé.
De plus, vous devez modifier les paramètres dans OmniHTTPD : sélectionnez Paramètres virtuels par défaut et remplacez l'index par défaut par index.shtml sur la page Serveur. De cette façon, lorsque vous tapez http://localhost dans le navigateur, OmniHTTPD charge automatiquement index.shtml.
Créez un autre document WEB et enregistrez-le dans le répertoire c:httpdhtdocs sous le nom de fichier index.html. Lorsque vous utilisez un navigateur pour accéder à localhost, index.shtml appelle d'abord makelog.exe pour stocker les informations d'accès de l'utilisateur, puis appelle index.html pour les afficher dans le navigateur. Les informations d'accès de l'utilisateur sont stockées dans le fichier userlog dans le répertoire c:httpdcgi-bin.
Cet exemple utilise les variables d'environnement de base et la technologie SSI dans la spécification CGI. Veuillez l'étudier attentivement.
4. Base de données
Parmi les applications CGI, les applications de bases de données reflètent le mieux les puissantes fonctions des programmes CGI. Il existe de nombreuses bases de données sur Internet, et la demande d'applications WEB de ces bases de données augmente également (qu'elle vienne des entreprises ou des utilisateurs). On peut dire que le WEB lui-même est une énorme base de données. Comment organiser efficacement ces énormes collections de données et les publier sur le WEB est un sujet que CGI et les systèmes de bases de données résolvent conjointement.
Si vous souhaitez classer les applications CGI et de base de données, il existe différentes méthodes de classification selon différentes perspectives. Par exemple, selon la taille de la base de données, elle peut être divisée en base de données texte, base de données locale (Microsoft Access, etc.) et serveur de base de données (MS SQL Server, Informix, etc.) en fonction du contenu de traitement CGI ; peut être divisé en programmes CGI de base de données front-end (avec les utilisateurs utilisant des programmes CGI interactifs) et programmes CGI de base de données back-end (programmes CGI qui interagissent avec la base de données), etc. Le choix de la taille de la base de données dépend généralement du volume de données et du coût des tâches que vous souhaitez effectuer ; le fait de séparer ou de combiner le front-end et le back-end lors de la programmation de programmes CGI dépend généralement de la complexité de votre traitement de données.
En règle générale, si votre ensemble de données fait quelques mégaoctets et qu'il n'existe pas de relations complexes entre vos enregistrements de données, vous pouvez choisir d'utiliser un fichier texte pour créer la base de données, ce qui permet de maintenir le coût au minimum, et le fichier texte a une base de données Avantages que le système de gestion (SGBD, à savoir DataBase Management System) n'a pas : Si une erreur se produit dans vos données, vous pouvez transférer votre fichier texte dans n'importe quel éditeur de texte pour la récupération, et si une erreur se produit dans votre système de base de données, Sauf si vous êtes un expert en bases de données, Sinon, ce sera difficile à réparer.
Si votre collection de données est très volumineuse ou si vos enregistrements de données entretiennent des relations complexes entre eux, il est préférable d'utiliser un système de base de données. L'utilisation de fichiers texte pour implémenter une base de données de plusieurs dizaines de mégaoctets submergerait tout serveur RISC avancé. Si vous utilisez un programme CGI pour gérer des relations complexes entre les données, cela augmentera inévitablement la complexité du programme CGI et occupera trop de ressources du serveur, d'autre part, l'utilisation des fonctions du système de base de données peut simplifier la difficulté de conception du programme CGI ; et améliorer l’efficacité du développement.
Lors du choix d'un système de base de données, vous devez choisir parmi les aspects suivants : 1. Plate-forme du système d'exploitation : vous devez choisir le système de base de données que vous connaissez le mieux, et vous devez également choisir la plate-forme du système d'exploitation que vous connaissez le mieux. de cette façon, vous pouvez éviter les erreurs. 2. Prix : Vous devez choisir le moins cher parmi les différents systèmes de base de données qui peuvent compléter votre travail. Ici, je peux vous parler d'un système de base de données gratuit appelé MiniSQL. Il doit fonctionner sur une plate-forme UNIX ou Linux. il existe un système de base de données gratuit pour la plate-forme Windows. Si quelqu'un le sait, dites-le-moi et je vous le dirai dans les prochains cours.
Notre cours porte sur l'utilisation de Delphi pour développer des programmes CGI, et Delphi fournit le système de base de données Interbase Server. Par conséquent, je parlerai principalement ici du développement de programmes CGI à l'aide du système de base de données. Dans le même temps, étant donné que le système de base de données réduit beaucoup de travail de codage, j'ai combiné le CGI frontal et le CGI back-end en un seul pour compléter le traitement des entrées utilisateur et les opérations de base de données dans un seul programme CGI. Mais sur d'autres plates-formes système, cette méthode ne peut pas être utilisée. Les lecteurs sont invités à prendre leurs propres décisions sur la base de la discussion précédente.
Ici, je voudrais expliquer plusieurs CGI différents et leurs différences dans leur utilisation dans notre OmniHTTPD :
CGI standard : le CGI standard doit être placé dans le répertoire défini par /cgi-bin/ et peut être modifié à tout moment lors de l'exécution d'OmniHTTPD.
Win CGI : CGI appliqué dans les systèmes Windows doit être placé dans le répertoire défini par /cgi-win/. Ce CGI utilise un fichier INI pour obtenir les requêtes du navigateur client, plutôt que d'utiliser des variables d'environnement ou une entrée standard. Nous n'utilisons généralement pas ce type de CGI.
ISAPI : Une spécification CGI utilisant des bibliothèques de liens dynamiques proposées par Microsoft.
NSAPI : Une spécification CGI utilisant des bibliothèques de liens dynamiques proposées par Netscape.
Chacune de ces spécifications CGI a ses propres caractéristiques : le CGI standard peut être écrit à l'aide de programmes exécutables ou de langages de script tels que Perl, mais il est inefficace et consomme beaucoup de ressources. Chaque requête CGI aura une instance du programme CGI. exécuté sur le serveur. Win CGI a les mêmes fonctionnalités que Stardand CGI. ISAPI et NSAPI sont très efficaces et résident en mémoire, et quel que soit le nombre de requêtes CGI, il n'y a qu'une seule instance exécutée sur le serveur. Seul l'ensemble de données correspondant à cette instance est différent, mais ce type de CGI n'est pas simple. à déboguer car il doit être sur le serveur WEB Les mises à jour ne sont disponibles que lorsque le logiciel est fermé.
Dans la prochaine conférence, je donnerai un programme de démonstration pour White Page. La page blanche est une liste d'adresses e-mail. Vous pouvez permettre aux utilisateurs d'interroger, de modifier, d'ajouter et de supprimer cette liste via un navigateur WEB. Dans cette conférence, le programme de démonstration que j'ai donné n'est qu'une opération de requête, et d'autres opérations seront décrites dans les cours ultérieurs.
Ce programme de démonstration est construit sur la base de données Borland Interbase Server et développé en Delphi. Lors du développement, j'ai choisi Standard CGI car il est plus facile à déboguer.
Notre programme est écrit en utilisant Stardand CGI, qui peut être facilement débogué. Une fois le débogage réussi, il peut être facilement modifié en ISAPI/NSAPI dans Delphi avec une seule instruction (que diriez-vous, Delphi est très bon !).