Différence entre CGI et Servlet La différence entre
CGI (Common Gateway Interface) est la toute première tentative de fournir du contenu dynamique aux utilisateurs. Il permet aux utilisateurs d'exécuter un programme qui réside dans le serveur pour traiter les données et même accéder aux bases de données afin de produire le contenu pertinent. Comme ce sont des programmes, ils sont écrits dans le système d'exploitation natif, puis stockés dans un répertoire spécifique. Une servlet est une implémentation de Java qui vise à fournir le même service que CGI, mais au lieu de programmes compilés dans le système d'exploitation natif, elle compile dans le bytecode Java qui est ensuite exécuté dans la machine virtuelle Java. Bien que les programmes Java puissent être compilés dans le code natif, ils préfèrent toujours compiler dans le bytecode Java.
Le premier avantage des servlets sur CGI réside dans l'indépendance de sa plate-forme. Les servlets peuvent fonctionner sur n'importe quel système d'exploitation aussi longtemps qu'une JVM est installée, ce qui signifie que vous ne rencontrerez aucun problème même si vous choisissez de changer de système d'exploitation. Avec CGI, la commutation du système d'exploitation est un processus difficile et laborieux, car vous devrez recompiler les programmes dans le nouveau système d'exploitation.
Comme vous exécutez des programmes indépendants en CGI, ils créent leur propre processus lorsqu'ils sont exécutés, ce qui n'est pas le cas avec les servlets car ils partagent simplement l'espace mémoire de la JVM. Cela peut entraîner des problèmes liés aux frais généraux, en particulier lorsque vous augmentez le nombre d'utilisateurs de manière exponentielle. Cela crée également des problèmes de vulnérabilité car le programme n'est contrôlé d'aucune façon une fois qu'il est exécuté sur le serveur.
Plus tard, la méthode la plus courante lors de l'utilisation de CGI est via les scripts. Cela réduit le temps nécessaire à la création de programmes et est généralement plus sûr. Avec CGI, vous pouvez exécuter des scripts tout de suite, alors que les servlets, vous devez traduire le script en Java et le compiler dans une servlet qui ajoute un peu au temps de chargement.
Résumé:
1. Les CGI sont généralement des exécutables natifs du système d'exploitation du serveur, bien que les servlets puissent également être compilés avec le système d'exploitation natif. Ils peuvent être compilés en bytecode Java qui est ensuite exécuté sur une JVM
2. Les programmes CGI dépendent de la plate-forme, tandis que les servlets sont indépendants de la plate-forme
3. Les programmes CGI s'exécutent en tant que processus distincts sur l'ordinateur pendant que les servlets s'exécutent sur la machine JVM
4. CGI peut être plus vulnérable aux attaques que les servlets
5. CGI peut directement traiter les scripts pendant qu'ils doivent être traduits et compilés avant de pouvoir être exécuté en tant que servlet