Différence entre CGI et Servlet

CGI vs Servlet

CGI (Common Gateway Interface) est la toute première tentative visant à fournir un contenu dynamique aux utilisateurs. Il permet aux utilisateurs d'exécuter un programme situé sur le serveur pour traiter des données et même accéder à des bases de données afin de produire le contenu pertinent. S'agissant de programmes, ils sont écrits dans le système d'exploitation natif, puis stockés dans un répertoire spécifique. Un servlet est une implémentation de Java qui vise à fournir le même service que CGI, mais au lieu des programmes compilés dans le système d'exploitation natif, il est compilé 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 quand même compiler dans le bytecode Java..

Le premier avantage des servlets par rapport à CGI réside dans l'indépendance de la plate-forme. Les servlets peuvent fonctionner sur n'importe quel système d'exploitation tant qu'une machine 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, le changement de système d'exploitation est un processus difficile et laborieux, car vous auriez besoin de recompiler les programmes dans le nouveau système d'exploitation..

Comme vous exécutez des programmes indépendants dans CGI, ils créent leur propre processus lorsqu'ils sont exécutés, ce qui ne se produit pas avec les servlets car ils partagent simplement l'espace mémoire de la machine virtuelle. Cela peut entraîner des problèmes liés aux frais généraux, notamment 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 pas contrôlé de quelque manière que ce soit 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 d'utiliser des scripts. Cela réduit le temps nécessaire à la création de programmes et est généralement plus sécurisé. Avec CGI, vous pouvez exécuter des scripts immédiatement, alors que les servlets, vous devez les traduire en Java et les compiler dans une servlet, ce qui ajoute un peu au temps de chargement..

Résumé:
Les 1.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 sur le système d'exploitation natif, ils peuvent également être compilés en bytecode Java qui est ensuite exécuté sur une machine virtuelle Java
Les programmes 2.CGI dépendent de la plate-forme tandis que les servlets sont indépendants de la plate-forme
Les programmes 3.CGI s'exécutent en tant que processus distincts sur l'ordinateur, tandis que les servlets s'exécutent sur la machine virtuelle Java
4.CGI peut être plus vulnérable aux attaques que les servlets
5.CGI peut traiter directement les scripts alors qu'il a besoin d'être traduit et compilé avant de pouvoir être exécuté en tant que servlet.